วันอาทิตย์ที่ 30 กันยายน พ.ศ. 2561

MINI project arduino เปิดปิดไฟบ้านด้วยบลูทูธ hc-05

เปิด-ปิดไฟบ้านด้วย บลูทูธ HC-05


อุปกรณ์
          1. arduino nano 
          2. bluetooth module hc-05
          3. relay 5v 3 channal
          4.หลอดไฟ 220V
          5. แป้นฐานหลอดไฟ

Wiring diagram

Block

การต่อสาย Wiring diagram
Bluetooth
   Rx = 11
   Tx = 10
   Vcc = 5v
   Gnd = Gnd
Relay
   Ch1 = A1
   Ch2 = A0
   Vcc = 5v
   Gnd = Gnd


Code
#include <SoftwareSerial.h>//เป็นการเรียกใช้ไลบรารี่ SoftwareSerial.h SoftwareSerial mySerial(10, 11); // RX, TX//ฟังก์ชั่นรับสัญญาณเข้าออกแบบอนุกรม const int relay1=A1;//เป็นตัวแปรชนิด อินทิเจอร์ const int relay2=A0;//เป็นตัวแปรชนิด อินทิเจอร์ const int led1=A2;//เป็นตัวแปรชนิด อินทิเจอร์ const int led2=A3;//เป็นตัวแปรชนิด อินทิเจอร์ void setup() { pinMode(relay1,OUTPUT);// รีเลย์1เป็นเอาท์พุต pinMode(relay2,OUTPUT);// รีเลย์2เป็นเอาท์พุต pinMode(led1,OUTPUT);// led 1 เป็นเอาท์พุต pinMode(led2,OUTPUT);// led 2 เป็นเอาท์พุต digitalWrite(relay1,LOW);//คำสั่ง relay1 เป็นปิด digitalWrite(relay2,LOW);//คำสั่ง relay2 เป็นปิด digitalWrite(led1,LOW);//คำสั่ง led1 เป็นปิด digitalWrite(led2,LOW);//คำสั่ง led2 เป็นปิด mySerial.begin(9600);//กำหนดค่าเริ่มต้น 9600บิตต่อวินาที แบบอนุกรม } char x;//ชนิดข้อมูลของตัวแปร void loop() { // run over and over if (mySerial.available())//ถ้ามีข้อมูลเข้ามาในวงเล็บให้ทำตามเงื่อนไขแบบอนุกรม { x=mySerial.read();//อ่านข้อมูลอนุกรมแล้วเอาปเก้บไว้ในตัวแปร x } switch(x) //ทำตามเงื่อนไข case { case'1': digitalWrite(relay1,HIGH);//คำสั่งรีเลย์ 1 ทำงาน break; case'2': digitalWrite(relay1,LOW);//คำสั่งรีเลย์ 1 ไม่ทำงาน break; case'3': digitalWrite(relay2,HIGH);//คำสั่งรีเลย์ 2 ทำงาน break; case'4': digitalWrite(relay2,LOW);//คำสั่งรีเลย์ 2 ไม่ทำงาน break; case'5': digitalWrite(led1,HIGH);//คำสั่ง led 1 ทำงาน break; case'6': digitalWrite(led1,LOW);//คำสั่ง led 1 ไม่ทำงาน break; case'7': digitalWrite(led2,HIGH);//คำสั่ง led 2 ทำงาน break; case'8': digitalWrite(led2,LOW); //คำสั่ง led 2 ไม่ทำงาน break; } }
หลักการทำงาน 
    คือ ควบคุมไฟบ้าน ผ่าน Module Bluetooth HC-05 ให้ปิดเปิดตามคำสั่งที่ส่งผ่านโทรศัพท์มือถือ
Code+แอปบลูทูธ
https://drive.google.com/drive/u/2/my-drive?ogsrc=32
ชื่อสมาชิกกลุ่ม
นาย อภิสิทธิ์ ปิ่นล้ม สมค.1 รหัส 21
นาย อมรสิริ ทวยโพธิ์ สมค.1 รหัส 22
ลิ้งค์ youtube 
https://youtu.be/DVkF7gOyJ7s


วันอังคารที่ 25 กันยายน พ.ศ. 2561

LiquidCrystal

บทความ การใช้งาน Character LCD Display กับ Arduino

(ตอนที่1 - รูปแบบการเชื่อมต่อแบบ Parallel)

 

