คือไม่ค่อยมีความรู้ด้านการเขียน ต้องการจะให้พอกดปุ่ม button ที่เป็นกดติดปล่อยดับ แล้วเพิ่มค่าลดค่าตัวเลขแสดงผลที่จอ LCD ต้องเพิ่มหรือแก้อะไรตรงไหนมั้ยครับ
int buttonUP = 2;
int buttonDW = 3;
int num = 28;
int statebutton_UP = LOW;
int statebuton_DW = LOW;
void setup(void)
{
Serial.begin(9600);
sensors.begin();
pinMode(buttonUP, INPUT);
pinMode(buttonDW, INPUT);
lcd.begin (16,2);
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home ();
}
void loop(void)
{
statebuttonUP = digitalRead(SW_UP);
statebuttonDW = digitalRead(SW_DW);
if (statebutton_UP == HIGH) {
while(statebutton_UP == HIGH)
{
}
num = num +1;
}
if (statebutton_DW == HIGH) {
while(statebutton_DW == HIGH)
{
}
num = num -1;
}
lcd.print(num);
}
}
ไม่ยากครับ แนะนำทำเป็น 2 ส่วนแยกแล้วเอามารวมกัน
1. การแสดงผลตัวแปรออกจอ lcd อันนี้ผมดูจากโคดเหมือนจะทำได้แล้ว
2. การทำสวิตช์กดเพิ่มค่าตัวเลข ตามตัวอย่างก็พอใช้ได้ แต่จะมีปัญหา debounce ถ้าแบบง่าย ๆ ก็ใส่คำสั่ง delay(200); หลัง statebuttonDW = digitalRead(SW_DW);
ส่วนวิธีแก้ debounce ลองดูตามโคดนี้ครับ
ใช่ครับ ถ้าโปรแกรมไม่ซับซ้อนใส่แค่ delay ก็ได้
ข้อเสียของคำสั่ง delay คือจะทำให้โปรแกรมทุกส่วนหยุดทำงาน
หรือจะแก้ทาง hardware ก็ทำได้โดยต่อ C 0.1uF คร่อมที่สวิตช์ครับ
lcd.print จะแสดงข้อมูลได้เฉพาะตัวเลขจำนวนเต็ม หรือตัวอักษร string ครับ
ถ้าเป็นทศนิยมต้องแปลงเป็น string ก่อน
ถึงจะแสดงผลออก lcd ได้ครับ เช่น lcd.print("12.53");
https://www.arduino.cc/en/Reference/LiquidCrystalPrint