สัญญาณ Digital Output ควบคุม LED ไฟวิ่ง

บทเรียนนี้ นักเรียนจะได้เรียนรู้การใช้คำสั่ง Digital Write (led1,HIGH); เพื่อควบคุมการเปิดปิดของหลอดไฟ LED โดยจะสั่งงานให้ Arduino UNO ควบคุม LED เปิดปิดไฟแบบวิ่ง เปิดปิดหลอดไฟ และ หน่วงเวลาเป็นจังหวะ

คำสั่ง Digital Write

เป็นคำสั่งที่ใช้กำหนดสัญญาณ HIGH LOW ของขาดิจิตอล Arduino

HIGH คือลอจิก 1 ปล่อยไฟออกแรงดัน 5V

LOW คือลอจิก 0 กำหนดขานั้นให้เป็นสายกราวด์ 0V

digitalWrite(pin,value);

pin คือขา Digital ของ Arduino ที่จะสั่งงาน ให้เป็น HIGH หรือ LOW

value คือค่าที่ต้องการส่งออก ค่า 0 หรือ 1

ตัวอย่างคำสั่ง digitalWrite

ต้องการให้ขา 13 ของ Arduino มีไฟออก 5V

digitalWrite(13,HIGH); หรือ

digitalWrite(13,1);


คำสั่ง pinMode

ขา digital ของ Arduino สามารถเป็นได้ทั้งโหมด input หรือโหมด output ดังนั้นการที่จะสั่งไฟเปิด/ปิดได้จะต้องกำหนดขาให้เป็นโหมด output ก่อน ดังนี้

pinMode(pin,mode);

pin คือขา digital ของ Arduino ที่ต้องการกำหนดโหมด

mode ในที่นี้เราจะกำหนดให้เป็นโหมดเอาต์พุต ค่า OUTPUT

ตัวอย่างคำสั่ง pinMode()

ต้องการให้ขา 13 ของ Arduino เป็นโหมด Output

pinMode(13,OUTPUT);

หมายเหตุ ทุกขาของ Arduino UNO สารถใช้เป็น digital Pin ได้


อุปกรณ์สำหรับทดลอง Arduino สัญญาณ Digital Output ควบคุมไฟวิ่ง

Arduino UNO

สาย USB

บอร์ดทดลอง Breadboard 830 Point

LED ขนาด 5mm สีแดง จำนวน 5 ดวง

Resistor ตัวต้านทาน 330 Ohm 1/4W Metal film 1% จำนวน 5 ชิ้น

สายไฟจัมเปอร์ จำนวน 6 เส้น


วิธีการต่ออุปกรณ์สำหรับทดลอง Arduino สัญญาณ Digital Output ควบคุมไฟวิ่ง

Arduino UNO -> หลอดไฟ LED

ขา2 -> LED1

ขา3 -> LED2

ขา4 -> LED3

ขา5 -> LED4

ขา6 -> LED5


โค้ดสำหรับทดลอง Arduino สัญญาณ Digital Output ควบคุมไฟวิ่ง

int led1 = 2; // กำหนดขาใช้งาน

int led2 = 3;

int led3 = 4;

int led4 = 5;

int led5 = 6;

void setup()

{

pinMode(led1, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 2 เป็น OUTPUT

pinMode(led2, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 3 เป็น OUTPUT

pinMode(led3, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 4 เป็น OUTPUT

pinMode(led4, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 5 เป็น OUTPUT

pinMode(led5, OUTPUT); // กำหนดขาทำหน้าที่ให้ขา 6 เป็น OUTPUT

digitalWrite(led1,LOW);

digitalWrite(led2,LOW);

digitalWrite(led3,LOW);

digitalWrite(led4,LOW);

digitalWrite(led5,LOW);

}

void loop()

{

digitalWrite(led1,HIGH); // ไฟ LED 1 ติด 50 ms

delay(50);

digitalWrite(led1,LOW); // ไฟ LED 1 ดับ50 ms

delay(50);

digitalWrite(led2,HIGH);

delay(50);

digitalWrite(led2,LOW);

delay(50);

digitalWrite(led3,HIGH);

delay(50);

digitalWrite(led3,LOW);

delay(50);

digitalWrite(led4,HIGH);

delay(50);

digitalWrite(led4,LOW);

delay(50);

digitalWrite(led5,HIGH);

delay(50);

digitalWrite(led5,LOW);

delay(50);

}


การทำงานของโค้ด

การกำหนดขาใช้งาน LED:

  • โค้ดกำหนดหมายเลขขาที่เชื่อมต่อกับ LED 5 ดวง ได้แก่ led1, led2, led3, led4, และ led5
  • ใช้ฟังก์ชัน pinMode() ในฟังก์ชัน setup() เพื่อกำหนดขาแต่ละขาเป็นโหมด OUTPUT (สำหรับควบคุมไฟ LED)

การตั้งค่าเริ่มต้น:

  • ตั้งค่าสถานะของ LED ทุกดวงให้ LOW (ปิดไฟ) โดยใช้ฟังก์ชัน digitalWrite()

การกระพริบไฟในฟังก์ชัน loop():

  • ฟังก์ชัน loop() จะทำงานวนซ้ำไปเรื่อย ๆ โดยเปิดไฟ LED ทีละดวงด้วยสถานะ HIGH (เปิดไฟ)
  • ใช้ฟังก์ชัน delay(50) เพื่อหน่วงเวลา 50 มิลลิวินาที
  • หลังจากนั้นจะปิดไฟ LED ด้วยสถานะ LOW พร้อมการหน่วงเวลาอีก 50 มิลลิวินาที
  • ทำซ้ำลำดับการเปิด-ปิดไฟ LED ตามลำดับจาก led1 ไปถึง led5

ข้อควรรู้

ขา TX และ RX ในบอร์ด Arduino เป็นขาสำหรับการสื่อสารแบบอนุกรม (Serial Communication) ซึ่งมีบทบาทสำคัญในการรับ-ส่งข้อมูลระหว่างอุปกรณ์ต่างๆ โดยรายละเอียดและการใช้งานมีดังนี้:

ความหมายของขา TX และ RX

  • TX (Transmit): เป็นขาที่ใช้ในการส่งข้อมูลออกจาก Arduino ไปยังอุปกรณ์ภายนอก เช่น คอมพิวเตอร์ เซ็นเซอร์ หรือโมดูลต่างๆ
  • RX (Receive): เป็นขาที่ใช้รับข้อมูลเข้าสู่ Arduino จากอุปกรณ์ภายนอก

การใช้งาน

Serial Communication:

  • ใช้ร่วมกับคำสั่ง Serial.begin(baudRate) เพื่อกำหนดความเร็วในการสื่อสาร เช่น 9600 bits per second
  • ใช้คำสั่ง Serial.print() หรือ Serial.write() เพื่อส่งข้อมูลผ่านขา TX
  • ใช้คำสั่ง Serial.read() หรือ Serial.available() เพื่อรับข้อมูลผ่านขา RX

การเชื่อมต่อ:

  • ขา TX ของ Arduino ต้องเชื่อมต่อกับขา RX ของอุปกรณ์ภายนอก และขา RX ของ Arduino ต้องเชื่อมกับขา TX ของอุปกรณ์ภายนอกเพื่อการสื่อสารที่ถูกต้อง
  • การเชื่อมต่อทั่วไปอาจใช้ USB หรือสายต่ออนุกรม (Serial Cable) ในการเชื่อม Arduino กับคอมพิวเตอร์