เรียนรู้ อาดูอิโน เบื้องต้น แบบเร็วๆ

Arduino ( อาดูอิโน ) คือ วงจรระบบสมองฝังตัวชนิดหนึ่ง คือเป็นบอร์ดที่มีไอซีประมวลผลได้แบบคอมพิวเตอร์เล็กๆเครื่องนึง เรียนรู้ใช้งานง่าย สนุก เว็บไซต์โครงการ https://www.arduino.cc/

หน้าตา และ ขา ตัวบอร์ดมีหลายรุ่นมาก ขอยกตัวอย่างให้ดูเช่น

บอร์ดรุ่นนี้คือ 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 เพื่อให้การอ่านสถานะมีความเสถียรใช้ค่ามากเพื่อไม่ให้กระแสเกินค่าที่รับได้ของไอซี




ต่อวงจรดังรูป ใช้ขา 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

ความคิดเห็น

บทความที่ได้รับความนิยม

facebook