บทความประกอบการเรียนรู้ => ไมโครคอนโทรลเลอร์ (Arduino) => ข้อความที่เริ่มโดย: admin ที่ เมษายน 21, 2014, 02:50:09 PM

หัวข้อ: งานครั้งที่ 9 เขียนโปรแกรมรับสวิตช์แบบดิจิตอลควบคุม LED และแสดงผลผ่าน UART
เริ่มหัวข้อโดย: admin ที่ เมษายน 21, 2014, 02:50:09 PM
เขียนโปรแกรมรับสวิตช์แบบดิจิตอลควบคุม LED และแสดงผลผ่าน UART
โดยเขียนส่วนของการอ่านสวิตช์เป็นฟังก์ชั่นที่มีการส่งคืนค่า
ฟังก์ชั่นอยู่ในกลุ่ม Serial http://arduino.cc/en/Reference/Serial (http://arduino.cc/en/Reference/Serial)
-Serial.begin() http://arduino.cc/en/Serial/Begin (http://arduino.cc/en/Serial/Begin)
-if (Serial) http://arduino.cc/en/Serial/IfSerial (http://arduino.cc/en/Serial/IfSerial)
-Serial.available() http://arduino.cc/en/Serial/Available (http://arduino.cc/en/Serial/Available)
-Serial.read() http://arduino.cc/en/Serial/Read (http://arduino.cc/en/Serial/Read)
-Serial.print() http://arduino.cc/en/Serial/Print (http://arduino.cc/en/Serial/Print)
-Serial.println() http://arduino.cc/en/Serial/Println (http://arduino.cc/en/Serial/Println)
-Serial.flush() http://arduino.cc/en/Serial/Flush (http://arduino.cc/en/Serial/Flush)

ฟังก์ชั่นทั่วไป
-pinMode() http://arduino.cc/en/Reference/PinMode (http://arduino.cc/en/Reference/PinMode)
-digitalRead() http://arduino.cc/en/Reference/DigitalRead (http://arduino.cc/en/Reference/DigitalRead)
-digitalWrite() http://arduino.cc/en/Reference/DigitalWrite (http://arduino.cc/en/Reference/DigitalWrite)
-delay() http://arduino.cc/en/reference/delay  (http://arduino.cc/en/reference/delay)

โจทย์โปรแกรม
-กดสวิตช์ดิจิตอล แสดงผลการกดสวิตช์ต่าง ๆ บนจอคอมพิวเตอร์ผ่านพอร์ตอนุกรม
-การกดสวิตช์ควบคุมการติดดับของ LED
(เช่น เมื่อสวิตช์ SW1 ถูกกด ให้แสดงผลว่า "SW1 is Pressed"
-โปรแกรมรายละเอียดพิเศษรายกลุ่ม (แจ้งให้ทราบเมื่อถึงชั่วโมงเรียน)
*หมายเหตุ* วงจรสวิตช์ออกแบบเพื่อให้ใช้ Internal pullup ดังนั้นจะต้องกำหนดโหมดเป็น  INPUT_PULLUP เท่านั้น

ผังขาต่อใช้งานของ Arduino Nano
(http://www.praphas.com/PhotoForum/arduino/nano.jpg)

วงจรที่ใช้ในการทดลองสำหรับผู้ที่ใช้บอร์ด Arduino
(http://www.praphas.com/PhotoForum/arduino/Lab-09-01.png)

วงจรที่ใช้ในการทดลองสำหรับผู้ที่ใช้ไอซี ATmega328 (ที่มี Boot Loader Arduino)
(http://www.praphas.com/PhotoForum/arduino/Lab-09-02.png)

บริเวณใช้งานบอร์ดทดลอง
(http://www.praphas.com/PhotoForum/arduino/Lab-09-03.png)
ตัวอย่างโปรแกรม
โค๊ด: [Select]
#define SW 10
#define LED 13
void setup()
{
pinMode(SW, INPUT_PULLUP);
pinMode(LED, OUTPUT);
}
void loop()
{
if(digitalRead(SW)==LOW)
{
digitalWrite(LED,HIGH);
}
else
{
digitalWrite(LED,LOW);
}
}
หัวข้อ: Re: งานครั้งที่ 9 เขียนโปรแกรมรับสวิตช์แบบดิจิตอล
เริ่มหัวข้อโดย: admin ที่ เมษายน 21, 2014, 09:35:42 PM
...
หัวข้อ: Re: งานครั้งที่ 9 เขียนโปรแกรมรับสวิตช์แบบดิจิตอล
เริ่มหัวข้อโดย: admin ที่ เมษายน 22, 2014, 09:55:10 AM
...