ความรู้แน่น ฟรีสำหรับชุมชน ArduinoAll ที่นี่เท่านั้น

ฟรีและดีที่สุด คอร์สอบรม Arduino + NodeMCU
ทำเพื่อแบ่งปัน ห้ามนำไปจำหน่าย หรือเก็บเงินค่าเรียน
  !!!


  


AllNewStep รับประกันคุณภาพทุกชิ้น วันจันทร์-ศุกร์แจ้งชำระสินค้าก่อน 14.00 จัดส่งทันทีวันนี้ค่ะ

กรุงเทพ /ภาคกลาง ได้พรุ่งนี้


*** สินค้าทุกชิ้น ถ้าสามารถทำรายการสั่งซื้อได้ แสดงว่ามีครบทุกรายการค่ะ *** 

พิมพ์ค้นหาบทความ หัวข้อกระทู้ และสินค้าในเว็บ AllNewStep ได้ที่นี่
QUOTE 

ผมต้องการทราบโค้ท ที่จะเขียนโปรแกรมรับค่าจากสวิตซ์ ให้กลับไปยังก่อนหน้าที่จะเข้าโหมดเลือกทำงาน

Ashira Shop

 คือผมอยากสร้างปุ่ม digitalRead(sw3) เพื่อ เวลาเข้าโหมดไปแล้วจะมีปุ่มกด digitalRead(sw3) เพื่อกลับไปยังหน้าโหมดเลือกทำงานได้อะครับ คือผมทำยังไงก็ไม่สำเร็จช่วยหน่อยนะครับ
อันล่างเป็นโค้ทที่ผมเขียน ประมาณนี้

String state = "OFF";    // ตั้งค่าเริ่มต้นทั้งหมด

int sw = 1;

void loop() 

{

lcd.clear();

lcd.print("Select A Mode");

Serial.println("Select a mode through buttons");

delay(1500);

while(digitalRead(sw1) == LOW)  // กดปุ่มจะเข้าสู่โหมดทำงาน

{

if(digitalRead(sw2) == HIGH) //กดปุ่มจะเลือกโหมดถัดไป

{

delay(500);

count++;    // จำนวนครั้งที่ปุ่มกด

if(sw >= 12){ sw = 1;}

}

lcd.clear();

lcd.print("  Mode:  ");

lcd.print(sw);

delay(100);

}

switch(sw) // Enter the mode according to the number selected earlier

{

 case 1:  // Toggle mode

  

lcd.clear();

lcd.print("  Toggle mode  ");

delay(1500);

  {

    delay(1000);

    Serial.println("Toggle mode selected");

    Serial.println("Press the button to switch the outlet on/off");

    int a8 = 0;

    while(a8 == 0)

    {

    lcd.clear();

      lcd.print("Curr. State: ");

    lcd.print(state);

    lcd.setCursor(0,1);

    lcd.print("Press Button");

    if(digitalRead(10) == HIGH && state3 == 0) // เมื่อกดขะสั่งให้ on

   {

    digitalWrite(13, HIGH);

    state = "ON";

    state3++;

    Serial.println("Switched on");

    delay(1000);

   }

   if(digitalRead(10) == HIGH && state3 == 1) // เมื่อกดขะสั่งให้ off

   {

     digitalWrite(13, LOW);

     state = "OFF";

     state3--;

     Serial.println("Switched off");

     delay(1000);

   }

    delay(100);

  }

  }

  break;

case 2: 
break;
case 3: 
break;

อันผมเอามาแบบคราวๆประมาณนี้ จะขอบคุณมากๆถ้าช่วยผม

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

โคดยังมีปัญหาหลายจุด แนะนำให้เขียนแยกเฉพาะส่วนของสวิตช์ เอาโคดของ lcd ออกก่อน

คำสั่ง delay จะมีปัญหาทำให้กดปุ่มเร็ว ๆ ไม่ได้ จึงอาจดูเหมือนกดปุ่มแล้วไม่ทำงาน แต่ถ้าไม่ใส่ปุ่มกดสวิตช์จะมีปัญหาเรื่อง Debounce ทำให้กดไปแล้วเหมือนกดหลายครั้งทั้งที่กดแค่ครั้งเดียว 

วิธีแก้ง่าย ๆ คือใช้ C ค่า 0.1 uf คร่อมสวิตช์ปุ่มกด

อีกวิธีคือ เขียนโปรแกรมแก้ตามนี้ครับ

https://www.arduino.cc/en/Tutorial/Debounce

หรือใช้ไลบารีสำหรับแก้ปัญหานี้โคดก็จะง่ายขึ้น

https://github.com/JChristensen/Button

 

 

 

QUOTE 
ความคิดเห็นที่ #2
Ashira Shop

ขอบคุณมากครับ

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

ยินดีครับ : )

QUOTE 
ความคิดเห็นที่ #4
Ashira Shop

ขอตอนนี้ผมแก้ปัญหาสวิตซ์กดได้แล้ว แต่ผมยังไม่สารถสร้างปุ่มเพิ่มขึ้นมาอีกปุ่มเพื่อทำการออกจากโหมดที่เข้าไว้อะครับ ขอบคุณเป็นอย่างสูงครับ

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

ลองดูครับ เล่นเยอะ ๆ ก็จะทำได้ : )

QUOTE 
ความคิดเห็นที่ #6
Ashira Shop

ครับผม

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

Laughing

แสดงความคิดเห็นที่ 1-7 จากทั้งหมด 7 ความคิดเห็น
ขาย ARDUINO
คุณภาพ อันดับ 1

ได้รับรางวัลร้านยอดเยี่ยม
ตั้งแต่ปี 2558
ขาย Arduino
วีดีโอสอน Arduino

สอน esp8266

สอน Arduino IoT
สอน Arduino แบบเร็ว

สอน NodeMCU

อุปกรณ์ Arduino

MEMBER ZONE

พูดคุย-สอบถาม