ความรู้ทั่วไปเกี่ยวกับ LCD Display

        จอ Liquid Crystal Display (LCD) เป็นจอแสดงผลรูปแบบหนึ่งที่นิยมนำมาใช้งานกันกับระบบสมองกลฝังตัวอย่างแพร่หลาย จอ LCD มีทั้งแบบแสดงผลเป็นตัวอักขระเรียกว่า Character LCD ซึ่งมีการกำหนดตัวอักษรหรืออักขระที่สามารถแสดงผลไว้ได้อยู่แล้ว และแบบที่สามารถแสดงผลเป็นรูปภาพหรือสัญลักษณ์ได้ตามความต้องการของผู้ใช้งานเรียกว่า Graphic LCD นอกจากนี้บางชนิดเป็นจอที่มีการผลิตขึ้นมาใช้เฉพาะงาน ทำให้มีรูปแบบและรูปร่างเฉพาะเจาะจงในการแสดงผล เช่น นาฬิกาดิจิตอล เครื่องคิดเลข หรือ หน้าปัดวิทยุ เป็นต้น

     

 

โครงสร้างโดยทั่วไปของ LCD 
          โครงสร้างของ LCD ทั่วไปจะประกอบขึ้นด้วยแผ่นแก้ว 2 แผ่นประกบกันอยู่ โดยเว้นช่องว่างตรงกลางไว้ 6-10 ไมโครเมตร ผิวด้านในของแผ่นแก้วจะเคลือบด้วยตัวนำไฟฟ้าแบบใสเพื่อใช้แสดงตัวอักษร ตรงกลางระหว่างตัวนำไฟฟ้าแบบใสกับผลึกเหลวจะมีชั้นของสารที่ทำให้โมเลกุลของผลึกรวมตัวกันในทิศทางที่แสงส่องมากระทบเรียกว่า Alignment Layer และผลึกเหลวที่ใช้โดยทั่วไปจะเป็นแบบ Magnetic โดย LCD สามารถแสดงผลให้เรามองเห็นได้ทั้งหมด 3 แบบด้วยกันคือ 
- แบบใช้การสะท้อนแสง (Reflective Mode) LCD แบบนี้ใช้สารประเภทโลหะเคลือบอยู่ที่แผ่นหลังของ LCD ซึ่ง LCD ประเภทนี้เหมาะกับการนำมาใช้งานในที่ที่มีแสงสว่างเพียงพอ
- แบบใช้การส่งผ่าน (Transitive Mode) LCD แบบนี้วางหลอดไฟไว้ด้านหลังจอ เพื่อทำให้การอ่านค่าที่แสดงผลทำได้ชัดเจน 
- แบบส่งผ่านและสะท้อน (Transflective Mode) LCD แบบนี้เป็นการนำเอาข้อดีของจอแสดงผล LCD ทั้ง 2 แบบมารวมกัน

          ในบทความนี้เราจะกล่าวถึงจอ LCD ที่แสดงผลเป็นอักขระหรือตัวอักษร ตามท้องตลาดทั่วไปจะมีหลายแบบด้วยกัน มีทั้ง 16 ตัวอักษร 20 ตัวอักษรหรือมากกว่า และจำนวนบรรทัดจะมีตั้งแต่ 1 บรรทัด 2 บรรทัด 4 บรรทัดหรือมากกว่าตามแต่ความต้องการและลักษณะของงานที่ใช้ หรืออาจจะมีแบบสั่งทำเฉพาะงานก็เป็นได้ ในบทความนี้เราจะยกตัวอย่างจอ LCD ขนาด 16x2 Character หรือที่นิยมเรียกกันว่าจอ LCD 16 ตัวอักษร 2 บรรทัด สามารถหาซื้อได้ง่ายและมีราคาไม่สูง เหมาะสมกับการใช้งานแสดงผลไม่มากในหน้าจอเดียว

          จอ LCD 16x2 Character ที่นิยมวางจำหน่ายจะมีอยู่ 2 แบบด้วยกันคือ LCD แบบปกติที่เชื่อมต่อแบบขนาน (Parallel) และ LCD แบบที่เชื่อมต่ออนุกรม (Serial) แบบ I2C โดยทั้ง 2 แบบตัวจอมีลักษณะเดียวกันเพียงแต่แบบ I2C จะมีบอร์ดเสริมทำให้สื่อสารแบบ I2C ได้เชื่อมต่อได้สะดวกขึ้น

