บอร์ด Arduino UNO R3
จอ LCD 16x2 แบบ I2C
ขา OUTPUT ใช้ขา 8-11 สามารถต่อออกไปควบคุม Relay ได้
BUTTON 1 ใช้สำหรับการเลือกควบคุมอุปกรณ์
BUTTON 2 ใช้สำหรับการสั่งงาน เปิด-ปิด อุปกรณ์
จอ LCD 16x2 แบบ I2C
ขา OUTPUT ใช้ขา 8-11 สามารถต่อออกไปควบคุม Relay ได้
BUTTON 1 ใช้สำหรับการเลือกควบคุมอุปกรณ์
BUTTON 2 ใช้สำหรับการสั่งงาน เปิด-ปิด อุปกรณ์
Code
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,16,2); int c = 15; int l,i,k,er1,er2,er3,er4; void setup() { pinMode(2,INPUT); pinMode(3,INPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); attachInterrupt(digitalPinToInterrupt(2), sc1, FALLING); attachInterrupt(digitalPinToInterrupt(3), sc2, FALLING); lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print(" Control Device "); lcd.setCursor(0,1); lcd.print(" By.AeHiwJang "); delay(3000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Device 1 OFF"); lcd.setCursor(0,1); lcd.print("Device 2 OFF"); lcd.setCursor(c,l); lcd.print("<"); } void loop() { sor(); mai(i); } void sc1(){ delay(500); l++; i++; if(l>1)l=1; if(i>3){ i=0; l=0;} } void sc2(){ delay(500); if(i==0) { if(er1==0) { er1=1; } else if(er1==1) { er1=0; } } else if(i==1){ if(er2==0) { er2=1; } else if(er2==1) { er2=0; } } else if(i==2){ if(er3==0) { er3=1; } else if(er3==1) { er3=0; } } else if(i==3){ if(er4==0) { er4=1; } else if(er4==1) { er4=0; } } } void sor(){ lcd.setCursor(c,l); lcd.print("<"); lcd.setCursor(c,l-1); lcd.print(" "); lcd.setCursor(c,l+1); lcd.print(" "); } void mai(int j){ switch (j) { case 0: if(er1==1 && er2 == 0) { lcd.setCursor(0,0); lcd.print("Device 1 ON "); lcd.setCursor(0,1); lcd.print("Device 2 OFF"); digitalWrite(8,HIGH); digitalWrite(9,LOW); } else if(er1==1 && er2 == 1) { lcd.setCursor(0,0); lcd.print("Device 1 ON "); lcd.setCursor(0,1); lcd.print("Device 2 ON "); digitalWrite(8,HIGH); digitalWrite(9,HIGH); } else if(er1==0 && er2 == 0) { lcd.setCursor(0,0); lcd.print("Device 1 OFF "); lcd.setCursor(0,1); lcd.print("Device 2 OFF "); digitalWrite(8,LOW); digitalWrite(9,LOW); } else if(er1==0 && er2 == 1) { lcd.setCursor(0,0); lcd.print("Device 1 OFF "); lcd.setCursor(0,1); lcd.print("Device 2 ON "); digitalWrite(8,LOW); digitalWrite(9,HIGH); } break; case 1: if(er1==1 && er2 == 0) { lcd.setCursor(0,0); lcd.print("Device 1 ON "); lcd.setCursor(0,1); lcd.print("Device 2 OFF"); digitalWrite(8,HIGH); digitalWrite(9,LOW); } else if(er1==1 && er2 == 1) { lcd.setCursor(0,0); lcd.print("Device 1 ON "); lcd.setCursor(0,1); lcd.print("Device 2 ON "); digitalWrite(8,HIGH); digitalWrite(9,HIGH); } else if(er1==0 && er2 == 0) { lcd.setCursor(0,0); lcd.print("Device 1 OFF "); lcd.setCursor(0,1); lcd.print("Device 2 OFF "); digitalWrite(8,LOW); digitalWrite(9,LOW); } else if(er1==0 && er2 == 1) { lcd.setCursor(0,0); lcd.print("Device 1 OFF "); lcd.setCursor(0,1); lcd.print("Device 2 ON "); digitalWrite(8,LOW); digitalWrite(9,HIGH); } break; case 2: if(er2==1 && er3 == 0) { lcd.setCursor(0,0); lcd.print("Device 2 ON "); lcd.setCursor(0,1); lcd.print("Device 3 OFF"); digitalWrite(9,HIGH); digitalWrite(10,LOW); } else if(er2==1 && er3 == 1) { lcd.setCursor(0,0); lcd.print("Device 2 ON "); lcd.setCursor(0,1); lcd.print("Device 3 ON "); digitalWrite(9,HIGH); digitalWrite(10,HIGH); } else if(er2==0 && er3 == 0) { lcd.setCursor(0,0); lcd.print("Device 2 OFF "); lcd.setCursor(0,1); lcd.print("Device 3 OFF "); digitalWrite(9,LOW); digitalWrite(10,LOW); } else if(er2==0 && er3 == 1) { lcd.setCursor(0,0); lcd.print("Device 2 OFF "); lcd.setCursor(0,1); lcd.print("Device 3 ON "); digitalWrite(9,LOW); digitalWrite(10,HIGH); } break; case 3: if(er3==1 && er4 == 0) { lcd.setCursor(0,0); lcd.print("Device 3 ON "); lcd.setCursor(0,1); lcd.print("Device 4 OFF"); digitalWrite(10,HIGH); digitalWrite(11,LOW); } else if(er3==1 && er4 == 1) { lcd.setCursor(0,0); lcd.print("Device 3 ON "); lcd.setCursor(0,1); lcd.print("Device 4 ON "); digitalWrite(10,HIGH); digitalWrite(11,HIGH); } else if(er3==0 && er4 == 0) { lcd.setCursor(0,0); lcd.print("Device 3 OFF "); lcd.setCursor(0,1); lcd.print("Device 4 OFF "); digitalWrite(10,LOW); digitalWrite(11,LOW); } else if(er3==0 && er4 == 1) { lcd.setCursor(0,0); lcd.print("Device 3 OFF "); lcd.setCursor(0,1); lcd.print("Device 4 ON "); digitalWrite(10,LOW); digitalWrite(11,HIGH); } break; } }
**สามารถนำไปต่อยอดเพิ่มขาควบคุมอุปกรณ์หลายๆอย่างได้
หรือเพิ่มฟังก์ชั่น EEPROM เพื่อใช้ในการจดจำคำสั่งงานอุปกรณ์ต่างๆ ในกรณีที่ไฟดับแล้วเปิดใหม่ เพื่อให้เครื่องสามารถทำงานในคำสั่งเดิมได้
**Code นี้ไม่มีฟังก์ชั่น Debounce การกดสวิตช์
หรือเพิ่มฟังก์ชั่น EEPROM เพื่อใช้ในการจดจำคำสั่งงานอุปกรณ์ต่างๆ ในกรณีที่ไฟดับแล้วเปิดใหม่ เพื่อให้เครื่องสามารถทำงานในคำสั่งเดิมได้
**Code นี้ไม่มีฟังก์ชั่น Debounce การกดสวิตช์
ไม่มีความคิดเห็น:
แสดงความคิดเห็น