lnwshop logo
  • ตอบกระทู้
  • ตั้งกระทู้ใหม่
QUOTE 

สอบถามหน่อยครับ

marapiam
marapiam
IP: 203.158.179.x
1 ปีที่ผ่านมา

คือไม่ค่อยมีความรู้ด้านการเขียน ต้องการจะให้พอกดปุ่ม 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);

      }

}

QUOTE 
ความคิดเห็นที่ #1
เจ้าของร้าน
เจ้าของร้าน
1 ปีที่ผ่านมา

ไม่ยากครับ แนะนำทำเป็น 2 ส่วนแยกแล้วเอามารวมกัน

1. การแสดงผลตัวแปรออกจอ lcd อันนี้ผมดูจากโคดเหมือนจะทำได้แล้ว

2. การทำสวิตช์กดเพิ่มค่าตัวเลข ตามตัวอย่างก็พอใช้ได้ แต่จะมีปัญหา debounce ถ้าแบบง่าย ๆ ก็ใส่คำสั่ง delay(200); หลัง statebuttonDW = digitalRead(SW_DW);

ส่วนวิธีแก้ debounce ลองดูตามโคดนี้ครับ 

  • https://www.arduino.cc/en/Tutorial/Debounce
  • https://www.youtube.com/watch?v=jYOYgU2vlSE
QUOTE 
ความคิดเห็นที่ #2
marapiam
marapiam
IP: 203.158.179.x
1 ปีที่ผ่านมา

ขอบคุณครับ ในส่วนการแก้ debounce ตามโค้ดเลยใช่มั้ยครับ

ถ้าใส่แค่ delay(200); ก็ได้ใช่มั้ยครับ เห็นโค้ดในเว็บต่างๆเลยลองเอามาเพิ่มมั่วๆเอา 

QUOTE 
ความคิดเห็นที่ #3
เจ้าของร้าน
เจ้าของร้าน
1 ปีที่ผ่านมา

ใช่ครับ ถ้าโปรแกรมไม่ซับซ้อนใส่แค่ delay ก็ได้

ข้อเสียของคำสั่ง delay คือจะทำให้โปรแกรมทุกส่วนหยุดทำงาน

หรือจะแก้ทาง hardware ก็ทำได้โดยต่อ C 0.1uF คร่อมที่สวิตช์ครับ

QUOTE 
ความคิดเห็นที่ #4
marapiam
marapiam
IP: 223.24.77.x
1 ปีที่ผ่านมา

ขอบคุณมากครับ ขอถามอีกเรื่อง 

คือต้องการให้ แสดงเป็นทศนิยมแค่หนึ่งหลัก เปลี่ยน num เป็น float แล้ว

ตอนที่มันแสดงผล lcd.print(num); จะให้เป็นทศนิยมแค่หนึ่งหลักต้องเขียนยังไงครับ

QUOTE 
ความคิดเห็นที่ #5
เจ้าของร้าน
เจ้าของร้าน
1 ปีที่ผ่านมา

lcd.print จะแสดงข้อมูลได้เฉพาะตัวเลขจำนวนเต็ม หรือตัวอักษร string ครับ

ถ้าเป็นทศนิยมต้องแปลงเป็น string ก่อน

ถึงจะแสดงผลออก lcd ได้ครับ เช่น lcd.print("12.53");

https://www.arduino.cc/en/Reference/LiquidCrystalPrint

QUOTE 
ความคิดเห็นที่ #6
marapiam
marapiam
IP: 223.24.88.x
1 ปีที่ผ่านมา

ขอบคุณครับ

QUOTE 
ความคิดเห็นที่ #7
เจ้าของร้าน
เจ้าของร้าน
1 ปีที่ผ่านมา

ยินดีครับ 

1
แสดงความคิดเห็นที่ 1-7 จากทั้งหมด 7 ความคิดเห็น
ข้อความ
ชื่อผู้โพส
ข้อมูลสำหรับการติดต่อกลับ (ไม่เปิดเผย เห็นเฉพาะเจ้าของร้าน)
อีเมล
เบอร์มือถือ
  • ตอบกระทู้

หมวดหมู่สินค้า

สมาชิก Arduino All

เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)

Arduino All ขายดี

รหัสสินค้า A015
275.00 บาท
  • สั่งซื้อ
รหัสสินค้า A233
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A115
10.00 บาท
  • สั่งซื้อ
รหัสสินค้า A238
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A237
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A014
90.00 บาท
  • สั่งซื้อ
รหัสสินค้า A097
4.00 บาท
  • สั่งซื้อ
รหัสสินค้า A474
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า A225
5.00 บาท
  • สั่งซื้อ
Go to Top