Program lampu tangga otomatis

/* program lampu otomatis

-alat-

sensor ultasonik, sensor pir, led strip 12v

*/

#define pirPin D2

#define relay D3

#define trig D5

#define echo D4

#define tring2 D6

#define echo2 D7

long durasi1,durasi2,jarak1,jarak2;

unsigned long hitungan_milis;

unsigned long milis_sekarang;

const unsigned long nilai =1000;

// Membuat variable

int val = 0;

bool motionState = false; // dimulai dari tidak ada gerakan

void setup() {

  pinMode(relay, OUTPUT);

  pinMode(pirPin, INPUT);

  pinMode(trig, OUTPUT);

  pinMode(echo, INPUT);

  pinMode(tring2, OUTPUT);

  pinMode(echo2, INPUT);

    hitungan_milis;

  Serial.begin(115200);

}

void loop() {

  milis_sekarang= millis();

//ultrasonik 1 (tangga atas)

  digitalWrite(trig, LOW);

  delayMicroseconds(8);

  digitalWrite(trig, HIGH);

  delayMicroseconds(8);

  digitalWrite(trig, LOW);

  delayMicroseconds(8);

 //ultrasonik 2 (tangga bawah)

  digitalWrite(tring2, LOW);

  delayMicroseconds(8);

  digitalWrite(tring2, HIGH);

  delayMicroseconds(8);

  digitalWrite(tring2, LOW);

  delayMicroseconds(8);

 durasi1 = pulseIn(echo, HIGH);

 durasi2 = pulseIn(echo2, HIGH);

 jarak1 = (durasi1 / 2) / 29.1;

 jarak2 = (durasi2/ 2) /35.1;

  //serial menampilkan jarak tangga atas

 Serial.print(jarak1);

 Serial.println("cm |tangga atas");

  //serial menampilkan jarak tangga bawah

 Serial.print(jarak2);

 Serial.println("cm | tangga bawah");

    

   if (milis_sekarang - hitungan_milis >=1000){

   hitungan_milis=milis_sekarang;

    if(jarak1 <=100 || jarak2 <=50){

    digitalWrite(relay, LOW);

     Serial.println("lampu hidup");

    delay(35000);

    digitalWrite(relay, HIGH);

    //matikan lampu

    }

    else{digitalWrite(relay, HIGH);

     Serial.println("lampu mati");

      }

//delay(500);

   }

 

    /*

  //Membaca pirPin dan simpan sebagai val:

  val = digitalRead(pirPin);

  // Jika gerakan terdeteksi (pirPin = HIGH), lakukan hal berikut:

  if (val == HIGH) {

    digitalWrite(relay, HIGH);

    // Ubah status gerakan menjadi true (gerakan terdeteksi)

    if (motionState == false) {

      Serial.println("gerakan terdeteksi");

    delay(35000);

      motionState = true;

    }

  }

  // Jika tidak ada gerakan yang terdeteksi (pirPin = LOW), lakukan hal berikut:

  else {

    digitalWrite(relay, LOW);

    // Ubah status gerakan ke false (tidak ada gerakan)

    if (motionState == true) {

      Serial.println("tidak ada pergerakan");

      motionState = false;

    }

  }

    */

}


/*

*Program Revisi versi 3

*==Bahan : ==

* 2 buah sensor ultrasonik

* 1 relay 2channel

* Nodemcu

* LED strip 12v

* Power suplay 

*/




###$##############

Program v2 



/* program lampu otomatis

-alat-

sensor ultasonik, sensor pir, led strip 12v

*/


//ultrasonic 1

#define echoPin1 D2

#define tringPin1 D1

int jarak1 =0;


//ultrasonic 2

#define echoPin2 D4

#define tringPin2 D5

int jarak2 =0;


#define pirPin D2

#define relay D3



long durasi1,durasi2;


unsigned long hitungan_milis;

unsigned long milis_sekarang;

const unsigned long nilai =1000;

// Membuat variable 

int val = 0;

bool motionState = false; // dimulai dari tidak ada gerakan



void setup() {

pinMode(relay, OUTPUT);

pinMode(pirPin, INPUT);


//ultrasonik 1&2

pinMode(tringPin1, OUTPUT);

pinMode(echoPin1, INPUT);

pinMode(tringPin2, OUTPUT);

pinMode(echoPin2, INPUT);


hitungan_milis;

Serial.begin(115200);

}


void loop() {

milis_sekarang= millis();

//ultrasonik tangga atas

jarak1 = getDistance(tringPin1, echoPin1);

printDistance(1, jarak1);


//ultrasonik tangga bawah

jarak2 = getDistance(tringPin2, echoPin2);

printDistance(2, jarak2);




if (milis_sekarang - hitungan_milis >=1000){

hitungan_milis=milis_sekarang;

if(jarak1 <=100 || jarak2 <=50){

digitalWrite(relay, LOW);

Serial.println("lampu hidup");

delay(35000);

digitalWrite(relay, HIGH);

//matikan lampu

}


else{digitalWrite(relay, HIGH);

Serial.println("lampu mati");

}

//delay(500);



}

/* =========° */


int getDistance (int tringPin, int echoPin){


 digitalWrite(tringPin, HIGH);

 delayMicroseconds(10);

 digitalWrite(tringPin, LOW);

 unsigned long pulseTime = pulseIn(echoPin, HIGH);

 int distance = pulseTime/58;

 return distance;


}


 void printDistance(int id, int dist){

 

     Serial.print(id);

     Serial.print("--->");  

    Serial.print(dist, DEC);

    Serial.println(" cm");

   

 }






Posting Komentar

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.