สอบถามการรับค่าจากสติตครับ

  • 10 Replies
  • 1375 Views
คือเงื่อนไงมีอยู่ว่า
มีinput 1ตัวoutput 3ตัว
1.กดสวิต 1ครั้งoutput 1 ทำงาน
2.กดสวิต2ครั้งout2ทำงาน
3.กดสวิต3ครั้วoutput3ทำงาน
Output1-2-3ไม่ทำงานพร้อมกันครับ

ที่ผมคิดไว้คือต้องจับเวลาในการกดครับ
เช่นรับค่าจากสวิตกี่ครั้งภายในกี่วิ
เช่นภายใน1วิกดสวิต2ครั้งoutput2ทำงานประมานนี้ครับ
แต่ตอนนี้ไม่รู้จะเขียนโปรแกรมยังไงครับ

กำหนดไว้ยังอ่ะ ว่ากด 1 2 3 ครั้งเนี่ย  มันต้อง 1 2 3  ในกี่วิ

ยังครับ อยากรู้ว่าใช้คำสั่งยังไงก่อนอ่ะครับ ส่วนนั้นมันน่าจะเปลี่ยนแปลงไม่ยากครับ

1เก็บค่าเวลา จาก millis
2เช็ดปุ่มถ้ากด บวกไป 1
3เช็ดเวลา ถ้าครบ นับจำนวนกด ถ้าไม่ครับ วนไป 2

ตอนนี้จับเวลาได้แล้วครับแต่ยังเขียนแบบว่าให้ครบเวลาแล้วเริ่มใหม่ครับ
แบบว่ายากให้มันทำงานทุกๆ2วิ ผมเขียน
Time = mills()

.
.
.

If (Time == 2000)
{
Time =0;
}

ผลมันไม่ยอมเท่ากับ0ครับมันยังคงนับต่อไปเรื่อยๆครับ

*

Offline az

  • ***
  • 169
    • View Profile
 อย่าลิมเรื่อง Debounce ของสวิตซ์นะครับ

กด 1 ครั้งแต่ output 2 ทำงานแทน  :o
เพราะแสวงหา..  มิใช่เพราะรอคอย
เพราะเชี่ยวชาญ..  มิใช่เพราะโอกาส
เพราะสามารถ..  มิใช่เพราะโชคช่วย
ดังนี้แล้ว "ลิขิตฟ้า  หรือจะสู้มานะตน..."

แล้วmillis() มีรีเซตไหมครับ

time = milis();

if((milis()-time) == 2000){
time = 0
}


แบบนี้ได้ป่าวว  ตรง ==  ให้ลองเปลียนเปน <= >=  เอาดูครับ