อยากให้ปุ่มกดได้แบบกำหนดเวลา

ถ้าอยากให้ปุ่ม ภายใน30วินั้น จะมีการแจ้งเตือนแค่ ครั้งเเรกที่กด หลังจากนั้นภายใน30วิต่อให้กดปุ่มกี่ครั้งก็จะไม่แจ้งเตือน แบบนี้ไปเรื่อยๆ ควรใช้เป็น countdown , timer ดีครับ แนะนำไกด์หรือตัวอย่างให้ทีงับตอนนี้ใช้เป็น delay ในการหน่วงเวลาการส่งให้ช้าเฉยๆครับ

ยังไม่ค่อยเข้าว่าทำงานยังไง กด ครั้งแรกมีการแจ้งเตือน 1 ครั้ง หรือให้นับเวลาทีนทีเลยไม่ต้องรอกดครั้งแรก เป็นช่วงๆ ช่วงละ 30 วิ

กดครั้งแรกเตือนเลย หลังจากนั้น30วิกดยังไงก็ไม่เตือนจนหมดจะ30วิครับ

จริงจริงก็ได้ทั้ง 2 แบบ แต่ส่วนตัวผมจะใช้ Countdown ดีกว่าหรือจะ up ก็ได้ เมื่อกด ครั้งแรก ก็ให้ ผ่าน if สัก 1 ครั้ง เปิด ตัวแปรการนับ เซตตัวแปร A ตั้งต้นเป็น false ร่วมกับ สถานะการกดปุ่ม โดยใช้ตัวดำเนินการเป็น && พอเข้าไปแล้วตัวแปร A = true พร้อมกับสั่งให้เริ่มนับ

มันก็ตะไม่เข้า loop นี้ จากนั้นเมื่อครบ 30 วิ ตัวแปร A = false แล้วรีเซตการนับเป็น 0

ประมาณนี้ไหมครับ พอดีผมมือใหม่ด้วยเพิ่งเริ่มเขียนโค้ด :sweat_smile:

int button = 7;
bool a = false;
int btn=0;
int count_d = 0;

void setup(){
  }
  void loop(){

 btn = digitalRead(button);
if (btn == 0 && a== true) {
  for(int i=0; i<30;i--){
    }
  }
 }

จริงๆ ถ้าจะใช้ for เพื่อนับ ก็ไม่จำเป็นต้องมี a = true ก็ได้ครับเพราะมันก็ไม่ออกไปไหนอยู่แล้วจนกว่าจะครบ 30 รอบ แต่ดูเรื่องเวลาดีๆ มันอาจจะเร็วกว่า 30 วิรึป่าว

ประเด็นถ้าเป็น for ผมกลัวว่ามันจะต้องเป็น low ทั้งหมด 30 ครั้งก่อนถึงจะออก อยากได้เป็น timeมานับถอยหลัง มากกว่า มี library ตัวไหนไหมครับ

อยู่ๆก็คิด logic บางอย่างได้คือ เซฟเวลาปัจจุบันเเล้วนับวิ เอาใช้ milli เเล้วจากนั้นหาตัวแปรมาเช็คว่าเป็น 30วิ จริงมั้ย ได้ผลยังไงผมจะมาอักเดทนะครับ

1 Likes

เยี่ยมครับ รอติดตามนะ