วันพฤหัสบดีที่ 4 ตุลาคม พ.ศ. 2561

สอบแก้ เรื่อง วิธีการสร้างโครงการอัตโนมัติ Arduino Based Automation ผ่าน Bluetooth?

แผนภูมิวงจรรวม

Arduino จากบ้านอัตโนมัติวงจร
ส่วนประกอบ 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  เป็น HIGH
               flag=1;                                        ฟังก์ชั่นพิเศษ  flag เท่ากับ 1
               break;                                         ฟังก์ชั่นพิเศษ  หยุดการทำงาน
      case '1':digitalWrite(Loads[0], LOW);       ฟังก์ชั่นพิเศษ  เคส 1 แสดงค่า Load อาเรย์ 0  เป็นLOW
               flag=1;                                        ฟังก์ชั่นพิเศษ  flag เท่ากับ 1
               break;                                                            หยุดการทำงาน
      case '2':digitalWrite(Loads[1], HIGH);      ฟังก์ชั่นพิเศษ  เคส 2 แสดงค่า Load อาเรย์ 1  เป็นHIGH
               flag=1;                                        ฟังก์ชั่นพิเศษ flag เท่ากับ 1
               break;                                          ฟังก์ชั่นพิเศษ หยุดการทำงาน
      case '3':digitalWrite(Loads[1], LOW);      ฟังก์ชั่นพิเศษ   เคส 3 แสดงค่า Load อาเรย์ 1  เป็น LOW
               flag=1;                                        ฟังก์ชั่นพิเศษ  flag เท่ากับ 1
               break;                                           ฟังก์ชั่นพิเศษ  หยุดการทำงาน
      case '4':digitalWrite(Loads[2], HIGH);       ฟังก์ชั่นพิเศษ เคส 4 แสดงค่า Load อาเรย์ 2  เป็น HIGH
               flag=1;                                           ฟังก์ชั่นพิเศษ flag เท่ากับ 1
               break;                                             ฟังก์ชั่นพิเศษ หยุดการทำงาน
      case '5':digitalWrite(Loads[2], LOW);          ฟังก์ชั่นพิเศษ เคส 5 แสดงค่า Load อาเรย์ 2  เป็น LOW
               flag=1;                                           ฟังก์ชั่นพิเศษ flag เท่ากับ 1
               break;                                            ฟังก์ชั่นพิเศษ    หยุดการทำงาน
      case '6':digitalWrite(Loads[3], HIGH);         ฟังก์ชั่นพิเศษ  เคส 6 แสดงค่า Load อาเรย์ 3  เป็น HIGH
               flag=1;                                            ฟังก์ชั่นพิเศษ flag เท่ากับ 1
               break;                                             ฟังก์ชั่นพิเศษ  หยุดการทำงาน
      case '7':digitalWrite(Loads[3], LOW);           ฟังก์ชั่นพิเศษ  เคส 7 แสดงค่า Load อาเรย์ 3  เป็น LOW
               flag=1;                                            ฟังก์ชั่นพิเศษ   flag เท่ากับ 1
               break;                                              ฟังก์ชั่นพิเศษ หยุดการทำงาน
      case '8':digitalWrite(Loads[0], LOW);           ฟังก์ชั่นพิเศษ    เคส 8 แสดงค่า Load อาเรย์ 0  เป็น LOW
               digitalWrite(Loads[1], LOW);              ฟังก์ชั่นพิเศษ   แสดงค่า Load อาเรย์ 1 เป็น สถานะLOW
               digitalWrite(Loads[2], LOW);             ฟังก์ชั่นพิเศษ   แสดงค่า Load อาเรย์ 2 เป็น สถานะ LOW
               digitalWrite(Loads[3], LOW);            ฟังก์ชั่นพิเศษ    แสดงค่า Load อาเรย์ 3 เป็น สถานะ LOW
               flag=1;                                         ฟังก์ชั่นพิเศษ      flag เท่ากับ 1
               break;                                           ฟังก์ชั่นพิเศษ     หยุดการทำงาน
     }
}

FlowChart

   






ไม่มีความคิดเห็น:

แสดงความคิดเห็น

งานครั้งที่ 5 ในสถานที่ฝึกงานของ นศ ใช้ระบบควบคุณภาพอย่างไร

มาตรฐาน ISO 9001 ISO 9001 เป็นมาตรฐานสากลที่องค์กรธุรกิจทั่วโลกให้ความสำคัญ เพื่อความเป็นเลิศทางด้านคุณภาพ และความมีประสิทธิภาพของการด...