#include <Servo.h> // include the servo library to control servo easier
Servo servo1; // naming the servo so the arduino recognize our servo
int LED1 = 10; // pin 2 for first led
int LED2 = 11; // pin 3 for second led
int LED3 = 12; // pin 4 for third led
int LED4 = 13; // pin 5 for forth led
int trigPin = 6; // trig pin for ultrasound emiter goes to pin 6
int echoPin = 7; // echo pin for ultrasound receiver goes to pin 7
int distance; // creating variables for distance
long duration; // creating variables for large number using long function
int motionSensor = 8; // signal pin of motion sensor goes to pin 8
int state;
int secondState;
void setup() {
// put your setup code here, to run once:
servo1.attach(9); // servo is attach in pin 9
pinMode(motionSensor,INPUT);// setting motion sensor for input to receive data
pinMode(LED1,OUTPUT); // setting led for output to generate voltage
pinMode(LED2,OUTPUT); // setting led for output to generate voltage
pinMode(LED3,OUTPUT); // setting led for output to generate voltage
pinMode(LED4,OUTPUT); // setting led for output to generate voltage
pinMode(trigPin,OUTPUT); // setting trig pin for output to emit ultrasound wave
pinMode(echoPin,INPUT); // setting echo pin for input to receive ultrasound wave
}
void loop() {
///////////ULTRASOUND DISTANCE DETECTOR////////////////
digitalWrite(trigPin,LOW); // giving low voltage to trig pin for 2 microseconds
delay(20);
digitalWrite(trigPin,HIGH); // giving voltage to trig pin to emit ultrasound wave
delay(100);
digitalWrite(trigPin,LOW); // turning off trig pin again
duration = pulseIn(echoPin,HIGH); // read the time taken for echo pin to receive ultrasound wave
distance = duration *0.034/2; // velocity of sound is 0.034cm/µs,hence the distance = velocity*time /2(time needed for signal to bounce back)
Serial.begin(9600);
//////////LED SHOWING CAPACITY OF DUSTBIN/////////////
for (int i = 0; i <= 4; i++) {
state = i;
while (state == 0) {
if (distance > 20) {
digitalWrite(LED4,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED1,LOW);
getStateValue ();
}
break;
}
while (state == 1) {
if (distance > 15 && distance <= 20){
digitalWrite(LED4,HIGH);
digitalWrite(LED3,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED1,LOW);
getStateValue ();
}
break;
}
while (state == 2) {
if (distance > 10 && distance <= 15){
digitalWrite(LED4,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED2,LOW);
digitalWrite(LED1,LOW);
getStateValue ();
}
break;
}
while (state == 3) {
if (distance > 5 && distance <= 10){
digitalWrite(LED4,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED1,LOW);
getStateValue ();
}
break;
}
while (state == 4) {
if (distance <= 5){
digitalWrite(LED4,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED1,HIGH);
getStateValue ();
}
break;
}
secondState = getStateValue ();
if (secondState != state) {
Serial.println (secondState);
state = secondState;
}
}
//////////////////MOTION SENSOR////////////////////
int sensorValue = digitalRead(motionSensor);
if(sensorValue == 1){
servo1.write(180);
if(distance<10){
servo1.write(180);
}
}
else {
servo1.write(0);
}
}
int getStateValue () {
if (state == 0 && distance > 20) {
//Serial.println(0);
state = 0;
}
else if (state == 1 && distance > 15 && distance <= 20) {
//Serial.println(25);
state = 1;
}
else if (state == 2 && distance > 10 && distance <= 15) {
//Serial.println(50);
state = 2;
}
else if (state == 3 && distance > 5 && distance <= 10) {
//Serial.println(75);
state = 3;
}
else if (state == 4 && distance <= 5) {
//Serial.println(100);
state = 4;
}
return state;
}
I wanted my code to print
0
25
50
75
100
in the serial monitor
But it seems to be not printing
I'm still quite new to this
Can someone pls take a look what's wrong with my code?