แผนภูมิวงจรรวม
ส่วนประกอบ Hardware
- Arduino UNO
- โมดูลบลูทูธ HC - 05
- ตัวต้านทาน 10 KΩ
- ตัวต้านทาน 20 KΩ
- ตัวต้านทาน 1 KΩ X 4
- 2N2222 ทรานซิสเตอร์ NPN Transistor X 4
- 1N4007 ไดโอด X 4
- รีเลย์ 12 V X 4
- บอร์ดต้นแบบ (บอร์ดขนมปัง)
- สายเชื่อมต่อ
- แหล่งจ่ายไฟ 12 V
- สมาร์ทโฟนหรือแท็บเล็ต (เปิดใช้งาน Bluetooth)
MCU ( Microcontroller Unit)
- Arduino UNO
INPUT
- โมดูลบลูทูธ HC - 05
- สมาร์ทโฟนหรือแท็บเล็ต (เปิดใช้งาน Bluetooth)
OUTPUT
- 1N4007 ไดโอด X 4
- รีเลย์ 12 V X 4
อธิบาย Software
#include <SoftwareSerial.h> นำข้อมูลจาก Linbrary SoftwareSerial มาใช้ const int rxPin = 4; ให้ขา 4 ชื่อ rx const int txPin = 2; ให้ขา 2 ชื่อ tx
SoftwareSerial mySerial(rxPin, txPin); เซ็ตค่าข้อมูลใหม่ const int Loads[] = {9, 10, 11, 12}; เซ็ตค่า Loads ให้มีค่า 9,10,11,12 int state = 0; ตั้งค่าให้ state เป็น 0 int flag = 0; ตั้งค่าให้ flag เป็น 0 void setup() { for (int i=0;i<4;i++) คำสั่งทำซ้ำให้ i = 0 วนซ้ำตราบใดที่ i น้อยกว่า 4 หลังทำเสร็จในแต่ละรอบให้เพิ่มค่า i ไป 1 { pinMode(Loads[i], OUTPUT); สั่งให้ Loads[i] เป็น OUTPUT } mySerial.begin(9600); ตั้งค่าความเร็บในการรับ-ส่งข้อมูล เป็น 9600 for (int i=0;i<4;i++) คำสั่งทำซ้ำให้ i = 0 วนซ้ำตราบใดที่ i น้อยกว่า 4 หลังทำเสร็จในแต่ละรอบให้เพิ่มค่า i ไป 1 { digitalWrite(Loads[i], LOW); สั่งให้ Loads เป็น LOW (ถ้าเป็นหลอดไฟสั่งให้หลอดดับ) } } void loop() { if(mySerial.available() > 0) ถ้าค่าข้อมูลมากกว่า 0 { state = mySerial.read(); ให้ state ค่าเท่ากับค่าข้อมูลที่ อ่านได้ flag=0; ให้ flag เป็น0 } switch(state) จะทำการตรวจสอบตัวแปรว่ามีค่าเท่ากับ case ใด ถ้าตรง กับ case ใดก็จะทำงาน{case '0':digitalWrite(Loads[0], HIGH); ฟังก์ชั่นพิเศษ เคส 0 แสดงค่า Load อาเรย์ 0 เป็น HIGHflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; ฟังก์ชั่นพิเศษ หยุดการทำงานcase '1':digitalWrite(Loads[0], LOW); ฟังก์ชั่นพิเศษ เคส 1 แสดงค่า Load อาเรย์ 0 เป็นLOWflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; หยุดการทำงานcase '2':digitalWrite(Loads[1], HIGH); ฟังก์ชั่นพิเศษ เคส 2 แสดงค่า Load อาเรย์ 1 เป็นHIGHflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; ฟังก์ชั่นพิเศษ หยุดการทำงานcase '3':digitalWrite(Loads[1], LOW); ฟังก์ชั่นพิเศษ เคส 3 แสดงค่า Load อาเรย์ 1 เป็น LOWflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; ฟังก์ชั่นพิเศษ หยุดการทำงานcase '4':digitalWrite(Loads[2], HIGH); ฟังก์ชั่นพิเศษ เคส 4 แสดงค่า Load อาเรย์ 2 เป็น HIGHflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; ฟังก์ชั่นพิเศษ หยุดการทำงานcase '5':digitalWrite(Loads[2], LOW); ฟังก์ชั่นพิเศษ เคส 5 แสดงค่า Load อาเรย์ 2 เป็น LOWflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; ฟังก์ชั่นพิเศษ หยุดการทำงานcase '6':digitalWrite(Loads[3], HIGH); ฟังก์ชั่นพิเศษ เคส 6 แสดงค่า Load อาเรย์ 3 เป็น HIGHflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; ฟังก์ชั่นพิเศษ หยุดการทำงานcase '7':digitalWrite(Loads[3], LOW); ฟังก์ชั่นพิเศษ เคส 7 แสดงค่า Load อาเรย์ 3 เป็น LOWflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; ฟังก์ชั่นพิเศษ หยุดการทำงานcase '8':digitalWrite(Loads[0], LOW); ฟังก์ชั่นพิเศษ เคส 8 แสดงค่า Load อาเรย์ 0 เป็น LOWdigitalWrite(Loads[1], LOW); ฟังก์ชั่นพิเศษ แสดงค่า Load อาเรย์ 1 เป็น สถานะLOWdigitalWrite(Loads[2], LOW); ฟังก์ชั่นพิเศษ แสดงค่า Load อาเรย์ 2 เป็น สถานะ LOWdigitalWrite(Loads[3], LOW); ฟังก์ชั่นพิเศษ แสดงค่า Load อาเรย์ 3 เป็น สถานะ LOWflag=1; ฟังก์ชั่นพิเศษ flag เท่ากับ 1break; ฟังก์ชั่นพิเศษ หยุดการทำงาน}}FlowChart
ไม่มีความคิดเห็น:
แสดงความคิดเห็น