Code
#include <LiquidCrystal_I2C.h> // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
LiquidCrystal_I2C lcd(0x27,16,2); //ฟังก์ชั่นของ lcd กำหนดให้ ตัวอักษรที่16 แถวที่2
int aVal=0,tempaVal=0; // ตัวแปรพื้นฐานที่เก็บตัวเลขโดยไม่มีจุดทศนิยม
const int SW_ON = 2; //เป็นตัวกำหนดตัวแปรที่ทำให้ตัวแปรสามารถ "อ่านได้อย่างเดียว
const int led_ON = 13; int CSW_ON = 0; int C_CSW_ON =0;
int Relay1=12,Relay2=11,Relay3=10,Relay4=9;
int sensorPin = A0;
int sensorValue = 0;
void setup() { // ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น
lcd.backlight(); // ไฟเเบคไลท์
lcd.begin(); // การทำงานเริ่มต้นของ lcd
Serial.begin(9600); //ประกาศการใช้งานการสื่อสารรับส่งข้อมูลผ่าน พอร์ตRS232
pinMode(led_ON, OUTPUT);
pinMode(SW_ON, INPUT);
pinMode(Relay1,OUTPUT);
pinMode(Relay2,OUTPUT); //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต
pinMode(Relay3,OUTPUT);
pinMode(Relay4,OUTPUT);
digitalWrite(Relay1,HIGH);
digitalWrite(Relay2,HIGH);
digitalWrite(Relay3,HIGH); //การกำหนดหน้าที่ของขาว่าเป็นอินพุตหรือเอาต์พุต
digitalWrite(Relay4,HIGH);
lcd.setCursor(0,0); //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว0
lcd.print("Project2017"); // เเสดงตัวอักษร
lcd.setCursor(0,1); //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว1
lcd.print("standby");
}
//END Setup
void loop() { // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ
CSW_ON = digitalRead(SW_ON); //เป็นฟังก์ชันที่ใช้ในการอ่านค่าจากขาแบบเฉพาะเจาะจง มีค่าเป็น HIGH หรือ LOW
sensorValue = analogRead(sensorPin);//Serial.println(sensorValue);
//=======================================================================
int c_sensorValue1 = map(sensorValue,0,1023,0,255); //เป็นฟังก์ชันที่ใช้ในการจับคู่หมายเลขจากช่วงหนึ่งไปเป็นช่วงอื่นๆ
//Serial.print("c_sensorValue1 = ");Serial.println(c_sensorValue1);
int c_sensorValue2 = map(sensorValue,0,1023,255,0);
//Serial.print("c_sensorValue2 = ");Serial.println(c_sensorValue2);
//=======================================================================
//check SW_ON
if (CSW_ON == LOW) { delay(1000);
lcd.clear(); //ล้างหน้าจอ
C_CSW_ON++;
Serial.print("C_CSW_ON = ");Serial.println(C_CSW_ON);
//OPEN Project
digitalWrite(led_ON, HIGH);
//END check SW_ON
if(C_CSW_ON == 1){
lcd.setCursor(0,0);
lcd.print("Power On ");
delay(1000);
lcd.clear();
lcd.print("Power On ");
delay(1000);
lcd.clear();
}
}
if(C_CSW_ON == 1){//OPEN PROJECT // คำสั่งในการตัดสินใจ แบบตัวเลือกเดียว โดยใช้งานร่วมกับ ==, !=, <, >เพื่อใช้ในการ ตัดสินใจในการหาคำ
digitalWrite(led_ON, HIGH); //ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล
//delay(1000);
digitalWrite(Relay1, HIGH);
//ตรวจสอบค่า VR================
//lcd.clear();
lcd.setCursor(0,0); //ใช้สั่งให้แสดงเคเซอร์บนหน้าจอ ตัวอักษรที่0เเถว0
lcd.print(c_sensorValue1);
lcd.print(" ");
//==============================
if(c_sensorValue1 >= 150){
digitalWrite(Relay2, LOW);
}else{
digitalWrite(Relay2, HIGH);
}
//=============================
RelaySTART(); // ใช้ฟังก์ชั่น RelaySTART
}else{//OFF PROJECT
lcd.setCursor(0,0);
//lcd.print("Power Off");
lcd.setCursor(0,1);
lcd.print("standby");
digitalWrite(led_ON, LOW); C_CSW_ON = 0;
RelaySTOP();
}
}//END Loop
//======โปรแกรมย่อย==========
void RelaySTOP(){ // เขียนฟังก์ชั่นขึ้นมาโดยใช้ชื่อ RelaySTOP
digitalWrite(Relay1,HIGH);
digitalWrite(Relay2,HIGH); //ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล
digitalWrite(Relay3,HIGH);
digitalWrite(Relay4,HIGH);
}
void RelaySTART(){ // เขียนฟังก์ชั่นขึ้นมาโดยใช้ชื่อ RelaySTART
digitalWrite(Relay1,LOW);
digitalWrite(Relay2,LOW); //ทำหน้าที่เขียนค่า HIGH หรือ LOW ไปยังขาดิจิตอล
digitalWrite(Relay3,LOW);
digitalWrite(Relay4,LOW);
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น