Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_NeoPixel.h>
- #include<LiquidCrystal.h>
- #include <Servo.h>
- Servo myservo;
- int ledPin= 3;
- int ledNo= 12;
- Adafruit_NeoPixel strip= Adafruit_NeoPixel(ledNo,ledPin,NEO_RGB+NEO_KHZ800);
- LiquidCrystal lcd(12, 11, 5, 4, 9, 7);
- int buzzerPin= 2;
- int echoPin= 6;
- int trigPin= 5;
- int minDistance = 100;
- int maxDistance = 300;
- const int servo = 5;
- const int servoTrigPin = 10;
- const int servoEchoPin = 13;
- long duration;
- int distance;
- int pos = 0;
- void setup()
- {
- lcd.begin(16, 2);
- pinMode(buzzerPin, OUTPUT);
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- strip.begin();
- for(int i = 0; i < ledNo; i++)
- {
- strip.setPixelColor(i,strip.Color(0,0,0));
- }
- strip.show();
- pinMode(servoTrigPin, OUTPUT);
- pinMode(servoEchoPin, INPUT);
- myservo.attach(servo);
- myservo.write(0);
- Serial.begin(9600);
- }
- void socialDistance() {
- int distance = calcDistance();
- Serial.println(distance);
- int ledsToGlow = map(distance, minDistance, maxDistance, ledNo, 1);
- Serial.println(ledsToGlow);
- if(ledsToGlow == 12)
- {
- digitalWrite(buzzerPin, HIGH);
- }
- else
- {
- digitalWrite(buzzerPin, LOW);
- }
- for(int i = 0; i < ledsToGlow; i++)
- {
- if(i < 4)
- {
- strip.setPixelColor(i,strip.Color(50,0,0));//green,red,blue
- }
- else if(i >= 4 && i < 8)
- {
- strip.setPixelColor(i,strip.Color(50,0,50));//green,red,blue
- }
- else if(i >= 8 && i < 12)
- {
- strip.setPixelColor(i,strip.Color(0,50,0));//green,red,blue
- }
- }
- for(int i = ledsToGlow; i < ledNo; i++)
- {
- strip.setPixelColor(i,strip.Color(0,0,0));
- }
- strip.show();
- delay(50);
- }
- void LED() {
- lcd.setCursor(0,0);
- lcd.print ("Unsafe Distance ");
- delay (100);
- lcd.setCursor(0,1);
- lcd.print ("Be 3 Feet Apart!");
- delay (100);
- lcd.setCursor (0,0);
- lcd.print ("COVID must stop!");
- delay (500);
- lcd.setCursor (0,1);
- lcd.print ("Wash Your HAND!!");
- delay (500);
- }
- void handWash()
- {
- digitalWrite(servoTrigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(servoTrigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(servoTrigPin, LOW);
- duration = pulseIn(servoEchoPin, HIGH);
- distance = duration * 0.034 / 2;
- Serial.print("Distance: ");
- Serial.println(distance);
- if (distance < 15) {
- myservo.write(45);
- delay(100);
- myservo.write(90);
- delay(100);
- myservo.write(135);
- delay(100);
- myservo.write(180);
- delay(1000);
- myservo.write(0);
- delay(1000);
- }
- }
- void loop()
- {
- socialDistance();
- LED();
- handWash();
- }
- int calcDistance()
- {
- long distance,duration;
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration = pulseIn(echoPin, HIGH);
- distance = duration/29/2;
- if(distance >= maxDistance)
- {
- distance = maxDistance;
- }
- if(distance <= minDistance)
- {
- distance = minDistance;
- }
- return distance;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement