0

Iklan Tengah Artikel 1

Home  ›  Arduino

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
Theme
Share
Additional JS