รูปที่ 1 จอ LCD 16x2 Character (Parallel)

 

 

รูปที่ 2 จอ LCD 16x2 Character (I2C)

ต่อมาเราจะมาดูกันว่าทั้ง 2 แบบมีขาหรือ Pin ในการเชื่อมต่อแตกต่างกันอย่างไร โดยแบบแรกเป็นแบบ Parallel มีทั้งหมด 16 ขาด้วยกัน ส่วนแบบที่สองเป็นแบบ I2C มีเพียง 4 ขา สามารถแยกออกตามตารางด้านล่างครับ

1. แบบ Parallel มี 16 ขา

รูปที่ 3 ด้านหน้าจอ LCD 16x2 (Parallel)

 ตารางที่ 1 ตารางขาของจอ LCD 16x2 แบบ Parallel

2. แบบ I2C มี 4 ขา (คลิกอ่าน บทความการเชื่อมต่อแบบ I2C)

รูปที่ 4 ด้านหลังจอ LCD 16x2 (I2C)

ตารางที่ 2 ตารางขาของจอ LCD 16x2 แบบ I2C

การควบคุมการแสดงผลของ LCD

          ในการควบคุมหรือสั่งงาน ตัวจอ LCD นั้นมีส่วนควบคุม (Controller) รวมไว้ในตัวแล้ว ผู้ใช้สามารถส่งรหัสคำสั่งควบคุมการทำงานของจอ LCD ผ่าน Controller ว่าต้องการใช้แสดงผลอย่างไร โดย LCD Controller ของจอตัวนี้เป็น Hitachi เบอร์ HD44780 และขาในการเชื่อมต่อระหว่าง LCD กับ Microcontroller มีดังนี้
          1. GND เป็นกราวด์ใช้ต่อระหว่าง Ground ของระบบ Microcontroller กับ LCD 
          2. VCC เป็นไฟเลี้ยงวงจรที่ป้อนให้กับ LCD ขนาด +5VDC 
          3. VO ใช้ปรับความสว่างของหน้าจอ LCD 
          4. RS ใช้บอกให้ LCD Controller ทราบว่า Code ที่ส่งมาทางขา Data เป็นคำสั่งหรือข้อมูล 
          5. R/W ใช้กำหนดว่าจะอ่านหรือเขียนข้อมูลกับ LCD Controller 
          6. E เป็นขา Enable หรือ Chips Select เพื่อกำหนดการทำงานให้กับ LCD Controller 
          7-14. DB0-DB7 เป็นขาสัญญาณ Data ใช้สำหรับเขียนหรืออ่านข้อมูล/คำสั่ง กับ LCD Controller

          วิธีการสั่งงานจะแตกต่างกันไป โดย LCD Controller สามารถรับรหัสคำสั่งจาก Microcontroller ได้จากสัญญาณ RS R/W และ DB0-DB7 ในขณะที่สัญญาณ E มีค่า Logic เป็น “1” ซึ่งสัญญาณเหล่านี้จะใช้ร่วมกันเพื่อกำหนดเป็นรหัสคำสั่งสำหรับสั่งงาน LCD โดยหน้าที่ของแต่ละสัญญาณพอสรุปได้ดังนี้ 

          - E เป็นสัญญาณ Enable เมื่อมีค่าเป็น 
                   “1” เป็นการบอกให้ LCD ทราบว่าอุปกรณ์ภายนอกต้องการติดต่ออ่านหรือเขียนข้อมูล
                   “0” ให้ LCD ไม่สนใจสัญญาณ RS R/W และ DB7-DB0 
          - RS เป็นสัญญาณสำหรับกำหนดให้ LCD ทราบว่าอุปกรณ์ภายนอกต้องการติดต่อกับ LCD ในขณะนั้นเป็นรหัสคำสั่งหรือข้อมูล โดยถ้า 
                    RS = “0” หมายถึง คำสั่ง
                    RS = “1” หมายถึง ข้อมูล 
          - R/W เป็นสัญญาณสำหรับบอกให้ LCD ทราบว่าอุปกรณ์ภายนอกต้องการอ่านหรือเขียนกับ LCD โดยถ้า 
                    R/W = “0” หมายถึง เขียน
                    R/W = “1” หมายถึง อ่าน 
          - DB0-DB7 เป็นสัญญาณแบบ 2 ทิศทาง โดยจะสัมพันธ์กับสัญญาณ R/W ใช้สำหรับรับสั่ง คำสั่งและข้อมูลระหว่าง LCD กับอุปกรณ์ภายนอก โดยถ้า R/W =   “0” สัญญาณ DB7-DB0 จะส่งจากอุปกรณ์ภายนอกมาที่ LCD แต่ถ้า R/W = “1” สัญญาณ DB7-DB0 จะส่งจาก LCD ไปยังอุปกรณ์ภายนอก

