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

ส่วนประกอบงานวิชา การเขียนโปรแกรมคอมฯ ครั้งที่ 17

                             ใบรายงานผลการปฏิบัติงาน
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); 
}  




ภาพจำลองการทำงานด้วยโปรแกรม Proteus


อธิบายการทำงานของโปรแกรม

เมื่อกดสวิตซ์ ขึ้นข้อความบน LCD ว่า Power on LED เเละหลอดไฟติด 1วิ พอดับ 

ขึ้นคำว่า Power off


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

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