主控芯片arduino 外接三個濕敏傳感器 顯示屏LCD1602 1000ms倒計時,倒計時內濕敏電阻觸發即報警。1000ms用于打吊瓶等類似倒計時操作。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
Arduino源程序如下:
- #include <SoftwareSerial.h>
- #include <LiquidCrystal.h> //申明1602液晶的函數庫
- #include <MsTimer2.h> //定時器庫的 頭文件
- LiquidCrystal lcd(12,11,10,9,8,7,6,5,4,3,2); //申明1602液晶的11個引腳所連接的Arduino數字端口
- int testa = A0; //測試引腳
- int led=A4; //有水就亮
- int a=0;
- int b=0;
- int c=0;
- int vala=0;
- int lll=A5; //外接繼電器IN腳
- SoftwareSerial BT(A2, A3);
- void flash() //中斷處理函數
- {
- a++;
- lcd.setCursor(15,2);
- lcd.print(a%10);
- lcd.setCursor(14,2);
- lcd.print(a/10);
- if(a>=60)
- {
- a=0;
- b++;
- lcd.setCursor(12,2);
- lcd.print(b%10);
- lcd.setCursor(11,2);
- lcd.print(b/10);
- if(b>=60)
- {
- b=0;
- c++;
- lcd.setCursor(9,2);
- lcd.print(c%10);
- lcd.setCursor(8,2);
- lcd.print(c/10);
- }
- }
- }
- void setup()
- {
- pinMode(led, OUTPUT);//定義小燈接口為輸出接口
- pinMode(lll, OUTPUT);
- pinMode(testa, INPUT);
- BT.begin(9600);//設置波特率為9600
- lcd.begin(16,2); //初始化1602液晶工作模式,定義1602液晶顯示范圍為2行16列字符
- MsTimer2::set(1000, flash); // 中斷設置函數,每 1000ms 進入一次中斷
- MsTimer2::start(); //開始計時
- lcd.setCursor(9,2);
- lcd.print("0:00:00");
- }
- void loop()
- {
- vala=digitalRead(testa);//讀取傳感器的值并賦值給val
- if(vala==1)
- {
- digitalWrite(led, HIGH); //亮
- digitalWrite(lll, HIGH); //亮
- delay(1000);
- BT.println("Help!!!!!");
- lcd.setCursor(5,0);
- lcd.print("Help!!!!!");
- }
- else {
- digitalWrite(led,LOW); //滅
- digitalWrite(lll,LOW); //滅
- delay(1000);
- lcd.setCursor(5,0);
- lcd.print("no!!!!!");
- }
- }
復制代碼
0.png (8.66 KB, 下載次數: 49)
下載附件
2019-8-15 16:54 上傳
全部資料51hei下載地址:
sketch_apr11a.rar
(62.09 KB, 下載次數: 38)
2019-8-15 11:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|