Arduino การควบคุม LED ผ่าน Serial

การใช้งาน Arduino ควบคุม LED ผ่าน Serial ถือเป็นการเรียนรู้การรับส่งข้อมูลระหว่างคอมพิวเตอร์ กับ Arduino หากสามารถเข้าใจการรับส่งข้อมูลแบบ Serial แล้ว การนำไปประยุกต์ใช้กับงานต่างๆ ก็จะสามารถทำได้ง่ายมากยิ่งขึ้น

ฮาร์แวร์

Arduino LED Control

 

จากโค้ด ได้กำหนดให้ LED1 2 และ 3 เป็น Pin 13 11 และ 10 ตามลำดับ หากกำหนดในโค้ดเป็น Pin อื่นต้องเปลี่ยน Pin ด้วย ส่วน R 220Ω ใส่ไว้เพื่อป้องกันไม่ให้ LED ขาดเนื่องจากกระแสไหลเกิน

ซอฟแวร์

/* LED Control with Serial port */

int LED1_Pin = 13;
int LED2_Pin = 12;
int LED3_Pin = 11;
String SerialGET = "";

void setup() {
 Serial.begin(9600);
 pinMode(LED1_Pin, OUTPUT);
 pinMode(LED2_Pin, OUTPUT);
 pinMode(LED3_Pin, OUTPUT);
}

void loop(){
 while (Serial.available()) {
 char c = Serial.read();
 if (c == '\n') {
 /* You code chk */
 Serial.println(SerialGET);
 if (SerialGET.indexOf("LED1-ON") >= 0)
 digitalWrite(LED1_Pin, HIGH);
 else if (SerialGET.indexOf("LED1-OFF") >= 0)
 digitalWrite(LED1_Pin, LOW);
 if (SerialGET.indexOf("LED2-ON") >= 0)
 digitalWrite(LED2_Pin, HIGH);
 else if (SerialGET.indexOf("LED2-OFF") >= 0)
 digitalWrite(LED2_Pin, LOW);
 if (SerialGET.indexOf("LED3-ON") >= 0)
 digitalWrite(LED3_Pin, HIGH);
 else if (SerialGET.indexOf("LED3-OFF") >= 0)
 digitalWrite(LED3_Pin, LOW);

 SerialGET = "";
 }else
 SerialGET += c;
 }
}

ก่อนอื่น ต้องทราบหลักการรับข้อมูลจาก Serial ก่อน

การรับข้อมูลมาจาก Serial จะรับมาทีละตัวอักษรผ่านคำสั่ง Serial.read() หลักการคือการวนลูปเพื่อเก็บทุกตัวอักษรที่ได้จากคำสั่ง Serial.read() โดยนำไปเก็บไว้ในตัวแปรชนิดสตริง เพื่อง่ายต่อการนำไปใช้งาน หลักการตรวจว่ารับข้อมูลมาครบหรือยัง คือการตรวจหา \n ครับ \n คือการกด Enter การส่งข้อมูลผ่าน Serial จะต้องมีการกดปุ่ม Enter ทุกครั้ง เมื่อตรวจหา \n เจอ นั่นหมายความว่าข้อมูลได้รับมาครบเรียบร้อยแล้ว แล้วจึงนำข้อมูลมาประมวลผลต่อได้เลย

## จบ ##

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *