【Arduino綜合項目】改造飲水機

背景說明:辦公室的飲水機壞了鸽照,剛好最近在玩Arduino,就想用Arduino來改造一下颠悬,廢物利用矮燎,于是就有了這個項目。直接上圖看成果:

正面

背面

側面

實現功能

1.在按鍵1為on的狀態(tài)下赔癌,杯子放在壓力傳感器上即可出水诞外;
2.按下按鍵2即可出水,再按一下便關閉灾票;
3.側面的lcd顯示屏可以記錄喝水次數峡谊,按下按鍵3可將次數清零。

物料清單

  • 飲水機 *1(壞的铝条。靖苇。沒壞你想改造我也沒話說)
  • Arduino Uno *1
  • 按鈕 *3
  • LED燈 *3
  • FSR402力敏電阻器(壓力傳感器) *1
  • LCD 1602顯示屏(帶轉接板) *1
  • 小型水泵 *1
  • 繼電器 *1
  • 導線、跳線若干
  • 熱縮管若干
  • 電烙鐵班缰、熱風槍贤壁、十字螺絲刀、鉆孔器等
    附上部分元件圖
    小型水泵

    按鈕

    LCD顯示屏

    LED燈

元件接線

  • FSR402力敏電阻器和Arduino
FSR402 Arduino
+ -> 5v
- 10kOhm GND
同上 -> A0
  • 繼電器和Arduino
繼電器 Arduino
IN -> 8
VCC -> 5V
GND -> GND
  • 繼電器和小型水泵
    小型水泵的電源線剝開可以看到正負兩條線埠忘,正極從中間剪斷脾拆,負極不要動,正極(從電源過來的一端)接常開端莹妒,正極(接小型水泵的一端)接公共端名船,如下圖所示。


    小型水泵與繼電器接線示意圖
  • 按鈕和Arduino
    (按鈕兩端都是一樣的)

按鈕1 Arduino
一端 -> 5v
另一端 10kOhm電阻 GND
同上 -> 2
按鈕2 Arduino
一端 -> 5v
另一端 10kOhm電阻 GND
同上 -> 3
按鈕3 Arduino
一端 -> 5v
另一端 10kOhm電阻 GND
同上 -> 4
  • LED和Arduino
LED1 Arduino
正極 -> 5
負極 -> GND
LED2 Arduino
正極 -> 6
負極 -> GND
LED3 Arduino
正極 -> 7
負極 -> GND
  • LCD和Arduino
LCD Arduino
GND -> GND
VCC -> 5V
SDA -> A4
SCL -> A5

源程序

#include <SCoop.h>
#include <Wire.h> 
#include <LCD.h> 
#include <LiquidCrystal_I2C.h> 
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7); 

int Button1 = 2;
int Button2 = 3;
int Button3 = 4;
int Led1 = 5;
int Led2 = 6;
int Led3 = 7;
int sensorPin = A0;
int value;
void button1Function();
void button2Function();
void button3Function();
boolean switchFlag = LOW;
boolean waterFlag = LOW;
int times = 0;

defineTask(Task1) 
void Task1::setup() { 

}
void Task1::loop() { 
    button1Function();
}

defineTask(Task2) 
void Task2::setup() { 

}
void Task2::loop() { 
    button2Function();
}

defineTaskLoop(Task3) { 
  button3Function();
} 