การเชื่อมต่อสัญญาณขาข้อมูลระหว่าง Microcontroller กับ LCD Controller

          การเชื่อมต่อสัญญาณขาข้อมูลระหว่าง Microcontroller กับ LCD Controller สามารถทำได้ 2 ลักษณะ คือ การเชื่อมต่อแบบ 8 บิต (DB0-DB7) และการเชื่อมต่อแบบ 4 บิต (DB4-DB7) ทั้งสองแบบแตกต่างกันเพียงจำนวนขาที่ใช้คือ 8 หรือ 4 ขา และยังสามารถทำงานได้เหมือนกัน อย่างที่แน่นอนในการส่งข้อมูลแบบ 4 ขา ย่อมทำได้ช้ากว่า 8 ขา แต่ไม่ได้ช้ามากจนสังเกตุได้ด้วยสายตา ในการต่อกับ Arduino นั้นจึงนิยมต่อเพียง 4 ขา หรือ 4 บิตเท่านั้น เพื่อเป็นการประหยัดขาในการต่อใช้งานไปไว้ต่อกับอุปกรณ์อื่น ตัวอย่างเช่น Arduino UNO R3 นั้นมีขาให้ใช้งานค่อนข้างน้อย

ขาที่ใช้ในการเชื่อมต่อกับ Arduino UNO R3

ตารางขาที่ใช้ในการเชื่อมต่อกับ Arduino UNO R3

รายละเอียดคำสั่งในการสั่งงานระหว่าง Arduino กับ จอ LCD

         คำสั่งในการควบคุมจอ LCD ของ Arduino นั้น ทาง Arduino.cc เขียนเป็น Library มาให้เพื่อสะดวกในการนำไปใช้งาน หลังจากต่อสายเสร็จเรียบร้อย ขั้นตอนแรกในการเริ่มเขียนโปรแกรมคือการเรียกใช้ Library ของ LCD จากไฟล์ชื่อ LiquidCrystal.h หลังจากนั้นมาดูกันว่ามีฟังก์ชั่นที่สำคัญอะไรบ้างที่ใช้สั่งงานให้จอ LCD
         ฟังก์ชั่น LiquidCrystal(); ใช้ประกาศขาที่ต้องการส่งข้อมูลไปยังจอ LCD รูปแบบในการสั่งงานคือ
LiquidCrystal lcd(rs, enable, d4, d5, d6, d7) <<<<<<< ในกรณีใช้งานแบบ 4 บิต
LiquidCrystal lcd(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7) <<<<<<< ในกรณีใช้งานแบบ 8 บิต
         ในบทความนี้ใช้แบบ 4 บิต คือ LiquidCrystal lcd(12, 11, 4, 5, 6, 7); ก็หมายถึงการเชื่อมต่อ rs ที่ขา 12 , Enable ที่ขา 11 , และ DB4-DB7 ที่ขา 4-7 ของ Arduino ตามลำดับ
         ฟังก์ชั่น begin(); ใช้กำหนดขนาดของจอ ในบทความนี้เราใช้ขนาด 16 ตัวอักษร 2 บรรทัด จึงประกาศเป็น lcd.begin(16, 2); 
         ฟังก์ชั่น setCursor(); ใช้กำหนดตำแหน่งและบรรทัดของ Cursor เช่น lcd.setCursor(0, 1); คือ ให้เคอร์เซอร์ไปที่ตำแหน่งที่ 0 บรรทัดที่ 1 การนับตำแหน่งเริ่มจาก 0 ดังนั้น LCD 16x2 มีตำแหน่ง 0 – 15 บรรทัด คือ 0 กับ 1
         ฟังก์ชั่น print(); ใช้กำหนดข้อความที่ต้องการแสดง เช่น lcd.print("ThaiEasyElec"); คือ ให้แสดงข้อความ “ThaiEasyElec” ออกทางหน้าจอ LCD 

แปลง push switch ให้เป็น trigger สวิตซ์ ด้วย Arduino UNO

