步驟1:連接LCD屏幕
首先,我們將連接LCD顯示。
LCD屏幕使用Arduino上的6個引腳板。首先,將LCD顯示屏的兩個外部引腳以及引腳5都接地。接下來,將引腳2和倒數(shù)第二個引腳連接到5V。
下一步,使用以下映射連接這些引腳:
LCD 4 =》 Arduino 7
LCD 6 =》 Arduino 8
LCD 11 =》 Arduino 9
LCD 12 =》 Arduino 10
LCD 13 =》 Arduino 11
LCD 14 =》 Arduino 12
就是LCD顯示器了!
步驟2:連接電位計
下一步使用基本電位器。電位器的中間引腳連接到LCD顯示屏上的引腳3。電位器的左側(cè)引腳為5V,而右側(cè)引腳接地。
在此之后,又有一塊硬件,然后我們繼續(xù)進(jìn)行代碼操作。
第3步:添加按鈕
現(xiàn)在已經(jīng)連接了帶有電位計的LCD顯示屏,我們需要一個按鈕來引起硬件中斷。將Arduino上的引腳2連接到按鈕的一側(cè),使另一側(cè)的電路繼續(xù)接地。在與地面相同的一側(cè),將另一個引腳連接到5V。
這完成了硬件設(shè)置。
步驟4:實(shí)現(xiàn)代碼
我已經(jīng)上載了用于該項目的代碼,因此您可以根據(jù)需要為您的電路板或您要執(zhí)行的操作對其進(jìn)行修改。
關(guān)于在Arduino Uno上實(shí)現(xiàn)硬件中斷的注意事項是您必須使用引腳2或3,因?yàn)檫@是唯一可用于中斷的引腳。除此之外,如果需要,可以更改其他大多數(shù)引腳。
另一個警告是,為了使這種類型的設(shè)置正常工作,您需要使用millis()方法來實(shí)現(xiàn)延遲,因?yàn)樗诤笈_工作,所以不同于delay()方法,該方法暫停CPU并實(shí)際上使用CPU周期,即使它看起來處于靜止?fàn)顟B(tài)也是如此。 millis()使用Arduino的內(nèi)置硬件計時器之一完成工作,因此它在后臺運(yùn)行,并且在主循環(huán)期間不會停止CPU。
下面是代碼:
#include
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
const int buttonPin = 2; // Button pin
volatile bool buttonPressed = false; // Gauge if the button is pressed
int wait = 500; // ms to wait between messages
int messageWait = 3000; // ms to display an interrupt message
unsigned long current = 0; // Holds current timestamp
void setup()
{
Serial.begin(9600); // For debugging, remove if you want
pinMode( buttonPin, INPUT_PULLUP ); // Setup for hardware interrupt
// [interrupt, method used, when to call]
attachInterrupt( digitalPinToInterrupt( buttonPin ), showMessage, RISING );
lcd.begin(16, 2); // set up the LCD‘s number of columns and rows:
lcd.print(“Timer:”); // Print on the top line
current = millis(); // Set up the current time
} // setup
void loop()
{
if( buttonPressed )
{
delay( 3000 ); // Put this in the main loop to stop
// the message from being erased
buttonPressed = false; // After the delay, continue the loop
lcd.setCursor(0, 1); // Set the cursor to char 0 on line 1
lcd.print( “ ” ); // Clear the display
}
else if( millis() 》 current + wait )
{
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1); // Set the cursor to char 0 on line 1
lcd.print( (String) ( millis() / (float) 1000 ) ); // Output sec passed
current = millis(); // Set current time
} // if.。.else if
} // loop
void showMessage()
{
String message = “Intrpt: ” + (String) millis();
lcd.setCursor(0, 1); // Set the cursor to char 0 on line 1
lcd.print( “Intrpt: ” + (String) ( millis() / (float) 1000 ) ); // Output interrupt
buttonPressed = true; // Indicate button was pressed.
// Handle the button press in
// the main loop.
Serial.println(“=================================”); // debug
Serial.println( message ); // debug
} // showMessage
現(xiàn)在您可以使用中斷了,做點(diǎn)很酷的事情!
-
lcd
+關(guān)注
關(guān)注
34文章
4437瀏覽量
167967 -
中斷
+關(guān)注
關(guān)注
5文章
900瀏覽量
41599
發(fā)布評論請先 登錄
相關(guān)推薦
評論