กลับมาอีกครั้งแล้ว ยังไม่ได้เลือกว่าจะเอา สาวงามคนไหนส่งเข้าประกวด electoday contest v1 ทำไปเรื่อย ใจรัก
รอบนี้ หาอะไรทำคั่นเวลาก่อน หลังจากที่ผมกับ โปรเจค arduino ไปพักใหญ่ ส่วนมากจะเล่นว่าเล่น พวกจอ LCD กับ การ interface อุปกรณ์ต่างๆ ซึ่งส่วนมากจะเอาแสดงผล เฉยๆ ยังไม่ได้ ทำเกี่ยวกับ human interface เลยสักอัน
ความจริงในโลกปัจจุบัน ส่วนติดต่อผู้ใช้ หรือ human interface มีส่วนสำคัญมากๆ ครับ จะเห็นได้ว่าหน้าตาเหมือนกัน ฟังก์ชั่น ทำได้พอกัน แต่ถ้าใช้งานยาก ก้อไม่ซื้อมาใช้ ดูจาก apple ก้อได้ ที่ออกแบบ ipod และ iphone ก้อได้ มาเหมาะสมกับการใช้งาน
รอบนี้ผมเลย ลองออกแบบส่วน human interface บ้าง ขอเอาแบบ basic กึ่งเบื้องต้นๆ กันเลย คือเอา ปุ่มกด หรือ keypad นี้ล่ะครับ และก้อแถมไปด้วยฟังก์ชั่นนาฬิกา แสดงผลออก 7-segment ไปด้วย
นาฬิกาตัวนี้ ออกจะดูธรรมดาไปสักหน่อยนะครับ เอาไปเขียนโปรแกรม ให้นับถอยหลังนี้ ไปลืมวางไว้ไหน รับรอง งานเข้าแน่ๆ
โปรเจคประกอบไปด้วยอะไรบ้าง
ปุ่ม keypad ผมลองใช้เทคนิค ต่อ 4 ปุ่มผ่าน วงจร R-divider แล้วต่อเข้า analog input ของบอร์ด ซึ่งทำให้ ใช้ช่องสัญญาณ เหลือแค่ช่องเดียว วงจรจะเป็นตามรูปข้างล่าง
โดย keypad เหมือนต่อผ่าน R เหมือนต่อค่า R จะได้ค่าโวลต์ ที่แตกต่างออกไป ถึง 5 ค่าคือ กดปุ่มที่ 1,กดปุ่มที่ 2 ,กดปุ่มที่ 3 ,กดปุ่มที่ 4 และไม่มีการกดปุ่ม ที่ผมใช้ 2K 500ohm, 1k ,2k เพราะเมือ อ่านค่าผ่าน R divider จะได้ค่าประมาณ 1v 2v 3v 4v ครับ ถ้าใช้ R ค่าอื่นได้ครับ ไฟที่อ่านจาก analog out จะเปลี่ยนค่าครับ ซึ่งสามารถทำได้ และต้องทำการปรับเปลี่ยน source code ที่ใช้เทียบกับ ค่า R Divider ใหม่ครับ จากนั้นเอาค่า analog ที่ได้ ต่อเข้า analog input แล้วเขียนโปรแกรม เช็คช่วงโวลต์ที่ได้ เมื่อกดปุ่ม เป็น state การทำงานต่างๆ
โดยเทคนิดดังกล่าว เอามาจาก เวปนี้ครับ (เข้าไปดูได้ เผื่อเขาจะมี อะไร update)
nuelectronics – keypad and lcd
ผมก้อได้ปรับปรุงฟังก์ชั่น กดปุ่ม นิดหน่อย ให้มีกดค้าง แล้วเป็นอีก state การทำงาน ตอนนี้นอกจากโปรแกรมจะรู้ว่าการกดปุ่มไหน แล้ว กดสั้น กับ กดยาว จะได้รูปแบบการทำงานที่ต่างกันอีก
ลักษณะโดยรวมของนาฬิกา
มาดูหน้าตารวมๆก่อน เป็นบอร์ด arduino ต่อเข้า 7-segment ผ่าน digital io ใช้เต็มๆ เลย
D0-7 ต่อเข้า control led แต่ล่ะดวงของ 7-segment และใช้ D8 D9 D10 D11 ควบคุมแต่ละหลัก (พอดีมี โมดุลสำเร็จของ mrt micro-research เลยลองใช้ดูก่อน)
รูปต่อมาเป็น หน้าตาของนาฬิกา เป็นแบบ 4 หลักง่ายๆ ก่อน ส่วนที่ยาก คือการขับ 7-segment เมื่อไม่มีไอชีที่ทำหน้าที่เป็น buffer หมายถึงไม่มีการ hold data เราจะเขียนโปรแกรมให้มีการหยุดรอในโปรแกรม หรือมี delay() ไม่ได้เลย เพราะว่า เราต้องใช้ตัวของ arduino ทำหน้าที่เป็น multiplexer ด้วย
บอร์ดจะควบคุมให้ 7-segment ติดได้ที่ล่ะหลัก แต่ด้วยความเร็วในการสลับการทำงาน จึงทำให้เหมือนติดพร้อม 4 หลัก เพราะฉะนั้นการทำงานจริงจะให้มี delay() หรือ รอการทำงานไม่ได้เลย ต้องใช้เทคนิดนิดหน่อย เป็น state machine เป็นอีกเทคนิคนะครับ
นี้เป็นอีกไอชี DS1307 ซึ่งเป็นไอชี นาฬิกา RTC ครับ มันดีตรงที่ไฟดับ เวลายังทำอยู่ บอร์ด arduino จะอ่านผ่านโดยใช้ i2c
ตัว human interface ใส่แบบเบื้องต้นไว้ โชว์การทำงานปุ่ม ร่วมกับ 7-segment ครับ
ปุ่มจะมี 4 ปุ่มได้แก่ Up(1) ,Down(2) ,OK(3), CANCEL(4)
การใช้งานจะมีีสองโหมด โหมดแรก ทำงานปกติ กับโหมด setup เวลา
ในโหมดแรกปุ่มต่างไม่ได้ใช้งานครับ จะมีแค่ กดปุ่ม ok(3) จะแสดงวันที่ รอสักพักจะกลับ เข้าโหมดแสดงเวลาปกติ
กับอีกโหมด setup เวลา เวลาเข้าจะกดปุ่ม ok(3) ค้างไว้ จะเข้าโหมด setup แล้ว 7-segment ส่วนของชั่วโมงจะกระพริบ บอกว่าเข้าโหมดแล้ว เราก้อตั้งเวลาได้ปกติ
รูปแบบการทำงาน ผม copy ฟังก์ชั่นมาจากนาฬิกาจีนๆ แถวบ้านหม้อเลย ใครอยากได้นาิฬิกา ซื้อเอาดีกว่า 4-5 ร้อยเอง นะ แต่ถ้าอยากเอาไปลองทำ แล้วต่อยอดเป็นอย่างอื่น มันก้อน่าสนใจนะครับ
Source Code สามารถโหลดได้ที่นี้ครับ download here
มาชม วีดีโอการทำงานครับ
เทคนิดเพิ่มเติม เราสามารถทำให้ใช้ ปุ่มมากกว่าเดิม แนะนำด้วย คุณ whoami@@electoday
จากกระทู้ http://www.electoday.com/bbs/viewthread.php?tid=211&extra=page%3D1
whoami@@electoday “เทคนิคการใช้ adc ทำ keypad น่าสนใจมากใ้ช้ bit เดียว น่าจะเป็นประโยชน์กับหลายคน จาก http://www.terra.es/personal/ccossio/atmelAVR2006_10.htm”
เอาล่ะครับ มาถึงสรุปสักที่ หลังจากได้เอาเนื้อหาไปใส่ที่ electoday.com ก้อได้ทราบข้อมูลเพิ่มเติม อย่างเช่น ตอนนี้ RTC อย่าง ds1307 จริงไม่จำเป็นต้องใช้ก้อได้เพราะว่า ตัวของ timer ของ ไมโคร สามารถทำ RTC เองได้ แต่การ backup เวลา ต้องใช้ เทคนิดนิดหน่อย เดี่ยวรอบหน้าอยากได้นาฬิกาอีกจะลองใหม่อีกที่ครับ ส่วนในครั้งก้อแค่นี้ก่อนครับ โชดดีครับ
แหล่มเลยครับ ป๋า ช้างงงง อิอิ
@M-I-K-E Electronic
ขอบคุณครับ
can not download code
please check
@sonicm
แก้ไขแล้วครับ ขอบคุณมากครับ
ซื้อบอร์ดจาก arayafun มาตั้งนาน
ผมยังไปไม่ถึงไหนเลย คงต้องฟิตให้มากกว่านี้
แอบทำโปรเจคอลังการณ์แน่ๆเลย อิอิ
ผมเข้าไปดูเวปท่านแล้วนะ สอนผมถ่ายรูปบ้างสิคับ
โปรเจคอลังการณ์อะไรครับ แค่ทำให้ไฟวิ่งกระพริบได้ผมก็ดีใจแล้ว 55+
จริง ๆ อยากทำโปรเจค darkroom timer เอาไว้ตั้งเวลาฉายแสงหัวอัดภาพขาวดำ แต่ไปไม่ถึงไหนเลย ไม่ได้เริ่มด้วยซ่ำ
เรื่องถ่ายรูปสงสัยตรงไหนถามได้ครับ ( ถ้าผมตอบได้นะ อิอิ )
พระเจ้ายอด มันจอร์จมาก
มีวิธีทำนาฬิกาพูดได้ไหมค่ะ
อยากได้!!
ไอเดียน่าสนใจ จะให้พูดว่าอะไรดีครับบ
เผื่อผมจะได้ไอเดียขำไปทำของแปลกๆ
ผมอยากได้โฟฉาทของโปรเจ็คนี้อะคับ พร้อมไฟล์ ISIS 7 รบกวนด้วยคับ ติอต่อกลับด้วยคับ
ISIS 7 คืออะไรครับ
flowchat ไม่ได้ทำไว้ครับ พอดีมันโครงสร้างง่ายๆ
ว่าแต่คุณน้องจะเอาไปทำอะไรครับ
ขอบคุณครับ เเล้วโปรเจ็ก จบ ปวช 3 ของผมจะง่ายขึ้น เเต่น่าจะมาบอกเพิ่มในส่วนของการตั้งปลุกด้วยนะครับ
ผมทำโปรเจ็กเรื่องนี่แหละคับ เเต่ยังทำไม่เปงเลย ใครรุ้ช่วยบอกผมที่คับ
ผมไม่บอกมีรัยม๊ยคัฟ จากชฟ3/3 ผมแข็งคัฟ
คือตอนนี้เขียนโปรแกรมให้เวลามันเดินได้ แต่ต้องการให้มันตั้งเวลาได้จะเขียนโปรแกรมยังไงดีคะ