วันศุกร์ที่ 28 กันยายน พ.ศ. 2561

แก้สอบไม่ผ่าน


Hardware


ใช้ Arduino UNO ขนาด 8 บิต ATMega 328P ในโครงการเพื่อควบคุมส่วนประกอบต่างๆเช่นโมดูลบลูทู ธ และเครือข่ายรีเลย์
อุปกรณ์

  • Arduino UNO
  • HC – 05 Bluetooth Module
  • ตัวต้านทาน10 KΩ 
  • 20 KΩ Resistor
  • ตัวต้านทาน1 KΩ  X 4
  • ทรานซิสเตอร์ 2N2222 NPN  X 4
  • ไดโอด 1N4007 X 4
  • รีเรย์ 12 V  X 4
  • Prototyping board (Bread board)
  • สายต่อ
  • แหล่งจ่าย 12 V 
  • Smartphone or tablet (Bluetooth enabled)
INPUT

HC05 Bluetooth Module
Smartphone or tablet (Bluetooth enabled)

MCU
 
 Arduino Uno

OUTPUT

รีเรย์ 12V ,โหลด
SOFTWARE

#include <SoftwareSerial.h> //กำหนดเรียกใช้ใน ไลบรารี่ บลูทูธ
const int rxPin = 4; //กำหนดไปที่ rxPinขา4
const int txPin = 2; //กำหนดไปที่ txPinขา2         
SoftwareSerial mySerial(rxPin, txPin); //ไว้ใช้กำหนดค่าลงใน ไลบรารีบลูทูธ
const int Loads[] = {9, 10, 11, 12}; //ตัวแปรอาเรย์
int state = 0; //ตัวแปล state = 0
int flag = 0; //ตัวแปล flag = 0
void setup() //ทำหน้าที่ setup ตามจุดประสงค์ที่ต้องการ
for (int i=0;i<4;i++) //int=0<4และi+เรื่อยๆ
{
pinMode(Loads[i], OUTPUT); //สั่งกำหนดใช้ Load เก็บค่าตัวแปร อาเรย์ i เป็น OUTPUT
}

mySerial.begin(9600); //แสดงข้อมูลทางออกของ Serial Monitor
for (int i=0;i<4;i++) //int=0<4และi+เรื่อยๆ
{
digitalWrite(Loads[i], LOW); //Load[i]เป็นLOW
}
}
void loop()  //คำสั่งที่จะสั่งให้ทำงาน
{
if(mySerial.available() > 0) // if คำสั่งนี้สามารถต่อไปได้เรื่อยๆจนกว่าจะพอใจ
{
state = mySerial.read(); //stateการอ่านค่า
flag=0; //flag = 0
}
switch(state) //จะตรวจสอบว่าตัวแปรมีค่าเท่ากับ case ใด
{
case '0':digitalWrite(Loads[0], HIGH); //กำหนดcase 0 แสดงค่า Load อาเรย์ 0 ตั้งเป็น High
flag=1; // flag=1
break; //หยุดการทำงาน
case '1':digitalWrite(Loads[0], LOW); //กำหนดcase 1 แสดงค่า Load อาเรย์ 0 ตั้งเป็น LOW
flag=1; //flag=1
break; //หยุดการทำงาน
case '2':digitalWrite(Loads[1], HIGH); //กำหนดcase 2 แสดงค่า Load อาเรย์ 1 ตั้งเป็น HIGH
flag=1; //flag=1
break; //หยุดการทำงาน
case '3':digitalWrite(Loads[1], LOW); //กำหนดcase 3 แสดงค่า Load อาเรย์ 1 ตั้งเป็น LOW
flag=1; //flag=1
break; //หยุดการทำงาน
case '4':digitalWrite(Loads[2], HIGH); //กำหนดcase 4 แสดงค่า Load อาเรย์ 2 ตั้งเป็น HIGH
flag=1; //flag=1
break; //หยุดการทำงาน
case '5':digitalWrite(Loads[2], LOW); //กำหนดcase 5 แสดงค่า Load อาเรย์ 2 ตั้งเป็น LOW
flag=1; //flag=1
break; //หยุดการทำงาน
case '6':digitalWrite(Loads[3], HIGH); //กำหนดcase 6 แสดงค่า Load อาเรย์ 3 ตั้งเป็น HIGH
flag=1; //flag=1
break; //หยุดการทำงาน
case '7':digitalWrite(Loads[3], LOW); //กำหนดcase 7 แสดงค่า Load อาเรย์ 3 ตั้งเป็น LOW
flag=1; //flag=1
break; //หยุดทำงาน
case '8':digitalWrite(Loads[0], LOW); //กำหนดcase 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





-ขอบคุณที่ให้โอกาสครับ ^_^


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

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

งานชิ้นที่ 1

องค์ประกอบหน้าที่ต่างๆของโรงงาน โดยแบ่งหน้าที่ตามความเหมาะสมและความถนัดบริหารโดยมีหัวหน้าใหญ่เป็นผู้จัดตำแหน่งหน้าที่ ...