Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // PIN I/O
- int pinPH = 0;
- int PinLM35 = 1;
- int PinPing = 7;
- int PinPWM = 9;
- int PinValve = 13;
- int PinMotor = 12;
- int PinMotor1PH = 5;
- int PinMotor2PH = 6;
- // Deklarasi Variabel sensor PH
- float phSense = 0;
- float refvoltage = 3.5;
- boolean jampagi = false;
- //Deklarasi sensor temperature
- float temperature;
- int sensorSuhu = 0; // the sensor value
- int sensorMin = 1023; // minimum sensor value
- int sensorMax = 0; // maximum sensor value
- int kalibrasiTemp = 70;
- // Deklarasi Sensor PING
- const int hmax = 5; //5 cm
- const int tinggisensor = 150;
- const int batasketinggian = 70;
- int ketinggian;
- int buttonState = 11;
- void setup()
- {
- Serial.begin(9600);
- // Setup Sensor temperature & PWM
- while (millis() < 5000) {
- sensorSuhu = analogRead(PinLM35);
- sensorSuhu = sensorSuhu;
- if (sensorSuhu > sensorMax) {
- sensorMax = sensorSuhu;
- }
- if (sensorSuhu < sensorMin) {
- sensorMin = sensorSuhu;
- }
- // Akhir Setup Sensor temperature & PWM
- }
- }
- void loop(){
- buttonState = digitalRead(11);
- if (buttonState == HIGH) {
- jampagi = true;
- Serial.println("Pagi Jam 8 ");
- }
- else {
- jampagi = false;
- Serial.println("Bukan Pagi ");
- }
- //Baca PH
- float nilaisensorph;
- nilaisensorph = bacaph();
- Serial.print("PH: ");
- Serial.println(nilaisensorph);
- if (nilaisensorph < 6) {
- digitalWrite(PinMotor1PH, HIGH); //Nyalakan Motor1
- Serial.println("Nyalakan Motor1-PH");
- }
- if (nilaisensorph >= 7) {
- digitalWrite(PinMotor1PH, LOW); //Nyalakan Motor1
- Serial.println("Matikan Motor1-PH");
- }
- if (nilaisensorph > 8) {
- digitalWrite(PinMotor2PH, HIGH); //Nyalakan Motor2
- Serial.println("Nyalakan Motor2-PH");
- }
- if (nilaisensorph <= 7) {
- digitalWrite(PinMotor2PH, LOW); //Nyalakan Motor2
- Serial.println("Matikan Motor2-PH");
- }
- //Baca temperature
- float nilaitemperature;
- nilaitemperature = BacatemperaturePWM();
- //Baca Ketinggian Air Asusmsi ketinggian sensor ke permukaan 100 cm
- int jarak;
- jarak = bacajarak();
- Serial.print("Ketinggian: ");
- Serial.println(jarak);
- //delay (500);
- //Cek Jarak jika kurang dari batas ketinggian
- if (jarak < batasketinggian) {
- digitalWrite(PinMotor, HIGH); //Nyalakan Motor
- Serial.println("Nyalakan Motor");
- }
- //Akhir Cek Jarak jika kurang dari batas ketinggian
- //If Jarak
- if (jarak > 100) {
- digitalWrite(PinMotor, LOW); //Matikan Motor
- Serial.println("Matikan Motor");
- }
- //Cek Jam
- if (jampagi == true) { // Jika Jam 8
- digitalWrite(PinValve,HIGH); //Buka Valve
- Serial.println("Buka Valve");
- }
- if (jarak < batasketinggian) {
- digitalWrite(PinValve, LOW); //Tutup Valve
- Serial.println("Tutup Valve");
- // jampagi == false;
- }
- // Akhir Cek Jam
- Serial.println("============================================");
- delay(1000);
- }
- float bacaph()
- {
- float result;
- int samples = 20;
- int aRead = 0;
- for (int i = 0; i < samples ; i++)
- {
- aRead += analogRead(pinPH);
- }
- float voltage = 5.0 * aRead/ (1023 * samples); // assuming 5V reference
- phSense = 14 - voltage/0.25;
- result = phSense;
- return result;
- }
- int bacajarak(){
- int result;
- long duration, cm;
- pinMode(PinPing, OUTPUT);
- digitalWrite(PinPing, LOW);
- delayMicroseconds(2);
- digitalWrite(PinPing, HIGH);
- delayMicroseconds(5);
- digitalWrite(PinPing, LOW);
- pinMode(PinPing, INPUT);
- duration = pulseIn(PinPing, HIGH);
- cm = mmtocm(duration);
- ketinggian = tinggisensor - cm;
- result = ketinggian;
- }
- long mmtocm(long microseconds)
- {
- return microseconds / 29 / 2;
- }
- float BacatemperaturePWM(){
- float temperature;
- temperature = analogRead(PinLM35); //read the value from the sensor
- temperature = (5.0 * temperature * 100.0)/1024.0; //convert the analog data to temperature in Celcius
- sensorSuhu = analogRead(PinLM35);
- sensorSuhu = map(sensorSuhu, sensorMin, kalibrasiTemp, 0, 255);
- sensorSuhu = constrain(sensorSuhu, 0, 255);
- analogWrite(PinPWM, sensorSuhu);
- Serial.print("Suhu: " );
- Serial.println(temperature);
- Serial.print("PWM: " );
- Serial.println(sensorSuhu);
- return temperature;
- }
- //MOTOR ke-1: Jika jam 08:00 maka nyalakan Motor1 untuk membuang air tambak sebanyak sampai ketinggian air mencapai 70 cm (Asumsi ketinggian max air 100 cm)
- // Motor ke-1 akan mati secara otomatis jika ketinggian air mencapai 70 cm
- //MOTOR ke-2: Jika ketinggian air <70 untuk mengisi tambak dengan air baru
- // Motor ke-2 akan mati ketika air mencapai ketinggian 100 cm
Advertisement
Add Comment
Please, Sign In to add comment