Components and supplies
1N4148 – General Purpose Fast Switching
Ultrasonic Sensor - HC-SR04 (Generic)
WS2812B LED Strip 1M IP30 5VDC
Arduino Nano R3
Capacitor 1000 µF
Through Hole Resistor, 470 ohm
Tools and machines
3D Printer (generic)
Soldering iron (generic)
Project description
Code
Arduino Code
arduino
1 2/* 3* Garage Parking Sensor - Published By Bob Torrence 4*/ 5#include <FastLED.h> 6#include <QuickStats.h> 7QuickStats stats; //initialize an instance of this class 8// defining the pins 9#define LED_PIN 7 10#define NUM_LEDS 15 11const int trigPin = 9; 12const int echoPin = 10; 13// defining variables 14CRGB leds[NUM_LEDS]; 15float duration; 16float durationarray[15]; 17int distance; 18int stopdistance=115; //parking position from sensor (CENTIMETERS) 19int startdistance=400; //distance from sensor to begin scan as car pulls in(CENTIMETERS) 20int increment=((startdistance-stopdistance)/15); 21void setup() { 22pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output 23pinMode(echoPin, INPUT); // Sets the echoPin as an Input 24FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); 25Serial.begin(9600); // Starts the serial communication 26} 27void loop() { 28 for (int i=0;i<=14;i++){ 29// Clears the trigPin 30digitalWrite(trigPin, LOW); 31delayMicroseconds(2); 32// Sets the trigPin on HIGH state for 10 micro seconds 33digitalWrite(trigPin, HIGH); 34delayMicroseconds(10); 35digitalWrite(trigPin, LOW); 36// Reads the echoPin, returns the sound wave travel time in microseconds 37durationarray[i] = pulseIn(echoPin, HIGH); 38distance= durationarray[i]*0.034/2; 39Serial.print(distance); 40Serial.print(" "); 41 } 42 duration = (stats.median(durationarray,15)); 43// Calculating the distance 44distance= duration*0.034/2; 45// Prints the distance on the Serial Monitor 46Serial.print("Distance: "); 47Serial.println(distance); 48 49if (distance<stopdistance){ 50 for (int i = 0; i <= 14; i++) { 51 leds[i] = CRGB ( 255, 0, 0); 52 FastLED.show(); 53 } 54} 55else 56if (distance<stopdistance+increment){ 57 for (int i = 1; i <= 14; i++) { 58 leds[i] = CRGB ( 0, 0, 0); 59 } 60 for (int i = 0; i <= 0; i++) { 61 leds[i] = CRGB ( 255, 255, 0); 62 } 63 FastLED.show(); 64 delay(50); 65} 66else 67if (distance<stopdistance+increment*2){ 68 for (int i = 2; i <= 14; i++) { 69 leds[i] = CRGB ( 0, 0, 0); 70 } 71 for (int i = 0; i <= 1; i++) { 72 leds[i] = CRGB ( 255, 255, 0); 73 } 74 FastLED.show(); 75 delay(50); 76} 77else 78if (distance<stopdistance+increment*3){ 79 for (int i = 3; i <= 14; i++) { 80 leds[i] = CRGB ( 0, 0, 0); 81 } 82 for (int i = 0; i <= 2; i++) { 83 leds[i] = CRGB ( 255, 255, 0); 84 } 85 FastLED.show(); 86 delay(50); 87} 88else 89if (distance<stopdistance+increment*4){ 90 for (int i = 4; i <= 14; i++) { 91 leds[i] = CRGB ( 0, 0, 0); 92 } 93 for (int i = 0; i <= 3; i++) { 94 leds[i] = CRGB ( 0, 255,0); 95 } 96 FastLED.show(); 97 delay(50); 98} 99else 100if (distance<stopdistance+increment*5){ 101 for (int i = 5; i <= 14; i++) { 102 leds[i] = CRGB ( 0, 0, 0); 103 } 104 for (int i = 0; i <= 4; i++) { 105 leds[i] = CRGB ( 0, 255,0); 106 } 107 FastLED.show(); 108 delay(50); 109} 110else 111if (distance<stopdistance+increment*6){ 112 for (int i = 6; i <= 14; i++) { 113 leds[i] = CRGB ( 0, 0, 0); 114 } 115 for (int i = 0; i <= 5; i++) { 116 leds[i] = CRGB ( 0, 255,0); 117 } 118 FastLED.show(); 119 delay(50); 120} 121else 122if (distance<stopdistance+increment*7){ 123 for (int i = 7; i <= 14; i++) { 124 leds[i] = CRGB ( 0, 0, 0); 125 } 126 for (int i = 0; i <= 6; i++) { 127 leds[i] = CRGB ( 0, 255,0); 128 } 129 FastLED.show(); 130 delay(50); 131} 132else 133if (distance<stopdistance+increment*8){ 134 for (int i = 8; i <= 14; i++) { 135 leds[i] = CRGB ( 0, 0, 0); 136 } 137 for (int i = 0; i <= 7; i++) { 138 leds[i] = CRGB ( 0, 255,0); 139 } 140 FastLED.show(); 141 delay(50); 142} 143else 144if (distance<stopdistance+increment*9){ 145 for (int i = 9; i <= 14; i++) { 146 leds[i] = CRGB ( 0, 0, 0); 147 } 148 for (int i = 0; i <= 8; i++) { 149 leds[i] = CRGB ( 0, 255,0); 150 } 151 FastLED.show(); 152 delay(50); 153} 154else 155if (distance<stopdistance+increment*10){ 156 for (int i = 10; i <= 14; i++) { 157 leds[i] = CRGB ( 0, 0, 0); 158 } 159 for (int i = 0; i <= 9; i++) { 160 leds[i] = CRGB ( 0, 255,0); 161 } 162 FastLED.show(); 163 delay(50); 164} 165else 166if (distance<stopdistance+increment*11){ 167 for (int i = 11; i <= 14; i++) { 168 leds[i] = CRGB ( 0, 0, 0); 169 } 170 for (int i = 0; i <= 10; i++) { 171 leds[i] = CRGB ( 0, 255,0); 172 } 173 FastLED.show(); 174 delay(50); 175} 176else 177if (distance<stopdistance+increment*12){ 178 for (int i = 12; i <= 14; i++) { 179 leds[i] = CRGB ( 0, 0, 0); 180 } 181 for (int i = 0; i <= 11; i++) { 182 leds[i] = CRGB ( 0, 255,0); 183 } 184 FastLED.show(); 185 delay(50); 186} 187else 188 189if (distance<stopdistance+increment*13){ 190 for (int i = 13; i <= 14; i++) { 191 leds[i] = CRGB ( 0, 0, 0); 192 } 193 for (int i = 0; i <= 12; i++) { 194 leds[i] = CRGB ( 0, 255,0); 195 } 196 FastLED.show(); 197 delay(50); 198} 199else 200if (distance<stopdistance+increment*14){ 201 for (int i = 14; i <= 14; i++) { 202 leds[i] = CRGB ( 0, 0, 0); 203 } 204 for (int i = 0; i <= 13; i++) { 205 leds[i] = CRGB ( 0, 255,0); 206 } 207 FastLED.show(); 208 delay(50); 209} 210else 211if (distance>=stopdistance+increment*14){ 212 for (int i = 0; i <= 14; i++) { 213 leds[i] = CRGB ( 0, 255,0); 214 } 215 FastLED.show(); 216 delay(50); 217} 218} 219
Arduino Code
arduino
1 2/* 3* Garage Parking Sensor - Published By Bob Torrence 4*/ 5#include <FastLED.h> 6#include <QuickStats.h> 7QuickStats stats; //initialize an instance of this class 8// defining the pins 9#define LED_PIN 7 10#define NUM_LEDS 15 11const int trigPin = 9; 12const int echoPin = 10; 13// defining variables 14CRGB leds[NUM_LEDS]; 15float duration; 16float durationarray[15]; 17int distance; 18int stopdistance=115; //parking position from sensor (CENTIMETERS) 19int startdistance=400; //distance from sensor to begin scan as car pulls in(CENTIMETERS) 20int increment=((startdistance-stopdistance)/15); 21void setup() { 22pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output 23pinMode(echoPin, INPUT); // Sets the echoPin as an Input 24FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); 25Serial.begin(9600); // Starts the serial communication 26} 27void loop() { 28 for (int i=0;i<=14;i++){ 29// Clears the trigPin 30digitalWrite(trigPin, LOW); 31delayMicroseconds(2); 32// Sets the trigPin on HIGH state for 10 micro seconds 33digitalWrite(trigPin, HIGH); 34delayMicroseconds(10); 35digitalWrite(trigPin, LOW); 36// Reads the echoPin, returns the sound wave travel time in microseconds 37durationarray[i] = pulseIn(echoPin, HIGH); 38distance= durationarray[i]*0.034/2; 39Serial.print(distance); 40Serial.print(" "); 41 } 42 duration = (stats.median(durationarray,15)); 43// Calculating the distance 44distance= duration*0.034/2; 45// Prints the distance on the Serial Monitor 46Serial.print("Distance: "); 47Serial.println(distance); 48 49if (distance<stopdistance){ 50 for (int i = 0; i <= 14; i++) { 51 leds[i] = CRGB ( 255, 0, 0); 52 FastLED.show(); 53 } 54} 55else 56if (distance<stopdistance+increment){ 57 for (int i = 1; i <= 14; i++) { 58 leds[i] = CRGB ( 0, 0, 0); 59 } 60 for (int i = 0; i <= 0; i++) { 61 leds[i] = CRGB ( 255, 255, 0); 62 } 63 FastLED.show(); 64 delay(50); 65} 66else 67if (distance<stopdistance+increment*2){ 68 for (int i = 2; i <= 14; i++) { 69 leds[i] = CRGB ( 0, 0, 0); 70 } 71 for (int i = 0; i <= 1; i++) { 72 leds[i] = CRGB ( 255, 255, 0); 73 } 74 FastLED.show(); 75 delay(50); 76} 77else 78if (distance<stopdistance+increment*3){ 79 for (int i = 3; i <= 14; i++) { 80 leds[i] = CRGB ( 0, 0, 0); 81 } 82 for (int i = 0; i <= 2; i++) { 83 leds[i] = CRGB ( 255, 255, 0); 84 } 85 FastLED.show(); 86 delay(50); 87} 88else 89if (distance<stopdistance+increment*4){ 90 for (int i = 4; i <= 14; i++) { 91 leds[i] = CRGB ( 0, 0, 0); 92 } 93 for (int i = 0; i <= 3; i++) { 94 leds[i] = CRGB ( 0, 255,0); 95 } 96 FastLED.show(); 97 delay(50); 98} 99else 100if (distance<stopdistance+increment*5){ 101 for (int i = 5; i <= 14; i++) { 102 leds[i] = CRGB ( 0, 0, 0); 103 } 104 for (int i = 0; i <= 4; i++) { 105 leds[i] = CRGB ( 0, 255,0); 106 } 107 FastLED.show(); 108 delay(50); 109} 110else 111if (distance<stopdistance+increment*6){ 112 for (int i = 6; i <= 14; i++) { 113 leds[i] = CRGB ( 0, 0, 0); 114 } 115 for (int i = 0; i <= 5; i++) { 116 leds[i] = CRGB ( 0, 255,0); 117 } 118 FastLED.show(); 119 delay(50); 120} 121else 122if (distance<stopdistance+increment*7){ 123 for (int i = 7; i <= 14; i++) { 124 leds[i] = CRGB ( 0, 0, 0); 125 } 126 for (int i = 0; i <= 6; i++) { 127 leds[i] = CRGB ( 0, 255,0); 128 } 129 FastLED.show(); 130 delay(50); 131} 132else 133if (distance<stopdistance+increment*8){ 134 for (int i = 8; i <= 14; i++) { 135 leds[i] = CRGB ( 0, 0, 0); 136 } 137 for (int i = 0; i <= 7; i++) { 138 leds[i] = CRGB ( 0, 255,0); 139 } 140 FastLED.show(); 141 delay(50); 142} 143else 144if (distance<stopdistance+increment*9){ 145 for (int i = 9; i <= 14; i++) { 146 leds[i] = CRGB ( 0, 0, 0); 147 } 148 for (int i = 0; i <= 8; i++) { 149 leds[i] = CRGB ( 0, 255,0); 150 } 151 FastLED.show(); 152 delay(50); 153} 154else 155if (distance<stopdistance+increment*10){ 156 for (int i = 10; i <= 14; i++) { 157 leds[i] = CRGB ( 0, 0, 0); 158 } 159 for (int i = 0; i <= 9; i++) { 160 leds[i] = CRGB ( 0, 255,0); 161 } 162 FastLED.show(); 163 delay(50); 164} 165else 166if (distance<stopdistance+increment*11){ 167 for (int i = 11; i <= 14; i++) { 168 leds[i] = CRGB ( 0, 0, 0); 169 } 170 for (int i = 0; i <= 10; i++) { 171 leds[i] = CRGB ( 0, 255,0); 172 } 173 FastLED.show(); 174 delay(50); 175} 176else 177if (distance<stopdistance+increment*12){ 178 for (int i = 12; i <= 14; i++) { 179 leds[i] = CRGB ( 0, 0, 0); 180 } 181 for (int i = 0; i <= 11; i++) { 182 leds[i] = CRGB ( 0, 255,0); 183 } 184 FastLED.show(); 185 delay(50); 186} 187else 188 189if (distance<stopdistance+increment*13){ 190 for (int i = 13; i <= 14; i++) { 191 leds[i] = CRGB ( 0, 0, 0); 192 } 193 for (int i = 0; i <= 12; i++) { 194 leds[i] = CRGB ( 0, 255,0); 195 } 196 FastLED.show(); 197 delay(50); 198} 199else 200if (distance<stopdistance+increment*14){ 201 for (int i = 14; i <= 14; i++) { 202 leds[i] = CRGB ( 0, 0, 0); 203 } 204 for (int i = 0; i <= 13; i++) { 205 leds[i] = CRGB ( 0, 255,0); 206 } 207 FastLED.show(); 208 delay(50); 209} 210else 211if (distance>=stopdistance+increment*14){ 212 for (int i = 0; i <= 14; i++) { 213 leds[i] = CRGB ( 0, 255,0); 214 } 215 FastLED.show(); 216 delay(50); 217} 218} 219
Downloadable files
Wiring Diagram
- Updated 4-21-19 to correct Diode direction
Wiring Diagram
Wiring Diagram
- Updated 4-21-19 to correct Diode direction
Wiring Diagram
Documentation
Lens
Lens
Outside Rail
Outside Rail
Case
Case
Cover
Cover
Lens
Lens
Inside Rail
Inside Rail
HoldDown
HoldDown
Ultrasonic HoldDown
Ultrasonic HoldDown
End Cap
End Cap
HoldDown
HoldDown
Case
Case
Ultrasonic HoldDown
Ultrasonic HoldDown
Outside Rail
Outside Rail
Inside Rail
Inside Rail
Cover
Cover
Comments
Only logged in users can leave comments