Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 );
- int pingPin = 2;
- int redLED = 3;
- int greenLED = 12;
- int blueLED = 11;
- void setup() {
- pinMode(redLED, OUTPUT);
- pinMode(greenLED, OUTPUT);
- pinMode(blueLED, OUTPUT);
- // set up the LCD's number of columns and rows:
- lcd.begin(16, 2);
- //lcd.setCursor(2, 0);
- //lcd.print("COMPANYY NAME);
- //lcd.setCursor(3, 1);
- //lcd.print("Jib Sensor");
- //delay(5000);
- }
- void loop(){
- // establish variables for duration of the ping,
- // and the distance result in inches and centimeters:
- long duration, inches, cm;
- // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
- // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
- pinMode(pingPin, OUTPUT);
- digitalWrite(pingPin, LOW);
- delayMicroseconds(2);
- digitalWrite(pingPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(pingPin, LOW);
- // The same pin is used to read the signal from the PING))): a HIGH
- // pulse whose duration is the time (in microseconds) from the sending
- // of the ping to the reception of its echo off of an object.
- pinMode(pingPin, INPUT);
- duration = pulseIn(pingPin, HIGH);
- // convert the time into a human readable distance
- inches = microsecondsToInches(duration);
- cm = microsecondsToCentimeters(duration);
- //High Warning
- if (inches > 6 && inches < 18){
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Caution - HIGH");
- lcd.setCursor(0, 1);
- lcd.print(inches);
- lcd.print(" in");
- setColor(255, 255, 0); //Yellow
- delay(1500);
- setColor(0, 0, 0); //Off
- delay(500);
- }
- //High DANGER
- else if (inches < 6){
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("TOO HIGH!");
- lcd.setCursor(0, 1);
- lcd.print(inches);
- lcd.print(" in");
- setColor(255, 0, 0); //Red
- delay(150);
- setColor(0, 0, 0); //Off
- }
- //Low Warning
- else if (inches < 48 && inches >60){
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Caution - LOW");
- lcd.setCursor(0, 1);
- lcd.print(inches);
- lcd.print(" in");
- setColor(255, 255, 0); //Yellow
- delay(1500);
- setColor(0, 0, 0); //Off
- delay(500);
- }
- //Low DANGER
- else if (inches > 60){
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("TOO LOW!");
- lcd.setCursor(0, 1);
- lcd.print(inches);
- lcd.print(" in");
- setColor(255, 0, 0); //Red
- delay(150);
- setColor(0, 0, 0); //Off
- }
- else {
- // clear lcd content
- lcd.clear();
- // set the cursor to column 0, line 0
- // (note: line 1 is the second row, since counting begins with 0):
- lcd.setCursor(0, 0);
- lcd.print("Current Distance");
- lcd.setCursor(0, 1);
- lcd.print(inches);
- lcd.print(" in");
- setColor(0, 255, 0); //Green
- }
- //delay(100);
- }
- long microsecondsToInches(long microseconds){
- // According to Parallax's datasheet for the PING))), there are
- // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
- // second). This gives the distance travelled by the ping, outbound
- // and return, so we divide by 2 to get the distance of the obstacle.
- return microseconds / 74 / 2;}
- long microsecondsToCentimeters(long microseconds){
- // The speed of sound is 340 m/s or 29 microseconds per centimeter.
- // The ping travels out and back, so to find the distance of the
- // object we take half of the distance travelled.
- return microseconds / 29 / 2;}
- void setColor(int red, int green, int blue)
- {
- analogWrite(redLED, red);
- analogWrite(greenLED, green);
- analogWrite(blueLED, blue);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement