1#include <Servo.h>
2
3Servo myservo;
4
5const int trigPin = 11;
6const int echoPin = 12;
7
8const int redPin = 3;
9const int greenPin = 5;
10const int bluePin = 6;
11
12const int buzzerPin = 8;
13
14float distance = 0;
15
16const int switchPin = 7;
17
18
19void setup() {
20 pinMode(switchPin, INPUT_PULLUP);
21 Serial.begin (9600);
22
23 pinMode(trigPin, OUTPUT);
24 pinMode(echoPin, INPUT);
25
26
27 pinMode(redPin, OUTPUT);
28 pinMode(greenPin, OUTPUT);
29 pinMode(bluePin, OUTPUT);
30 pinMode(buzzerPin, OUTPUT);
31
32 myservo.attach(9);
33
34}
35
36void loop() {
37
38 if (digitalRead(7) == LOW) {
39 myservo.write(0);
40 delay(400);
41 distance = getDistance();
42
43 Serial.print(distance);
44 Serial.println(" in");
45
46 if (distance <= 20) {
47
48
49 analogWrite(redPin, 255);
50 analogWrite(greenPin, 0);
51 analogWrite(bluePin, 0);
52
53 tone(buzzerPin, 272);
54 delay(100);
55
56 noTone(buzzerPin);
57 delay(100);
58
59 } else if (20 < distance && distance < 30) {
60
61
62 analogWrite(redPin, 255);
63 analogWrite(greenPin, 50);
64 analogWrite(bluePin, 0);
65
66 } else if (30 < distance && distance < 40) {
67
68
69 analogWrite(redPin, 9);
70 analogWrite(greenPin, 255);
71 analogWrite(bluePin, 0);
72 } else {
73
74 analogWrite(redPin, 0);
75 analogWrite(greenPin, 0);
76 analogWrite(bluePin, 255);
77 }
78
79 delay(50);
80 } else {
81 myservo.write(128);
82 analogWrite(redPin, 0);
83 analogWrite(greenPin, 0);
84 analogWrite(bluePin, 0);
85 }
86}
87
88
89
90
91float getDistance()
92{
93 float echoTime;
94 float calculatedDistance;
95
96
97 digitalWrite(trigPin, HIGH);
98 delayMicroseconds(10);
99 digitalWrite(trigPin, LOW);
100
101 echoTime = pulseIn(echoPin, HIGH);
102
103
104 calculatedDistance = echoTime / 148.0;
105
106 return calculatedDistance;
107}
bob-easyeda
4 months ago
Hi, your project is so amazing! Are you interested in OSHWLab Stars :https://oshwlab.com/activities/spark2023 we are offering up to $5000 in coupons for each entry to cover all your fabrication costs.