Sensor pada AC menggunakan C++

Pada AC asli, biasanya terdapat 2 buah sensor yaitu
1. Sensor PIR, digunakan untuk menghitung jumlah orang
2. Sensor SHT75, digunakan untuk menghitung kelembaban ruangan
Pengecekan oleh sensor diatas biasanya dilakukan setiap 15 menit sekali

Pada source code C kita kali ini, input yang dimasukkan untuk menghitung jumlah orang dan kelembaban oleh sensor akan dimasukkan secara manual oleh kita.

Di source code kali ini, tingkat jumlah orang dan kelembaban akan kita bagi menjadi 3 (rendah, sedang, dan tinggi) sebagai berikut
1. Tingkat jumlah orang:
    a. rendah: 0-14
    b. sedang: 15-25
    c. tinggi: >25
2. Tingkat kelembaban:
    a. rendah: 0-25
    b. sedang: 26-69
    c. tinggi: >69

Pada bagian sensor.cpp, pada baigan int main, terdapat variabel bernama tabel aturan. Tabel aturan terdiri dari 3 deret angkat (a, b, c).
- a merupakan angka untuk perubahan temperatur
- b merupakan angka untuk fan speed
-c merupakan angka untuk kecepatan swing

Berikut adalah source code C++ untuk sensor pada AC

sensor.cpp
 #include<iostream>  
 #include<math.h>  
 #include<string>  
 #include<stdlib.h>  
 #include "AC.h"  
 #include "Sensor.h"  
 using namespace std;  
 int checkJumlahOrang(int jumlahOrang){  
   int hasil;  
   if(jumlahOrang>=0 && jumlahOrang<=14)  
     hasil=0;  
   else if(jumlahOrang>=15 && jumlahOrang<=25)  
     hasil=1;  
   else  
     hasil=2;  
 return hasil;  
 }  
 int checkKelembaban(float kelembaban){  
   int hasil;  
   if(kelembaban>=0 && kelembaban<=25)  
     hasil=0;  
   else if(kelembaban>=26 && kelembaban<=69)  
     hasil=1;  
   else  
     hasil=2;  
 return hasil;  
 }  
 void setAturan(AC *objekAC, Sensor *objekSensor, string tableAturan[3][3], int rangeSuhu[3][2]){  
   cout << "\nmasuk setAturan\n" << endl;  
   string aturan = tableAturan[objekSensor->getTingkatJumlahOrang()][objekSensor->getTingkatKelembaban()];  
   int koma[2], ubahTemperatur, indeksRangeSuhu, ubahFanSpeed;  
   koma[0] = aturan.find_first_of(",");  
   koma[1] = aturan.find_last_of(",");  
   //ganti temperatur  
   ubahTemperatur = atoi(aturan.substr(0,koma[0]).c_str());  
   cout << "ubah temperatur : " << ubahTemperatur << endl;  
   indeksRangeSuhu = objekSensor->getTingkatJumlahOrang();  
   if(objekAC->getTemperatur()+ubahTemperatur>=rangeSuhu[indeksRangeSuhu][0] && objekAC->getTemperatur()+ubahTemperatur<=rangeSuhu[indeksRangeSuhu][1])  
     objekAC->setTemperatur(objekAC->getTemperatur()+ubahTemperatur);  
   cout << "temperatur in setAturan : " << objekAC->getTemperatur() << endl;  
   //set swing  
   if(aturan.substr(koma[1]+1,1).compare("0")==0)  
     objekAC->setSwing(false);  
   else  
     objekAC->setSwing(true);  
   //set fan speen  
   ubahFanSpeed = atoi(aturan.substr(koma[0]+1,koma[1]-koma[0]-1).c_str());  
   objekAC->setFanSpeend(ubahFanSpeed);  
   return;  
   //cout << aturan << endl;  
   //cout << aturan.substr(0,koma[0]) << endl;  
   //cout << aturan.substr(koma[0]+1,koma[1]-koma[0]-1) << endl;  
   //cout << aturan.substr(koma[1]+1,1) << endl;  
   //cout << atoi(aturan.substr(0,1).c_str())+atoi(aturan.substr(2,1).c_str()) << endl;  
 }  
 int main(){  
   string tableAturan[3][3] = { {"0,1,0","0,1,0","1,1,0"},  
             {"0,2,1","-1,2,1","-1,1,0"},  
             {"-2,3,1","-1,2,1","0,1,1"}};  
   //rangeSuhu digunakan untuk membatasi perubahan suhu berdasarkan jumlah orang, rendah sedang tinggi  
   int rangeSuhu[3][2] = { {24,27},  
               {19,23},  
               {15,18}};  
   int indeksRangeSuhu, nilaiTengahRangeSuhu, tingkatJumlahOrangSebelum;  
   Sensor objekSensor(-1);  
   AC objekAC;  
   int jumlahOrang, tingkatKelembaban, tingkatJumlahOrang;  
   float kelembaban;  
   while(true){  
     cout << "Program akan berjalan terus, tekan CTRL+C untuk exit" << endl;  
     cout << "Jumlah orang : " << endl;  
     cin >> jumlahOrang;  
     cout << "Kelembaban : " << endl;  
     cin >> kelembaban;  
     cout << endl;  
     if(objekSensor.getTingkatJumlahOrang()==-1){  
       objekAC.setPower(true, 0, false);  
     }  
     if(jumlahOrang==0){  
       objekAC.setPower(false, 0, false);  
       objekSensor.setTingkatJumlahOrangKelembaban(-1, -1);  
       break;  
     }  
     objekSensor.setJumlahOrangKelembaban(jumlahOrang, kelembaban);  
     tingkatJumlahOrangSebelum = objekSensor.getTingkatJumlahOrang();  
     objekSensor.setTingkatJumlahOrangKelembaban(checkJumlahOrang(objekSensor.getJumlahOrang()), checkKelembaban(objekSensor.getKelembaban()));  
     //objek baru terbentuk  
     if(tingkatJumlahOrangSebelum == -1 || tingkatJumlahOrangSebelum!=objekSensor.getTingkatJumlahOrang()){  
       indeksRangeSuhu = objekSensor.getTingkatJumlahOrang();  
       cout << "indeks range suhu : " << indeksRangeSuhu << endl;  
       nilaiTengahRangeSuhu = floor((rangeSuhu[indeksRangeSuhu][1]-rangeSuhu[indeksRangeSuhu][0])/2);  
       cout << "nilai tengah range suhu : " << nilaiTengahRangeSuhu << endl;  
       objekAC.setTemperatur(nilaiTengahRangeSuhu+rangeSuhu[indeksRangeSuhu][0]);  
       cout << "temperatur in if : " << objekAC.getTemperatur() << endl;  
     }  
     setAturan(&objekAC, &objekSensor, tableAturan, rangeSuhu);  
     cout << "\nTemperatur sekarang : " << objekAC.getTemperatur() << endl;  
     cout << "Fan Speed sekarang : " << objekAC.getFanSpeen() << endl;  
     cout << "Swing sekarang : " << objekAC.getSwing() << endl;  
     cout << endl << endl;  
   }  
 return 0;  
 }  