แปลง push switch ให้เป็น trigger สวิตซ์ ด้วย Arduino UNO


หลายคนคงรู้จัก push switch ดี เนื่องจาก switch ชนิดนี้จะพบได้ในวงจรอิเล็กทรอนิกส์ทั่วไป การทำงานของมันก็คือ เมื่อเรากดปุ่ม switch จะเชื่อมวงจรไฟฟ้าเข้าด้วยกันทำให้กระแสไฟฟ้าไหลครบวงจร แต่ถ้าเราปล่อยปุ่มเมื่อไหร่วงจรก็จะขาดกระแสไฟฟ้าจะไม่ไหลนั่นเอง
บทความนี้จะนำเสนอวิธีการนำ Aruduino UNO มาใช้ร่วมกับ push switch เพื่อให้เราเปลี่ยนจาก กดติดปล่อยดับ เป็น กดติด กดดับ หรือ ทำงานที่ซับซ้อนกว่านั้นได้ เช่น กดเปิด led สีแดง กดอีกทีเปิด led สีเหลือง กดอีกที ปิด led ทั้งหมด มาเริ่มกันเลยครับ

วิดีโอตัวอย่างการทำงาน push สวิตซ์ กดติด กดดับ

อุปกรณ์ที่ใช้ต่อวงจร

  • Board Arduino UNO r3
  • push switch
  • บอร์ดเอนกประสงค์ (Bread board)
  • ตัวต้านทาน 5K – 20K Ohms
  • หลอด LED 3.3V และ ตัวต้านทาน 220 Ohms เพื่อลดแรงดัน 5v เข้า LED

การต่อวงจร Arduino push switch กดติด กดดับ

วงจร push switch กดเปิด กดปิด
จากวงจรด้านบน เราจะแบ่งออกได้เป็น 2 ส่วนย่อยคือ

ส่วน output จาก pin 13 ไปยังหลอด LED

การไหลของกระแสไฟฟ้าจะเป็นไปตาม flow ดังนี้
  1. ไฟจากขา 13 ไปยัง ตัวต้านทาน 220 โอห์ม เพื่อลดแรงดัน 5v จาก บอร์ดป้องกัน LED เสียหาย
  2. ไฟที่เหลือจาก ตัวต้านทาน 220 โอห์ม ไปยังขาบวก ของ LED
  3. จากขาลบ ของ LED เพื่อลง ground
จะเห็นได้ว่าเมื่อใดที่เราสั่ง HIGH ที่ขา 13 ไฟ led จะไหลครบวงจรและทำให้หลอดสว่าง

ส่วน input จาก pin 8 เพื่ออ่านค่าไฟเข้ามายัง board

การไหลของกระแสไฟฟ้าจะเป็นดังนี้
  1. กระแส 5v ต่อออกจากบอร์ดไปยัง push switch
  2. จาก push switch เข้าไปยัง pin 8
  3. จาก push switch ไปยังตัวต้านทาน 10K โอห์ม
  4. จาก ตัวต้านทาน 10k โอห์มไปยัง Ground
จะเห็นได้ว่าเมื่อเรากด push switch ไฟฟ้าจะไหลครบวงจรและส่งค่า HIGH เข้าไปยัง pin 8 ซึ่งเราสามารถนำไปอ่านค่าได้ต่อไป
การที่เราตังต่อตัวต้านทาน 10k กับ ground ไว้ที่ทางออกก็เนื่องจาก ขา input ของ micro controller ทั่วไป (ไม่ได้จำกัดแค่ arduino) จะเป็น high impedence ทำให้การรับไฟเข้าไม่ค่อยแน่นอน ต้องใช้การต่อ pull-up resister ช่วย ซึ่งก็คือตัวต้านทาน 10K โอห์มที่เราต่อกับ ground ไว้นั่นเอง (สามารถใช้ตัวต้านทานได้ตั้งแต่ 5K-20K)
เมื่อนำวงจรมาต่อกับ Bread board ก็จะได้หน้าตาออกมาตามข้างล่าง
Bread board push switch กดเปิด กดปิด

Concept การทำงานของโปรแกรม switch กดติดกดดับด้วย State Change

