Electoday 4.0

ไมโครคอนโทรลเลอร์ => AVR and Arduino => Topic started by: mikekk on September 16, 2016, 05:22:20 pm

Title: สอบถามการรับค่าจากสติตครับ
Post by: mikekk on September 16, 2016, 05:22:20 pm
คือเงื่อนไงมีอยู่ว่า
มีinput 1ตัวoutput 3ตัว
1.กดสวิต 1ครั้งoutput 1 ทำงาน
2.กดสวิต2ครั้งout2ทำงาน
3.กดสวิต3ครั้วoutput3ทำงาน
Output1-2-3ไม่ทำงานพร้อมกันครับ

ที่ผมคิดไว้คือต้องจับเวลาในการกดครับ
เช่นรับค่าจากสวิตกี่ครั้งภายในกี่วิ
เช่นภายใน1วิกดสวิต2ครั้งoutput2ทำงานประมานนี้ครับ
แต่ตอนนี้ไม่รู้จะเขียนโปรแกรมยังไงครับ
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: S.poolpong93 on September 16, 2016, 06:13:15 pm
กำหนดไว้ยังอ่ะ ว่ากด 1 2 3 ครั้งเนี่ย  มันต้อง 1 2 3  ในกี่วิ
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: mikekk on September 16, 2016, 06:42:15 pm
ยังครับ อยากรู้ว่าใช้คำสั่งยังไงก่อนอ่ะครับ ส่วนนั้นมันน่าจะเปลี่ยนแปลงไม่ยากครับ
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: S.poolpong93 on September 17, 2016, 02:57:36 am
1เก็บค่าเวลา จาก millis
2เช็ดปุ่มถ้ากด บวกไป 1
3เช็ดเวลา ถ้าครบ นับจำนวนกด ถ้าไม่ครับ วนไป 2
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: mikekk on September 17, 2016, 04:34:57 am
ตอนนี้จับเวลาได้แล้วครับแต่ยังเขียนแบบว่าให้ครบเวลาแล้วเริ่มใหม่ครับ
แบบว่ายากให้มันทำงานทุกๆ2วิ ผมเขียน
Time = mills()

.
.
.

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

ผลมันไม่ยอมเท่ากับ0ครับมันยังคงนับต่อไปเรื่อยๆครับ
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: az on September 17, 2016, 02:30:16 pm
 อย่าลิมเรื่อง Debounce ของสวิตซ์นะครับ

กด 1 ครั้งแต่ output 2 ทำงานแทน  :o
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: mikekk on September 17, 2016, 05:08:33 pm
แล้วmillis() มีรีเซตไหมครับ
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: S.poolpong93 on September 17, 2016, 05:42:16 pm
time = milis();

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


แบบนี้ได้ป่าวว  ตรง ==  ให้ลองเปลียนเปน <= >=  เอาดูครับ
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: mikekk on September 17, 2016, 06:36:31 pm
ไม่ได้ครับผม
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: mikekk on September 17, 2016, 08:31:55 pm
ได้ตามเงื่อนไขแล้วครับ
เปลี่ยนมาใช้ loop forในการนับแทนครับ
Title: Re: สอบถามการรับค่าจากสติตครับ
Post by: JENG on September 19, 2016, 07:56:29 am
ใช้การนับใน1วิครับ แต่มันจะมี จังหวะเวลาระหว่างการกดด้วยผมหน่วงไว้ 500ms ก่อนการทำงาน
ในการกดทุกๆครั้งจะ delay ไว้ 500ms เพื่อรอการกดครั้งถัดไปหากเกินเวลานี้ก็จะไปสั่งงาน relay
ตาม counter ที่รับได้จากการกด ผมจำได้คร่าวๆประมาณนี้ แนวคิดโปรแกรมนี้ได้มาจาก app ของ
power amp บน android ที่มีการกดสั่งงานผ่านปุ่มหูฟังเพียงปุ่มเดียว สามารดตั้งค่าเวลาหน่วง
ก่อนทำงานได้ด้วย ลองเอาแนวคิดไปปรับใช้ดู  :)

http://www.youtube.com/v/Ar-WbSZG3rk