void setup() {
  mySCoop.start(); 
  lcd.begin (16,2); // for 16 x 2 LCD module 
  lcd.setBacklightPin(3,POSITIVE); 
  lcd.setBacklight(HIGH); 
  pinMode(Button1,INPUT);
  pinMode(Button2,INPUT); 
  pinMode(Button3,INPUT); 
  pinMode(Led1,OUTPUT); 
  pinMode(Led2,OUTPUT); 
  pinMode(Led3,OUTPUT); 
  pinMode(sensorPin,INPUT);
  pinMode(8,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int a1,a2,a3;
  yield();  //本函數必須放在主線的loop循環(huán)體中 
  
  a1 = analogRead(sensorPin);
  a2 = analogRead(sensorPin);
  a3 = analogRead(sensorPin);
  value = (a1+a2+a3)/3;
    Serial.println(value);
  if(value > 15 && switchFlag == HIGH){
    digitalWrite(8,LOW);
    times++;
    delay(2000);
    digitalWrite(8,HIGH);
  }else
    digitalWrite(8,HIGH);
  if(waterFlag == HIGH){
     digitalWrite(8,LOW);
  }else
    digitalWrite(8,HIGH);

  lcd.home (); // set cursor to 0,0 
  lcd.print("Drink Water Times"); 
  lcd.setCursor (6,1); // go to start of 2nd line 
  lcd.print(times);  
  lcd.setCursor (12,1); // go to start of 2nd line 
  lcd.print("CUPS");
  
}

void button1Function(){
  if(digitalRead(Button1)==LOW)  //由于本例檢測上升沿觸發(fā)旨怠,所以先檢測輸入是否低電平渠驼,
  {
    delay(10); //然后延時一段時間,
    if(digitalRead(Button1)==HIGH) //然后檢測是不是電平變?yōu)楦吡思濉J堑脑捗陨龋褪莿偤冒粹o按下了。
    { 
      switchFlag = !switchFlag;
      Serial.println(switchFlag);
      digitalWrite(Led1,switchFlag);
      delay(10);  //延時一段時間爽哎,防止按鈕突然斷開再按下蜓席。
      while(digitalRead(Button1)==HIGH) //判斷按鈕狀態(tài),如果仍然按下的話课锌,等待松開厨内。防止一直按住導致LED輸出端連續(xù)反轉
      {
        delay(1);
      }
    }
  }
}

void button2Function(){
  if(digitalRead(Button2)==LOW)  //由于本例檢測上升沿觸發(fā),所以先檢測輸入是否低電平,
  {
    delay(10); //然后延時一段時間雏胃,
    if(digitalRead(Button2)==HIGH) //然后檢測是不是電平變?yōu)楦吡饲朊J堑脑挘褪莿偤冒粹o按下了瞭亮。
    { 
      waterFlag = !waterFlag;
      Serial.println(waterFlag);
      digitalWrite(Led2,waterFlag);
      if(waterFlag == HIGH)
        times++;
      delay(10);  //延時一段時間获印,防止按鈕突然斷開再按下。
      while(digitalRead(Button2)==HIGH) //判斷按鈕狀態(tài)街州,如果仍然按下的話,等待松開玻孟。防止一直按住導致LED輸出端連續(xù)反轉
      {
        delay(1);
      }
    }
  }
}

void button3Function(){
  if(digitalRead(Button3)==LOW)  //由于本例檢測上升沿觸發(fā)唆缴,所以先檢測輸入是否低電平,
  {
    delay(10); //然后延時一段時間黍翎,
    if(digitalRead(Button3)==HIGH) //然后檢測是不是電平變?yōu)楦吡嗣婊铡J堑脑挘褪莿偤冒粹o按下了匣掸。
    { 
      times = 0;
      delay(10);  //延時一段時間趟紊,防止按鈕突然斷開再按下。
      while(digitalRead(Button3)==HIGH) //判斷按鈕狀態(tài)碰酝,如果仍然按下的話霎匈,等待松開。防止一直按住導致LED輸出端連續(xù)反轉
      {
        delay(1);
      }
    }
  }
}

寫在最后

1.壓力感應模塊在加入小型水泵后送爸,讀出的值就會不穩(wěn)定铛嘱,建議采取各種濾波。
2.項目完整實現下來袭厂,存在一個問題墨吓,就是會漏水,就是水泵停止泵水后水龍頭還會滴水纹磺,目前還在想解決方案帖烘。
3.過程寫得有點粗略,如果你在實現的過程遇到任何問題橄杨,或者有更好的建議秘症,隨時歡迎溝通交流,共同進步哈~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末讥珍,一起剝皮案震驚了整個濱河市历极,隨后出現的幾起案子,更是在濱河造成了極大的恐慌衷佃,老刑警劉巖趟卸,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡锄列,警方通過查閱死者的電腦和手機图云,發(fā)現死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邻邮,“玉大人竣况,你說我怎么就攤上這事⊥惭希” “怎么了丹泉?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸭蛙。 經常有香客問我摹恨,道長,這世上最難降的妖魔是什么娶视? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任晒哄,我火速辦了婚禮,結果婚禮上肪获,老公的妹妹穿的比我還像新娘寝凌。我一直安慰自己,他們只是感情好孝赫,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布较木。 她就那樣靜靜地躺著,像睡著了一般寒锚。 火紅的嫁衣襯著肌膚如雪劫映。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天刹前,我揣著相機與錄音泳赋,去河邊找鬼。 笑死喇喉,一個胖子當著我的面吹牛祖今,可吹牛的內容都是我干的。 我是一名探鬼主播拣技,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼千诬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膏斤?” 一聲冷哼從身側響起徐绑,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莫辨,沒想到半個月后傲茄,有當地人在樹林里發(fā)現了一具尸體毅访,經...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年盘榨,在試婚紗的時候發(fā)現自己被綠了喻粹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡草巡,死狀恐怖守呜,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情山憨,我是刑警寧澤查乒,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站郁竟,受9級特大地震影響侣颂,放射性物質發(fā)生泄漏。R本人自食惡果不足惜枪孩,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藻肄。 院中可真熱鬧蔑舞,春花似錦、人聲如沸嘹屯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽州弟。三九已至钧栖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婆翔,已是汗流浹背拯杠。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留啃奴,地道東北人潭陪。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像最蕾,于是被迫代替她去往敵國和親依溯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內容

  • Arduino Due有14個數字I/O瘟则,6個模擬I/O黎炉,一個復位開關,一個ICSP下載口醋拧,7-12v電源供電慷嗜。 ...
    麥牛2013閱讀 3,335評論 0 8
  • 回家已有數日淀弹,贊鄉(xiāng)情未變之余,深憂陋習難改洪添。 君不見垦页,村中父老終年出入各大工地,一年一周期干奢,十載一循環(huán)痊焊;出外挨累受...
    不肯沉默的羔羊閱讀 220評論 0 2
  • 1 最近看了《親愛的客棻∩叮》里有這樣一個場景讓我很是印象深刻: 廚房漏水了闞清子二話...
    書卷女子閱讀 643評論 7 6
  • 既然活著,為什么不勇敢大膽地活著? 人生逛尚,從你降生的那一刻就注定要結束垄惧,一切的一切。害怕又有什么用绰寞。 因為害怕失敗...
    小林大為閱讀 94評論 0 0