เรียนรู้ Arduino อาดูอิโน เบื้องต้นแบบเร็วๆ ใช้เปิด-ปิดไฟได้
Arduino ( อาดูอิโน ) คือ วงจรระบบสมองฝังตัวชนิดหนึ่ง คือเป็นบอร์ดที่มีไอซีประมวลผลได้แบบคอมพิวเตอร์เล็กๆเครื่องนึง เรียนรู้ใช้งานง่าย สนุก เว็บไซต์โครงการ https://www.arduino.cc/
หน้าตา และ ขา ตัวบอร์ดมีหลายรุ่นมาก ขอยกตัวอย่างให้ดูเช่น
PWM - Pulse Width Modulate คือขาที่สามารถเขียนโปรแกรมให้ส่งคลื่นที่ปรับความกว้างได้ออกมาได้ เช่น ใช้ขับเซอร์โว
Analog - เป็นขาที่ใช้อ่านค่าแรงดันแบบต่อเนื่องได้ 0-5V เช่น แรงดันจากวงจรเซ็นเซอร์วัดอุณภูมิ ความชื้นสัมพัทธ์
SPI (Serial Peripheral Interface) เป็นขาสำหรับเชื่อมต่อสื่อสารกับวงจรลูกข่ายได้หลายตัวในระยะไม่ไกล
I2C เป็นขาที่ใช้สื่อสารด้วยโปรโตคอลแบบนึงที่ใช้สายแค่สองเส้นเชื่อมต่อกับตัวลูกได้หลายตัว I2C ต่อกับ I2C เช่น ใช้แสดงผลจอ OLED
Serial - ใช้สำหรับการสื่อสาร ส่งรับข้อมูล ระหว่างสองวงจร
Arduino - Digital I/O - เป็นขาที่สามารถกำหนดให้เป็น อินพุต เอ้าพุต อ่านค่า ส่งออกค่าแรงดัน 0V/5V ได้ ใช้ขับแอลอีดี รีเลย์ ทำสวิตช์
การเขียนโปรแกรม และ โปรแกรมตัวอย่าง
พัฒนาโปรแกรมด้วย ภาษา C หรือ C++
คำสั่ง ที่จะใช้เขียนโปรแกรม https://www.arduino.cc/reference/en/
บนคอมพิวเตอร์
ดาวโหลดติดตั้ง Arduino Software (IDE) ได้จาก https://www.arduino.cc/en/Guide/HomePage
- ติดตั้งเสร็จแล้วเปิดโปรแกรมขึ้นมาจะเห็นหน้าตาแบบนี้
- ต่อสาย USB เข้ากับบอร์ด (มุมล่างจะบอกพอร์ท USB ที่คอมฯใช้)
- เลือก ชนิดบอร์ด เช่น Tools->Board: Arduino/Genuino Micro
- ไฟล์ตัวอย่างไปที่ File -> Examples -> Basics ->Blink
แก้โค้ด
int LED = 17; // เพิ่มสำหรับบอร์ด Pro Micro
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED, OUTPUT); // กำหนดให้ขาจ่ายไฟออกที่แรงดันประมาณ 5V (HIGH) / 0V (LOW)
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
สำหรับบอร์ด Micro Pro ขา 17 ของบอร์ดต่อ RX LED อยู่ จึงเอามาใช้ทดลองได้
โดยเพิ่ม
int LED = 17;
แก้ LED_BUILTIN เป็น LED
- แล้ว เลือก Sketch -> Upload หรือ กดปุ่มลูกศรชี้ไปทางขวาได้เลย
บนมือถือแอนดรอย
- ดาวโหลดและติดตั้ง ArduinoDroid - Arduino IDE
- เปิดขึ้นมาจะเห็นหน้าตาแบบนี้ กด รูปคีย์บอรืจะได้คีย์บอรืดขนาดเล็กไม่เกะกะ
- ต่อ USB On The Go ( OTG ) ร้านทุกอย่างยี่สิบน่าจะมีขาย เคยซื้อ
แก้โค้ดเป็น
int LED = 17; // เพิ่มสำหรับบอร์ด Pro Micro
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED, OUTPUT); // กำหนดให้ขาจ่ายไฟออกที่แรงดันประมาณ 5V (HIGH) / 0V (LOW)
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
- แตะรูปแผ่นดิสเพื่อเซฟ
- แตะรุปสายฟ้าเพื่อคอมไพล์
- แตะรูป ลูกศรหัวลงเพื่อดาวโหลดลงบอร์ด
วงจรที่ควรรู้เบื้องต้น
LED
int LED = 17; // หมายเลขขาของบอร์ด
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH); // LOW
- ดูข้อมูลผลิตภัIฑ์ ว่า ต้องการแรงดันค่อมหลอดเท่าไหร่ กระแสเท่าไหร่
- เมื่อนำมาต่อกับแหล่งจ่ายไฟ 5V ก้เอาแรงดันค่อมหลอดมาลบ เอากระแสที่หลอดต้องการมาหาร ก็จะได้ค่า ความต้านทานที่ต้องใช้
ถ้าจะเปิดแอลอีดีครั้งละหลายดวงก็ต้องใช้ รีเลย์ เพราะกระแสจากบอร์ดไม่พอ
แนะนำ กระทู้ถามใน HN เรียนอิเลกทรอนิคส์ด้วยตัวเองอย่างไรดี
https://news.ycombinator.com/item?id=16775744
หน้าตา และ ขา ตัวบอร์ดมีหลายรุ่นมาก ขอยกตัวอย่างให้ดูเช่น
บอร์ดรุ่นนี้คือ Pro Micro 5V
เลือกชนิดบอร์ดในโปรแกรม Tools->Board: Arduino/Genuino Micro
ถ้าเลือกชนิดบอร์ดผิดจะโหลดโปรแกรมไม่ได้ ให้ต่อสวิตช์ หรือแตะขา RST - GND เมื่อกดโหลดโปรแกรมลงไปใหม่ให้ กดหรือแตะไวๆสองครั้ง ทำจนกว่าจะโหลดได้ก็จะใช้ได้ปกติ
PWM - Pulse Width Modulate คือขาที่สามารถเขียนโปรแกรมให้ส่งคลื่นที่ปรับความกว้างได้ออกมาได้ เช่น ใช้ขับเซอร์โว
Analog - เป็นขาที่ใช้อ่านค่าแรงดันแบบต่อเนื่องได้ 0-5V เช่น แรงดันจากวงจรเซ็นเซอร์วัดอุณภูมิ ความชื้นสัมพัทธ์
SPI (Serial Peripheral Interface) เป็นขาสำหรับเชื่อมต่อสื่อสารกับวงจรลูกข่ายได้หลายตัวในระยะไม่ไกล
I2C เป็นขาที่ใช้สื่อสารด้วยโปรโตคอลแบบนึงที่ใช้สายแค่สองเส้นเชื่อมต่อกับตัวลูกได้หลายตัว I2C ต่อกับ I2C เช่น ใช้แสดงผลจอ OLED
Serial - ใช้สำหรับการสื่อสาร ส่งรับข้อมูล ระหว่างสองวงจร
Arduino - Digital I/O - เป็นขาที่สามารถกำหนดให้เป็น อินพุต เอ้าพุต อ่านค่า ส่งออกค่าแรงดัน 0V/5V ได้ ใช้ขับแอลอีดี รีเลย์ ทำสวิตช์
การเขียนโปรแกรม และ โปรแกรมตัวอย่าง
พัฒนาโปรแกรมด้วย ภาษา C หรือ C++
คำสั่ง ที่จะใช้เขียนโปรแกรม https://www.arduino.cc/reference/en/
บนคอมพิวเตอร์
ดาวโหลดติดตั้ง Arduino Software (IDE) ได้จาก https://www.arduino.cc/en/Guide/HomePage
- ติดตั้งเสร็จแล้วเปิดโปรแกรมขึ้นมาจะเห็นหน้าตาแบบนี้
- ต่อสาย USB เข้ากับบอร์ด (มุมล่างจะบอกพอร์ท USB ที่คอมฯใช้)
- เลือก ชนิดบอร์ด เช่น Tools->Board: Arduino/Genuino Micro
- ไฟล์ตัวอย่างไปที่ File -> Examples -> Basics ->Blink
แก้โค้ด
int LED = 17; // เพิ่มสำหรับบอร์ด Pro Micro
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED, OUTPUT); // กำหนดให้ขาจ่ายไฟออกที่แรงดันประมาณ 5V (HIGH) / 0V (LOW)
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
สำหรับบอร์ด Micro Pro ขา 17 ของบอร์ดต่อ RX LED อยู่ จึงเอามาใช้ทดลองได้
โดยเพิ่ม
int LED = 17;
แก้ LED_BUILTIN เป็น LED
- แล้ว เลือก Sketch -> Upload หรือ กดปุ่มลูกศรชี้ไปทางขวาได้เลย
บนมือถือแอนดรอย
- ดาวโหลดและติดตั้ง ArduinoDroid - Arduino IDE
- เปิดขึ้นมาจะเห็นหน้าตาแบบนี้ กด รูปคีย์บอรืจะได้คีย์บอรืดขนาดเล็กไม่เกะกะ
- ต่อ USB On The Go ( OTG ) ร้านทุกอย่างยี่สิบน่าจะมีขาย เคยซื้อ
- เลือก รูปจุดเรียงลงมาสามจุด -> Settings ->Board Type -> Arduino -> Micro
- เลือก รูปจุดเรียงลงมาสามจุด ->Sketch -> Examples -> 01.Basics -> Blink
int LED = 17; // เพิ่มสำหรับบอร์ด Pro Micro
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED, OUTPUT); // กำหนดให้ขาจ่ายไฟออกที่แรงดันประมาณ 5V (HIGH) / 0V (LOW)
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
- แตะรูปแผ่นดิสเพื่อเซฟ
- แตะรุปสายฟ้าเพื่อคอมไพล์
- แตะรูป ลูกศรหัวลงเพื่อดาวโหลดลงบอร์ด
วงจรที่ควรรู้เบื้องต้น
LED
int LED = 17; // หมายเลขขาของบอร์ด
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH); // LOW
- ดูข้อมูลผลิตภัIฑ์ ว่า ต้องการแรงดันค่อมหลอดเท่าไหร่ กระแสเท่าไหร่
- เมื่อนำมาต่อกับแหล่งจ่ายไฟ 5V ก้เอาแรงดันค่อมหลอดมาลบ เอากระแสที่หลอดต้องการมาหาร ก็จะได้ค่า ความต้านทานที่ต้องใช้
ถ้าจะเปิดแอลอีดีครั้งละหลายดวงก็ต้องใช้ รีเลย์ เพราะกระแสจากบอร์ดไม่พอ
ถ้าใช้วงจรรีเลย์สำเร็จรูป ก็ต่อแอลอีดีขนาดกันได้หลายหลอดกับแหล่งจากไฟแยกออกมาต่างหาก ถ้าใช้ 5V ก็ใส่ตัวต้านทานด้วย
SWITCH
ต่อตัวต้านทาน pull-up เพื่อให้การอ่านสถานะมีความเสถียรใช้ค่ามากเพื่อไม่ให้กระแสเกินค่าที่รับได้ของไอซี
ต่อตัวต้านทาน pull-up เพื่อให้การอ่านสถานะมีความเสถียรใช้ค่ามากเพื่อไม่ให้กระแสเกินค่าที่รับได้ของไอซี
ต่อวงจรดังรูป ใช้ขา 9 เป็นอินพุต ขา 17 ที่ต่อแอลอีดีอยู่แล้วเป็น เอ้าพุต
pinMode(9, INPUT);
pinMode(17,OUTOUT);
if ( digitalRead(9) == HIGH ) { // อ่านค่าได้ 1
digitalWrite(17, LOW ) // ปิดแอลอีดี
} else { // เมื่อกดสวิตช์
digitalWrite(17,HIGH) // จ่ายไฟให้แอลอีดี
}
แนะนำ กระทู้ถามใน HN เรียนอิเลกทรอนิคส์ด้วยตัวเองอย่างไรดี
https://news.ycombinator.com/item?id=16775744
ความคิดเห็น
แสดงความคิดเห็น