AC.h
 #ifndef AC_H_  
 #define AC_H_  
 class AC{  
   int temperatur, fanSpeed;  
   bool swing, power;  
   public:  
     void setTemperatur(int);  
     void setSwing(bool);  
     void setPower(bool, int, bool);  
     void setFanSpeend(int);  
     int getTemperatur(){ return temperatur; };  
     int getFanSpeen(){ return fanSpeed; };  
     int getSwing(){ return swing; };  
 };  
 void AC::setTemperatur(int temperatur){  
   this->temperatur = temperatur;  
 }  
 void AC::setSwing(bool swing){  
   this->swing = swing;  
 }  
 void AC::setFanSpeend(int fanSpeed){  
   this->fanSpeed = fanSpeed;  
 }  
 void AC::setPower(bool power, int fanSpeed, bool swing){  
   this->power = power;  
   this->fanSpeed = fanSpeed;  
   this->swing = swing;  
 }  
 #endif  

Sensor.h
 #ifndef Sensor_H_  
 #define Sensor_H_  
 class Sensor{  
   int jumlahOrang, tingkatJumlahOrang, tingkatKelembaban;  
   float kelembaban;  
   public:  
     Sensor(int);  
     void setTingkatJumlahOrangKelembaban(int,int);  
     void setJumlahOrangKelembaban(int, float);  
     int getJumlahOrang(){ return jumlahOrang; };  
     float getKelembaban(){ return kelembaban; };  
     int getTingkatJumlahOrang(){ return tingkatJumlahOrang;};  
     int getTingkatKelembaban(){ return tingkatKelembaban;};  
 };  
 void Sensor::setJumlahOrangKelembaban(int jumlahOrang, float kelembaban){  
   this->jumlahOrang = jumlahOrang;  
   this->kelembaban = kelembaban;  
 }  
 void Sensor::setTingkatJumlahOrangKelembaban(int tingkatJumlahOrang, int tingkatKelembaban){  
   this->tingkatJumlahOrang = tingkatJumlahOrang;  
   this->tingkatKelembaban = tingkatKelembaban;  
 }  
 Sensor::Sensor(int tingkatJumlahOrang){  
   this->tingkatJumlahOrang = tingkatJumlahOrang;  
 }  
 #endif  

Tidak ada komentar:

Posting Komentar