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

ทำได้ครับ ลองคิดตามนี้
เขียนโปรแกรมกำหนดสถานะของปุ่มกด = กด/ไม่กด
แล้ว เช็คทุกวินาทีว่ายังกดไว้อยู่ ถ้าครบ 3 ครั้งแสดงว่ากดค้างไว้ 3 วินาทีแล้ว หรือถ้าสถานะเปลียนก็ให้รีเซตตัวนับเวลา แสดงว่าปล่อยก่อน 3 วินาที
ตัวอย่างคร่าว ๆ คอมไพล์ไม่ผ่าน ให้เห็นภาพชัดเจนตามนี้
int button = 5;
int counter = 0;
void loop(){
if(digitalRead(button)==1){
counter++;
delay(1000);
if(counter==3){
// กดค้างไว้ครบ 3 วินาที
}
}else{
counter = 0;
// ปล่อยก่อนครบ 3 วินาที
}
}
สำหรับ การใช้งานจริง การเขียนโปรแกรม Arduino ควรหลีกเลี่ยงคำสั่ง delay เพราะโปรแกรมทั้งหมดจะหยุด แนะนำลองศึกษาการทำไฟกระพริบแบบไม่ใช้คำสั่ง delay ตามนี้ประกอบครับ
https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
ArduinoAll ขาย Arduino ซื้อ Arduino ทุกอย่าง เปลี่ยนชื่อเป็น AllNewStep