โปรแกรมนี้ดูเผินๆเหมือนง่าย แค่เราตรวจจับ switch ว่าถูกกดเมื่อไหร่ (input เป็น HIGH) ก็ให้ไปเปิด led ถ้าถูกกดอีกครั้ง (input เป็น HIGH อีกครั้ง) ก็ให้ไปปิด led แต่ความจริงแล้วมันไม่ง่ายอย่างนั้นครับ
เนื่องจาก loop ที่โปรแกรมรันอยู่ มันวนเป็นพันๆครั้งต่อวินาทีเลย ตัวอย่างเช่นขณะที่เรากดปุ่มลงไปเราใช้เวลา 1 วินาทีแช่ปุ่มก่อนจะปล่อย ค่า input HIGH จะถูกนับทำให้ led เปิดปิดเป็นพันครั้งโดยที่เราไม่สามารถควบคุมได้เลย ดังนั้นเราจึงต้องใช้เทคนิคที่เรียกว่า state change เข้าตรวจสอบ switch แทนครับ ซึ่งโดยปกติแล้วการกด switch ลงไปหนึ่งครั้งจะเกิดการเปลี่ยนแปลงดังนี้
  1. ยังไม่กด – สถานะครั้งก่อนเป็น LOW สถานะปัจจุบันเป็น LOW
  2. ตอนกำลังกดลง – สถานะครั้งก่อนเป็น LOW สถานะปัจจุบันเป็น HIGH
  3. ตอนกดแช่ไว้ – สถานะครั้งก่อนเป็น HIGH สถานะปัจจุบันเป็น HIGH
  4. ตอนกำลังปล่อย – สถานะครั้งก่อนเป็น HIGH สถานะปัจจุบันเป็น LOW
  5. ตอนปล่อยแล้ว – สถานะครั้งก่อนเป็น LOW สถานะปัจจุบันเป็น LOW
จะเห็นได้ว่า Stage change จะเกิดขึ้นตอนที่เรากำลังกด (LOW ไป HIGH) หรือกำลังปล่อย (HIGH ไป LOW) ซึ่งการเปลี่ยนแปลงนี้จะเกิดขึ้นครั้งเดียวเท่านั้นต่อการกดหนึ่งครั้ง ในที่นี้ เราจะตรวจจับสถานะปุ่มที่กำลังถูกปล่อย (HIGH ไป LOW) เพื่อเป็น trigger ในการเปิดหรือปิด led – ไปดูตัวโปรแกรมกันเลยครับ

การเขียนโปรแกรมเพื่อรับค่า push switch มาปิด/เปิด led

อธิบายการทำงานของโปรแกรม

บรรทัดที่ 1-6: กำหนดค่าตัวแปรของ pin และสถานะต่างๆที่เราจะใช้
บรรทัดที่ 8-13: กำหนดค่า input/output ของ pin สวิตซ์ และ led
บรรทัดที่ 17: อ่านค่าสถานะของสวิตซ์ ณ ปัจจุบัน
บรรทัดที่ 21:
ตรวจในกรณีที่สถานะของสวิตซ์ในรอบที่แล้วไม่เหมือนปัจจุบัน และ สถานะรอบที่แล้วเป็น HIGH (แสดงว่าเพิ่งปล่อยปุ่มกด) ให้ดำเนินการบรรทัดที่ 22-27 แต่ถ้าไม่ใช่ให้ข้ามไป
บรรทัดที่ 23: เปลี่ยนตัวแปรค่าสถานะ led ให้เป็นตรงกันข้าม (ถ้าเปิดให้ปิด ถ้าปิดให้เปิด)
บรรทัดที่ 25: ส่งตัวแปรค่าสถานะ led ส่งสัญญาณ output ไปยัง pin 13 เพื่อเปิดหรือปิดหลอดไฟ
บรรทัดที่ 27: หน่วงเวลาทิ้งไว้ 0.1 วินาทีเพื่อกันข้อมูลทับซ้อนกัน
บรรทัดที่ 31: จำค่าสถานะสวิตซ์รอบปัจจุบันไว้ให้เป็นค่าเก่า
หลังจากนี้โปรแกรมก็จะวน loop ไปเรื่อยๆ (บรรทัด 15) ถ้ามีการเปลี่ยนแปลงสถานะของสวิตซ์เมื่อไหร่ ค่าของ led ก็จะเปลี่ยนอีกครั้ง
เรียบร้อยแล้วครับ โปรแกรมสวิตซ์กดติดกดดับของเรา ใครมีคำถาม ข้อสงสัย ข้อเสนอแนะ ทิ้งข้อความไว้ใน comment ด้านล่างได้เลยครับ
//ที่มา www.thaiarduino.club