1#include <LiquidCrystal.h>
2#include <OneWire.h>
3#include <DallasTemperature.h>
4#define ONE_WIRE_BUS 6
5
6OneWire oneWire(ONE_WIRE_BUS);
7
8DallasTemperature sensors(&oneWire);
9
10LiquidCrystal LCD(12, 11, 5, 4, 3, 2);
11
12int trigPin = 9;
13int echoPin = 7;
14int myCounter = 0;
15
16float pingTime;
17float targetDistance;
18float speedOfSound = 776.5;
19
20
21
22void setup() {
23
24 Serial.begin(9600);
25 pinMode(trigPin, OUTPUT);
26 pinMode(echoPin, INPUT);
27 LCD.begin(16, 2);
28 LCD.setCursor(0, 0);
29 LCD.print("Distance:");
30
31 sensors.begin();
32
33 pinMode(8, OUTPUT);
34 pinMode(10, OUTPUT);
35 pinMode(13, OUTPUT);
36}
37void loop() {
38
39
40 digitalWrite(trigPin, LOW);
41 delayMicroseconds(2000);
42 digitalWrite(trigPin, HIGH);
43 delayMicroseconds(15);
44 digitalWrite(trigPin, LOW);
45 delayMicroseconds(10);
46
47 pingTime = pulseIn(echoPin, HIGH);
48 pingTime = pingTime / 1000000;
49 pingTime = pingTime / 3600;
50 targetDistance = speedOfSound * pingTime;
51 targetDistance = targetDistance / 2;
52 targetDistance = targetDistance * 160934.4;
53 sensors.requestTemperatures();
54
55
56 LCD.setCursor(10, 0);
57 LCD.print(" ");
58 LCD.setCursor(10, 0);
59 LCD.print((int) (targetDistance + 0.5));
60 LCD.print("cm ");
61 LCD.setCursor(0, 1);
62 LCD.print(" ");
63 LCD.setCursor(0, 1);
64
65
66 if (targetDistance > 40) {
67 LCD.print("LEV LOW ");
68 LCD.print(sensors.getTempCByIndex(0));
69 LCD.print((char)223);
70 LCD.print ("C");
71 }
72 else if (targetDistance < 40 && targetDistance > 20) {
73 LCD.print("LEV MED ");
74 LCD.print(sensors.getTempCByIndex(0));
75 LCD.print((char)223);
76 LCD.print ("C");
77
78 }
79 else (targetDistance < 20); {
80 LCD.print ("LEV HIGH ");
81 LCD.print(sensors.getTempCByIndex(0));
82 LCD.print((char)223);
83 LCD.print ("C");
84 }
85
86 delay(2000);
87
88
89 if (targetDistance > 40) {
90 digitalWrite (13, HIGH);
91 }
92 else {
93 digitalWrite(13, LOW);
94 }
95
96 if (targetDistance < 40 && targetDistance > 20) {
97 digitalWrite (8, HIGH);
98 }
99 else {
100 digitalWrite(8, LOW);
101 }
102
103 if (targetDistance < 20) {
104 digitalWrite(10, HIGH);
105 delay(2000);
106 digitalWrite(10, LOW);
107 }
108
109 else {
110 digitalWrite(10, LOW);
111 }
112
113
114 }
115
116
117