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

การอธิบายแยกส่วนประกอบต่างๆ

Arduino Based Home Automation Project via Bluetooth



Hardware ประกอบไปด้วย

1. Arduino uno r3

2. Module Relay

3. HC – 05 Bluetooth Module

4. Load 

5. สมาร์ทโฟน  


Input

  1. HC – 05 Bluetooth Module

  2.  สมาร์ทโฟน  

Output

  1.Module Relay

  2.Load



Software


#include <SoftwareSerial.h> // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้

const int rxPin = 4; // ประกาศตัวแปร  ชื่อ rxPin มีค่าเท่ากับ 4

const int txPin = 2; // ประกาศตัวแปร  ชื่อ txPin มีค่าเท่ากับ 2          

SoftwareSerial mySerial(rxPin, txPin); //ฟังก์ชั่นของ SoftwareSerial กำหนดพอร์ต 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ให้เป็นเอาต์พุต
   
}

   mySerial.begin(9600); //ประกาศการใช้งานการสื่อสารรับส่งข้อมูลผ่าน พอร์ตRS232
                                                   //ค่าเริ่มต้นเพื่อติดต่อสื่อสารกับคอมพิวเตอร์อัตราเร็ว9600บิตต่อวินาที

   for (int i=0;i<4;i++) // กำหนดตัวแปร i เท่ากับ 0 i น้อยกว่า 4 i เพิ่มขึ้นที่ละ1
   
{
digitalWrite(Loads[i], LOW); ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads เป็น LOW, 0

    }
  }
void loop()  //  ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ 
{
     if(mySerial.available() > 0) // เงื่อนไข ถ้าค่าของ mySerial.available() มีค่ามากกว่า 0 ให้
ทำปีกกาด้านล่าง
    {

      state = mySerial.read(); // อ่านค่า ของ ตัวแปรของ state

      flag=0; // ให้ flag ค่าเป็น 0

    }

   switch(state) // การจัดการเงื่อนไขหลายเงื่อนไข โดยเลือกเงื่อนไขไหนก็ได้

    {

   case '0':digitalWrite(Loads[0], HIGH); //เงื่อนไขที่0 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads
0เป็น HIGH, 1
               flag=1; // ให้ flag ค่าเป็น 1
               break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ

   case '1':digitalWrite(Loads[0], LOW); // เงื่อนไขที่1 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads0
                เป็น LOW, 0
flag=1; // ให้ flag ค่าเป็น 1
               break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ

   case '2':digitalWrite(Loads[1], HIGH); // เงื่อนไขที่2 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads1
เป็น HIGH, 1
               flag=1; // ให้ flag ค่าเป็น 1
               break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ

   case '3':digitalWrite(Loads[1], LOW); // เงื่อนไขที่3 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads1
เป็น LOW, 0
               flag=1; // ให้ flag ค่าเป็น 1
               break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ

   case '4':digitalWrite(Loads[2], HIGH); // เงื่อนไขที่4 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads 2
เป็น HIGH, 1
               flag=1; // ให้ flag ค่าเป็น 1
               break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ

  case '5':digitalWrite(Loads[2], LOW); // เงื่อนไขที่5 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads 2
เป็น LOW, 0

               flag=1; // ให้ flag ค่าเป็น 1
             break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ

  case '6':digitalWrite(Loads[3], HIGH); // เงื่อนไขที่6 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads 3
เป็น HIGH, 1

               flag=1; // ให้ flag ค่าเป็น 1
               break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ

      case '7':digitalWrite(Loads[3], LOW); // เงื่อนไขที่7 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads 3
เป็น LOW, 0

               flag=1; // ให้ flag ค่าเป็น 1
               break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ

      case '8':digitalWrite(Loads[0], LOW); // เงื่อนไขที่8 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads
digitalWrite(Loads[1], LOW); 0,1,2,3 เป็น LOW, 0
      digitalWrite(Loads[2], LOW);
  digitalWrite(Loads[3], LOW);

                flag=1; // ให้ flag ค่าเป็น 1
                break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
     }

}

                                      flowchart







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

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