Components and supplies
1
Acrylic Sheets 8x10
1
Proximity Sensor
1
Breadboard (generic)
1
LED (generic)
2
Speaker: 3W, 4 ohms
1
SG90 Micro-servo motor
1
Jumper wires (generic)
1
Arduino UNO
1
Nerf Target
1
RGB LCD Shield Kit, 16x2 Character Display
Tools and machines
1
Drill / Driver, 20V
1
Hot glue gun (generic)
Apps and platforms
1
Arduino IDE
Project description
Code
Super Sleep Stopper 6000 Code
c_cpp
The first Time variable is so i can set it at night if it gets unplugged or something.
1/* Code for my Arduino powered nerf target(Super Sleep Stopper Six-Thousand) 2 * 3 * Link to video I made for it: https://www.youtube.com/watch?v=uAIoMbHhPiU&t=11s 4 * 5 * Approximately 75% pulled from internet 6 * 7 * Rest hand written (Very approximate) 8 * 9 */ 10 11 12#include <LiquidCrystal_I2C.h> // include LCD library 13#include <Servo.h> // include servo library 14 15 16Servo myservo; // create servo object to control a servo 17 18LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows 19 20int sound = 250; 21 22// Change to 0.5 for a slower version of the song, 1.25 for a faster version 23const float songSpeed = 0.5; 24 25int D = 0; // variable to determine if speakers should play 26 27int Time = 620; //Determines time till alarm sounds 28#define trigPin 7 29#define echoPin 6 30#define buzzer 3 31#define NOTE_C4 262 // defines frequency of notes 32#define NOTE_D4 294 33#define NOTE_E4 330 34#define NOTE_F4 349 35#define NOTE_G4 392 36#define NOTE_A4 440 37#define NOTE_B4 494 38#define NOTE_C5 523 39#define NOTE_D5 587 40#define NOTE_E5 659 41#define NOTE_F5 698 42#define NOTE_G5 784 43#define NOTE_A5 880 44#define NOTE_B5 988 45 46// Music notes of the song, 0 is a rest/pulse 47int notes[] = { 48 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 49 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 50 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 51 NOTE_E4, NOTE_G4, NOTE_E4, 52 53 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 54 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 55 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 56 NOTE_E4, NOTE_G4, NOTE_E4, 57 58 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 59 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 60 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 61 NOTE_E4, NOTE_G4, NOTE_E4, 62 63 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 64 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 65 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 66 NOTE_E4, NOTE_G4, NOTE_E4, 67 68 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 69 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 70 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 71 NOTE_E4, NOTE_G4, NOTE_E4, 72 73 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 74 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 75 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 76 NOTE_E4, NOTE_G4, NOTE_E4, 77 78 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 79 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 80 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 81 NOTE_E4, NOTE_G4, NOTE_E4, 82 83 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 84 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 85 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 86 NOTE_E4, NOTE_G4, NOTE_E4, 87 88 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 89 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 90 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 91 NOTE_E4, NOTE_G4, NOTE_E4, 92 93 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 94 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 95 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 96 NOTE_E4, NOTE_G4, NOTE_E4, 97 98 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 99 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 100 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 101 NOTE_E4, NOTE_G4, NOTE_E4, 102 103 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 104 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 105 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 106 NOTE_E4, NOTE_G4, NOTE_E4, 107 108 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 109 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 110 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 111 NOTE_E4, NOTE_G4, NOTE_E4, 112 113 NOTE_E4, NOTE_G4, NOTE_E4, NOTE_G4, 114 NOTE_E4, NOTE_G4, NOTE_E5, NOTE_G5, 115 NOTE_E5, NOTE_G5, NOTE_E4, NOTE_G4, 116 NOTE_E4, NOTE_G4, NOTE_E4}; 117 118 119 120 121 122 123 124 125// Durations (in ms) of each music note of the song 126// Quarter Note is 250 ms when songSpeed = 1.0 127int durations[] = { 128 129 125, 125, 125, 125, 130 125, 125, 125, 125, 131 125, 125, 125, 125, 132 125, 125, 125, 133 134 125, 125, 125, 125, 135 125, 125, 125, 125, 136 125, 125, 125, 125, 137 125, 125, 125, 138 139 125, 125, 125, 125, 140 125, 125, 125, 125, 141 125, 125, 125, 125, 142 125, 125, 125, 143 144 125, 125, 125, 125, 145 125, 125, 125, 125, 146 125, 125, 125, 125, 147 125, 125, 125, 148 149 125, 125, 125, 125, 150 125, 125, 125, 125, 151 125, 125, 125, 125, 152 125, 125, 125, 153 154 125, 125, 125, 125, 155 125, 125, 125, 125, 156 125, 125, 125, 125, 157 125, 125, 125, 158 159 125, 125, 125, 125, 160 125, 125, 125, 125, 161 125, 125, 125, 125, 162 125, 125, 125, 163 164 125, 125, 125, 125, 165 125, 125, 125, 125, 166 125, 125, 125, 125, 167 125, 125, 125, 168 169 125, 125, 125, 125, 170 125, 125, 125, 125, 171 125, 125, 125, 125, 172 125, 125, 125, 173 174 125, 125, 125, 125, 175 125, 125, 125, 125, 176 125, 125, 125, 125, 177 125, 125, 125, 178 179 125, 125, 125, 125, 180 125, 125, 125, 125, 181 125, 125, 125, 125, 182 125, 125, 125, 183 184 125, 125, 125, 125, 185 125, 125, 125, 125, 186 125, 125, 125, 125, 187 125, 125, 125, 188 189 125, 125, 125, 125, 190 125, 125, 125, 125, 191 125, 125, 125, 125, 192 125, 125, 125, 193 194 125, 125, 125, 125, 195 125, 125, 125, 125, 196 125, 125, 125, 125, 197 125, 125, 125}; 198 199 200 201void setup() { 202 203myservo.attach(12); // attaches the servo on pin 9 to the servo object 204Serial.begin (9600); 205pinMode(trigPin, OUTPUT); // initalizes trig pin of proximity sensor as an output 206pinMode(echoPin, INPUT); // initializes echo pin of proximity sensor as an input 207pinMode(buzzer, OUTPUT); //initialize speaker pin as an output 208pinMode(9, OUTPUT); // initialize digital pin 9 as an output. 209 lcd.init(); // initialize the lcd 210 lcd.backlight(); 211 myservo.write(-20); // sets servo at 0 degrees 212} 213 214void loop() { 215 const int totalNotes = sizeof(notes) / sizeof(int); 216 // Loop through each note 217 218long duration, distance; 219digitalWrite(trigPin, LOW); // runs infrared sensor 220delayMicroseconds(2); // pauses for sensor to run 221digitalWrite(trigPin, HIGH); // runs infrared sensor 222delayMicroseconds(10); // pauses for sensor to run 223digitalWrite(trigPin, LOW); // runs infrared sensor 224duration = pulseIn(echoPin, HIGH); 225distance = (duration/2) / 29.1; // converts proximity sensor data to centimeters? 226lcd.setCursor(1,0); 227lcd.print("Triple-S 6000"); 228 229 for(int t = 0; t < Time; t++) { // program that counts minutes 230 231 lcd.setCursor(5,1); // displays minutes on screen 232 lcd.print(t); 233 lcd.setCursor(9,1); // displays total Time it has to count to on screen 234 lcd.print(Time); 235 delay(60000); 236 if(t == Time - 1) { // checks if program has counted enough minutes to start alarm 237 238 D = 1; // starts alarm if above is true 239 } 240} 241 242 243 244if (D == 1) { // checks if alarm should start 245 246 for (int i = 0; i < totalNotes; i++) // goes through each note to play 247 { 248 249 if(D == 1) { 250 const int currentNote = notes[i]; 251 float wait = durations[i] / songSpeed; 252 253 if (currentNote != 0) // Play tone if currentNote is not 0 frequency, otherwise pause (noTone) 254 { 255 tone(buzzer, notes[i], wait); // tone(pin, frequency, duration) 256 digitalWrite(9, HIGH); // lights up LED 257 digitalWrite(trigPin, LOW); //runs proximity sensor 258 delayMicroseconds(2); // pauses for sensor to run 259 digitalWrite(trigPin, HIGH); //runs proximity sensor 260 delayMicroseconds(10); // pauses for sensor to run 261 digitalWrite(trigPin, LOW); //runs proximity sensor 262 duration = pulseIn(echoPin, HIGH); //not sure(don't delete, know it does something????) 263 distance = (duration/2) / 29.1; // converts sensor data to centimeters 264 265 266 if(distance <=6) { // checks if sensor is hit 267 D = 0; //stops alarm 268 Time = 1440; 269 delay(1000); // puases for a second to make servo movement cooler 270 for ( int pos = -20; pos <= 80; pos += 1) { // lifts target up using servo 271 // in steps of 1 degree 272 myservo.write(pos); // tell servo to go to position in variable 'pos' 273 delay(15); // waits 15ms for the servo to reach the position 274 } 275 for ( int pos = 80; pos >= -20; pos -= 1) { // brings servo back down 276 myservo.write(pos); // tell servo to go to position in variable 'pos' 277 delay(15); // waits 15ms for the servo to reach the position 278 lcd.clear(); // clears lcd screen so words arent written on top of each other 279 } 280 281 } 282 } 283 else 284 { 285 noTone(buzzer); // doesnt play a sound if a rest is played 286 } 287 // delay is used to wait for tone to finish playing before moving to next loop 288 delay(wait); 289 if(i >= totalNotes-1) { //repeats song?? 290 i = 0; 291 } 292 } 293 } 294} 295 296 297digitalWrite(9,LOW); //turns LED off 298 299 300delay(500); //pauses????? 301}
Downloadable files
Sorry no schematics available
Sorry no schematics available

Sorry no schematics available
Sorry no schematics available

Documentation
Super Sleep Stopper 6000
Super Sleep Stopper 6000
Super Sleep Stopper 6000
Super Sleep Stopper 6000
Comments
Only logged in users can leave comments