In the last video I asked for requests so in this video I cover those requests. I’ll make both a Proximity Sensor and a Piano using an Arduino. Here is the kit I’m using.
We’ll learn about Ultrasonic Sensors, How Sound is Turned into a Current, Passive Buzzers and much more. All of the code is below.
If you like videos like this, consider donating $1, or simply turn off Ad Blocking software. Either allows me to continue making tutorials.
Code from the Video
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
// The Ultrasonic Sensor Module measures how far away an // object is from it from 2 - 400cm. // You activate the trigger pin for 10μs it sends a high // frequency 8 cycle burst. It then turns on the echo // receiver that measures distance by how quickly the signal // bounces back. // The frequency is sent by converting changes in a current which interacts with a magnet // to cause the diaphragm, which is a flexible film, to vibrate creating sound waves. // We then turn the sound waves bouncing back, back into a current we can measure // in the opposite way // Create easy ways to identify what pins are being used for int triggerPin = 11; int echoPin = 10; long duration, distance; void setup() { Serial.begin(9600); // Designate which pins are used for output and input reasons pinMode(echoPin, INPUT); pinMode(triggerPin, OUTPUT); // Prepare LED pins to provide an output voltage pinMode(3, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { // As we loop the trigger pin that sends the 8 cycle frequency is turned on and off digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); // Get the travel time from playing the sound to receiving // it back // pulseIn() turns a pin on and waits times the period from LOW to HIGH // and returns the period in microseconds duration = pulseIn(echoPin, HIGH); // Convert that time to centimeters distance = MicrosecondsToCentimeters(duration); Serial.print("Distance : "); Serial.println(distance); // If less then 20 centimeters turn on 1 LED if(distance < 20){ analogWrite(3, 91.5); } else { // If not true turn off LED analogWrite(3, 0); } // If less then 15 centimeters turn on next LED if(distance < 15){ analogWrite(5, 91.5); } else { analogWrite(5, 0); } // If less then 10 centimeters turn on next LED if(distance < 10){ analogWrite(6, 91.5); } else { analogWrite(6, 0); } } // The speed of sound is .0343 cm/μs // We receive both the distance from the sensor and // back again so we must divide by 2 long MicrosecondsToCentimeters(long duration){ long d = (duration / 2) * .0343; return d; } // Designate that any place in the code were the variable is used we should instead // replace with the integer value // These are all the notes we want to play #define NOTE_C5 523 #define NOTE_D5 587 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_G5 784 #define NOTE_A5 880 #define NOTE_B5 988 // Constants representing the ports associated with playing certain notes const int C_5 = 7; const int D_5 = 8; const int E_5 = 9; const int F_5 = 10; const int G_5 = 11; const int A_5 = 12; const int B_5 = 13; // The port the passive buzzer is attached to // The passive buzzer receives an AC current and the frequency provided determines // the tone it plays like we saw with the Ultrasonic sensor const int Buzzer = 2; void setup() { Serial.begin(9600); // Configure the pins connected to the switches as inputs pinMode(C_5, INPUT); pinMode(D_5, INPUT); pinMode(E_5, INPUT); pinMode(F_5, INPUT); pinMode(G_5, INPUT); pinMode(A_5, INPUT); pinMode(B_5, INPUT); // Setup the input pins to receive input digitalWrite(C_5, INPUT_PULLUP); digitalWrite(D_5, INPUT_PULLUP); digitalWrite(E_5, INPUT_PULLUP); digitalWrite(F_5, INPUT_PULLUP); digitalWrite(G_5, INPUT_PULLUP); digitalWrite(A_5, INPUT_PULLUP); digitalWrite(B_5, INPUT_PULLUP); } // When a switch is pressed generate the designated tone through the buzzer // If no switch is pressed stop the generation of square waves void loop() { while(digitalRead(C_5) == LOW){ tone(Buzzer, NOTE_C5); } while(digitalRead(D_5) == LOW){ tone(Buzzer, NOTE_D5); } while(digitalRead(E_5) == LOW){ tone(Buzzer, NOTE_E5); } while(digitalRead(F_5) == LOW){ tone(Buzzer, NOTE_F5); } while(digitalRead(G_5) == LOW){ tone(Buzzer, NOTE_G5); } while(digitalRead(A_5) == LOW){ tone(Buzzer, NOTE_A5); } while(digitalRead(B_5) == LOW){ tone(Buzzer, NOTE_B5); } noTone(Buzzer); } |
Leave a Reply