บทความประกอบการเรียนรู้ => ไมโครคอนโทรลเลอร์ (Arduino) => ข้อความที่เริ่มโดย: admin ที่ กุมภาพันธ์ 20, 2015, 10:54:14 AM
-
เขียนโปรแกรมตอบสนองอินเตอร์รัพท์ (จับเวลา)แสดงผลตัวเลขบน 7 segment MAX7219
ฟังก์ชั่นอยู่ในกลุ่ม Interrupts http://arduino.cc/en/Reference/Interrupts (http://arduino.cc/en/Reference/Interrupts)
-attachInterrupt() http://arduino.cc/en/Reference/AttachInterrupt (http://arduino.cc/en/Reference/AttachInterrupt)
-detachInterrupt() http://arduino.cc/en/Reference/DetachInterrupt (http://arduino.cc/en/Reference/DetachInterrupt)
-noInterrupts() http://arduino.cc/en/Reference/NoInterrupts (http://arduino.cc/en/Reference/NoInterrupts)
ฟังก์ชั่นทั่วไป
-pinMode() http://arduino.cc/en/Reference/PinMode (http://arduino.cc/en/Reference/PinMode)
-delay() http://arduino.cc/en/Reference/Delay (http://arduino.cc/en/Reference/Delay)
-delayMicroseconds() http://arduino.cc/en/Reference/DelayMicroseconds (http://arduino.cc/en/Reference/DelayMicroseconds)
-analogRead() http://arduino.cc/en/Reference/AnalogRead (http://arduino.cc/en/Reference/AnalogRead)
ไลบารี่เพิ่มเติม
-LedControl.h https://github.com/wayoda/LedControl/releases (https://github.com/wayoda/LedControl/releases)
ฟังก์ชั่นในไลบารี่ LedControl.h
-LedControl lc=LedControl(dataPin,clkPin,csPin,numDevices);
-lc.shutdown(addr,false); // Enable display
-lc.setIntensity(addr,value); // Set brightness level (0 is min, 15 is max)
-lc.clearDisplay(addr); // Clear display register
-lc.setDigit(addr, digit, value, point_decimal) //display number 0-9
-lc.setChar(addr, digit, character, false) //display character etc. A,b,c,d,E,F,H,L,P,-,_
-lc.setRow(addr, digit,value) //display part of segment
รายละเอียดเพิ่มเติมของไลบารี่ http://playground.arduino.cc/Main/LedControl (http://playground.arduino.cc/Main/LedControl)
โจทย์โปรแกรม
-เขียนโปรแกรมจับเวลาโดยแสดงตัวเลขที่ 7 segment MAX7219 มีคุณสมบัติดังนี้
>ใช้สวิตช์ 1 ตัวสำหรับเข้าโหมดตั้งค่าเวลาสำหรับถอยหลังได้ (เข้าโหมดโดยการอินเตอร์รัพท์)
>ใช้สวิตช์ตัวอื่นสำหรับป้อนค่า
>ใช้สวิตช์ตัวเดิมตอนเข้าโหมดเป็นสวิตช์ออกจากโหมดตั้งเวลาพร้อมทั้งให้เวลาเริ่มนับถอยหลัง
-โปรแกรมรายละเอียดพิเศษรายกลุ่ม (แจ้งให้ทราบเมื่อถึงชั่วโมงเรียน)
วงจรที่ใช้ในการทดลองสำหรับผู้ที่ใช้บอร์ด Arduino
(http://www.praphas.com/PhotoForum/arduino/Lab-31-01.png)
วงจรที่ใช้ในการทดลองสำหรับผู้ที่ใช้ไอซี ATmega328 (ที่มี Boot Loader Arduino)
(http://www.praphas.com/PhotoForum/arduino/Lab-31-02.png)
บริเวณใช้งานบอร์ดทดลอง
(http://www.praphas.com/PhotoForum/arduino/Lab-31-03.png)
โมดูลสำเร็จรูปเพิ่มเติม
MAX7219 7 Segment
(http://www.praphas.com/PhotoForum/arduino/Lab-20-c.jpg)
http://www.arduinoall.com (คลิก) (http://www.arduinoall.com/product/460/%E0%B9%82%E0%B8%A1%E0%B8%94%E0%B8%B9%E0%B8%A5-%E0%B8%88%E0%B8%AD%E0%B9%81%E0%B8%AA%E0%B8%94%E0%B8%87%E0%B8%95%E0%B8%B1%E0%B8%A7%E0%B9%80%E0%B8%A5%E0%B8%82-8-%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81-%E0%B8%AA%E0%B8%B5%E0%B9%81%E0%B8%94%E0%B8%87-0-36quot-max7219-digital-tube-display-module)