Components and supplies
Ultrasonic Sensor - HC-SR04 (Generic)
Breadboard (generic)
Shift Register- Serial to Parallel
Arduino Mega 2560
LED (generic)
Project description
Code
Complete_Ultrasonic.ino
arduino
1/* 2 created by Boris Dusnoki, https://www.youtube.com/channel/UCgOEgQpu1thY7D-GzO5vdeQ 3 Distance Sensor with graph and variable sound frequency and delay 4*/ 5int tonePin = 8; // buzzer pin 6int trigPin = 9; // sensor trigger pin 7int echoPin = 10; // sensor echo pin 8int clockPin = 11; // shift register clock pin 9int latchPin = 12; // shift register latch pin 10int dataPin = 13; // shift register data pin 11 12unsigned long previousMillisLEDS = 0; // initialization of the previosMillis for LEDS 13unsigned long previousMillisLOW = 0; // initialization of the previosMillis for LOW distance buzzer 14unsigned long previousMillisMID = 0; // initialization of the previosMillis for MED distance buzzer 15unsigned long previousMillisHIGH = 0; // initialization of the previosMillis for HIGH distance buzer 16 17const int intervalLEDS = 100; // interval of refreshing the LEDS state 18const int intervalLOW = 800; // interval of the LOW distance buzzer 19const int intervalMID = 400; // interval of the MED distance buzzer 20const int intervalHIGH = 100; // interval of the HIGH distance buzzer 21 22const int freqLOW = 1500; // frequency of the LOW distabce buzzer 23const int freqMID = 1800; // frequency of the MED distabce buzzer 24const int freqHIGH = 2000; // frequency of the HIGH distabce buzzer 25 26const int durLOW = 100; // on time of the LOW distabce buzzer 27const int durMED = 100; // on time of the MED distabce buzzer 28const int durHIGH = 80; // on time of the HIGH distabce buzzer 29 30const byte patterns[9] = { // initialization of the patterns the LEDS are going to display 31 B00000000, // all LEDS OFF 32 B00000001, // 1 LED ON 33 B00000011, // 2 LEDS ON 34 B00000111, // 3 LEDS ON 35 B00001111, // 4 LEDS ON 36 B00011111, // 5 LEDS ON 37 B00111111, // 6 LEDS ON 38 B01111111, // 7 LEDS ON 39 B11111111, // 8 LEDS ON 40}; 41 42int prox = 0; // initialization of the proximity value (0-8) 43int dur; // initialization of the duration between the Trigger and Echo signal of the sensor 44int dist; // initialization of the distance between the sensor and the object in front of it (in centimeters) 45 46void setup() { 47 pinMode(tonePin, OUTPUT); // set tone pin to OUTPUT 48 pinMode(trigPin, OUTPUT); // set trigger pin to OUTPUT 49 pinMode(echoPin, INPUT); // set echo pin to INPUT 50 pinMode(clockPin, OUTPUT); // set clock pin to OUTPUT 51 pinMode(latchPin, OUTPUT); // set latch pin to OUTPUT 52 pinMode(dataPin, OUTPUT); // set data pin to OUTPUT 53} 54 55void loop() { 56 57 unsigned long currentMillis = millis(); // set the currentMillis variable to the current number of milliseconds from the start of the loop 58 59 if ((unsigned long)(currentMillis - previousMillisLEDS) >= intervalLEDS) { // check if the time between the current time and previous time for LEDS is larger or equal to the interval the LEDS should stay on 60 digitalWrite(latchPin, LOW); // set the latch pin to LOW 61 digitalWrite(trigPin, LOW); // set the trigger pin to LOW 62 delayMicroseconds(2); // delay 2 microseconds 63 digitalWrite(trigPin, HIGH); // set the trigger pin to HIGH and send out a sound signal 64 delayMicroseconds(100); // delay 100 microseconds 65 digitalWrite(trigPin, LOW); // set the trigger pin to LOW 66 dur = pulseIn(echoPin, HIGH); // caluclate the duration between the trigger and echo 67 dist = dur / 2 / 29; // calculate distance in centemeters based on the speed of sound 68 69 prox = map(dist, 0, 48, 8, 0); // map the distannce between 0 and 48 cm to a value between 0 and 8 70 shiftOut(dataPin, clockPin, MSBFIRST, patterns[prox]); // send the pattern to the shift register based on the prox value (0-8) 71 digitalWrite(latchPin, HIGH); // latch the shift register 72 previousMillisLEDS = currentMillis; // set the previousMillis for LEDS to the current time in milliseconds from the start of the loop 73 } 74 if (prox < 0) { // if we get a proximity value less than 0 set it to 0 75 prox = 0; 76 } 77 else if (prox == 6) { // if we get a proximity value of 6 78 if ((unsigned long)(currentMillis - previousMillisLOW) >= intervalLOW) { // check if the time between the current time and previous time for LOW buzzer interal is larger or equal to the interval the buzzer should stay on 79 tone(tonePin, freqLOW, 100); // set the tone pin to the LOW frequency and an on time of 100 milliseconds 80 previousMillisLOW = currentMillis; // set the previousMillis for LOW buzzer interal to the current time in milliseconds from the start of the loop 81 } 82 83 } 84 else if (prox == 7) { // if we get a proximity value of 7 85 if ((unsigned long)(currentMillis - previousMillisMID) >= intervalMID) { // check if the time between the current time and previous time for MID buzzer interal is larger or equal to the interval the buzzer should stay on 86 tone(tonePin, freqMID, 100); // set the tone pin to the MID frequency and an on time of 100 milliseconds 87 previousMillisMID = currentMillis; // set the previousMillis for MID buzzer interal to the current time in milliseconds from the start of the loop 88 } 89 90 } 91 else if (prox == 8) { // if we get a proximity value of 8 92 if ((unsigned long)(currentMillis - previousMillisHIGH) >= intervalHIGH) { // check if the time between the current time and previous time for HIGH buzzer interal is larger or equal to the interval the buzzer should stay on 93 tone(tonePin, freqHIGH, 80); // set the tone pin to the HIGH frequency and an on time of 80 milliseconds 94 previousMillisHIGH = currentMillis; // set the previousMillis for HIGH buzzer interal to the current time in milliseconds from the start of the loop 95 } 96 } 97} 98
Complete_Ultrasonic.ino
arduino
1/* 2 created by Boris Dusnoki, https://www.youtube.com/channel/UCgOEgQpu1thY7D-GzO5vdeQ 3 Distance Sensor with graph and variable sound frequency and delay 4*/ 5int tonePin = 8; // buzzer pin 6int trigPin = 9; // sensor trigger pin 7int echoPin = 10; // sensor echo pin 8int clockPin = 11; // shift register clock pin 9int latchPin = 12; // shift register latch pin 10int dataPin = 13; // shift register data pin 11 12unsigned long previousMillisLEDS = 0; // initialization of the previosMillis for LEDS 13unsigned long previousMillisLOW = 0; // initialization of the previosMillis for LOW distance buzzer 14unsigned long previousMillisMID = 0; // initialization of the previosMillis for MED distance buzzer 15unsigned long previousMillisHIGH = 0; // initialization of the previosMillis for HIGH distance buzer 16 17const int intervalLEDS = 100; // interval of refreshing the LEDS state 18const int intervalLOW = 800; // interval of the LOW distance buzzer 19const int intervalMID = 400; // interval of the MED distance buzzer 20const int intervalHIGH = 100; // interval of the HIGH distance buzzer 21 22const int freqLOW = 1500; // frequency of the LOW distabce buzzer 23const int freqMID = 1800; // frequency of the MED distabce buzzer 24const int freqHIGH = 2000; // frequency of the HIGH distabce buzzer 25 26const int durLOW = 100; // on time of the LOW distabce buzzer 27const int durMED = 100; // on time of the MED distabce buzzer 28const int durHIGH = 80; // on time of the HIGH distabce buzzer 29 30const byte patterns[9] = { // initialization of the patterns the LEDS are going to display 31 B00000000, // all LEDS OFF 32 B00000001, // 1 LED ON 33 B00000011, // 2 LEDS ON 34 B00000111, // 3 LEDS ON 35 B00001111, // 4 LEDS ON 36 B00011111, // 5 LEDS ON 37 B00111111, // 6 LEDS ON 38 B01111111, // 7 LEDS ON 39 B11111111, // 8 LEDS ON 40}; 41 42int prox = 0; // initialization of the proximity value (0-8) 43int dur; // initialization of the duration between the Trigger and Echo signal of the sensor 44int dist; // initialization of the distance between the sensor and the object in front of it (in centimeters) 45 46void setup() { 47 pinMode(tonePin, OUTPUT); // set tone pin to OUTPUT 48 pinMode(trigPin, OUTPUT); // set trigger pin to OUTPUT 49 pinMode(echoPin, INPUT); // set echo pin to INPUT 50 pinMode(clockPin, OUTPUT); // set clock pin to OUTPUT 51 pinMode(latchPin, OUTPUT); // set latch pin to OUTPUT 52 pinMode(dataPin, OUTPUT); // set data pin to OUTPUT 53} 54 55void loop() { 56 57 unsigned long currentMillis = millis(); // set the currentMillis variable to the current number of milliseconds from the start of the loop 58 59 if ((unsigned long)(currentMillis - previousMillisLEDS) >= intervalLEDS) { // check if the time between the current time and previous time for LEDS is larger or equal to the interval the LEDS should stay on 60 digitalWrite(latchPin, LOW); // set the latch pin to LOW 61 digitalWrite(trigPin, LOW); // set the trigger pin to LOW 62 delayMicroseconds(2); // delay 2 microseconds 63 digitalWrite(trigPin, HIGH); // set the trigger pin to HIGH and send out a sound signal 64 delayMicroseconds(100); // delay 100 microseconds 65 digitalWrite(trigPin, LOW); // set the trigger pin to LOW 66 dur = pulseIn(echoPin, HIGH); // caluclate the duration between the trigger and echo 67 dist = dur / 2 / 29; // calculate distance in centemeters based on the speed of sound 68 69 prox = map(dist, 0, 48, 8, 0); // map the distannce between 0 and 48 cm to a value between 0 and 8 70 shiftOut(dataPin, clockPin, MSBFIRST, patterns[prox]); // send the pattern to the shift register based on the prox value (0-8) 71 digitalWrite(latchPin, HIGH); // latch the shift register 72 previousMillisLEDS = currentMillis; // set the previousMillis for LEDS to the current time in milliseconds from the start of the loop 73 } 74 if (prox < 0) { // if we get a proximity value less than 0 set it to 0 75 prox = 0; 76 } 77 else if (prox == 6) { // if we get a proximity value of 6 78 if ((unsigned long)(currentMillis - previousMillisLOW) >= intervalLOW) { // check if the time between the current time and previous time for LOW buzzer interal is larger or equal to the interval the buzzer should stay on 79 tone(tonePin, freqLOW, 100); // set the tone pin to the LOW frequency and an on time of 100 milliseconds 80 previousMillisLOW = currentMillis; // set the previousMillis for LOW buzzer interal to the current time in milliseconds from the start of the loop 81 } 82 83 } 84 else if (prox == 7) { // if we get a proximity value of 7 85 if ((unsigned long)(currentMillis - previousMillisMID) >= intervalMID) { // check if the time between the current time and previous time for MID buzzer interal is larger or equal to the interval the buzzer should stay on 86 tone(tonePin, freqMID, 100); // set the tone pin to the MID frequency and an on time of 100 milliseconds 87 previousMillisMID = currentMillis; // set the previousMillis for MID buzzer interal to the current time in milliseconds from the start of the loop 88 } 89 90 } 91 else if (prox == 8) { // if we get a proximity value of 8 92 if ((unsigned long)(currentMillis - previousMillisHIGH) >= intervalHIGH) { // check if the time between the current time and previous time for HIGH buzzer interal is larger or equal to the interval the buzzer should stay on 93 tone(tonePin, freqHIGH, 80); // set the tone pin to the HIGH frequency and an on time of 80 milliseconds 94 previousMillisHIGH = currentMillis; // set the previousMillis for HIGH buzzer interal to the current time in milliseconds from the start of the loop 95 } 96 } 97} 98
Downloadable files
complete_ultrasonic_boTM1U9Ahj.ino
complete_ultrasonic_boTM1U9Ahj.ino
complete_ultrasonic_boTM1U9Ahj.ino
complete_ultrasonic_boTM1U9Ahj.ino
ultrasonic_sketch_bb_EWP2nSs3AJ.png
ultrasonic_sketch_bb_EWP2nSs3AJ.png
Comments
Only logged in users can leave comments