Stap 8: De Code
CODE
/*
Motor, verlichting en een sirene code met LED.
Drijft een motor, lichten en de sirene met input van LED licht
route:
* één kleine motor
* kleine luidspreker
* zes LED's
* een fotodiode
Gemaakt van 4-17-12
door Dalton Bolger en Dulcie hoofd
*/
Opmerking de duur: 4 = kwartnoot, 8 = achtste noot, enz.:
int noteDurations = 16;
int IR = A0;
int motor = 7;
int blueLed = A5;
int redLed = A4;
wordt gemaakt van de staat voor de lichten en intializes van de tijd
int ledState = laag;
lange previousMillis = 0;
tijd tussen flitsers voor de lichten
lange interval = 100;
VOID Setup {}
pinMode (IR, INPUT);
pinMode (motor, uitgang);
pinMode (blueLed, OUTPUT);
pinMode (redLed, OUTPUT);
Serial.begin(9600);
}
methode voor het maken van de lichten zonder having voor toepassing een vertraging
ongeldig runLights() {}
unsigned long currentMillis = millis();
Als (currentMillis - previousMillis > interval) {}
previousMillis = currentMillis;
digitalWrite (A4, ledState);
Als (ledState == laag)
ledState = hoog;
anders
ledState = laag;
digitalWrite (A5, ledState);
}
}
de sirenes lopen terwijl het opvlammende lichten voortdurend
ongeldig lightsAndSirens() {}
int melodie = 550;
terwijl (melodie < 1200) {}
runLights();
voor het berekenen van de duur van de opmerking, neem één seconde
gedeeld door het type opmerking.
bijvoorbeeld kwartnoot = 1000 / 4, achtste noot = 1000/8, enz.
int noteDuration = 1000/noteDurations;
Toon (8, melodie, noteDuration);
melodie = melodie + 7;
om te onderscheiden van de notities, stel een minimuminterval tussen hen.
de nota's duur + 30% schijnt goed te werken:
int pauseBetweenNotes = noteDuration *. 5;
delay(pauseBetweenNotes);
Stop het afspelen van de Toon:
noTone(8);
}
melodie = 1200;
terwijl (melodie > 550) {}
runLights();
int noteDuration = 1000/noteDurations;
Toon (8, melodie, noteDuration);
melodie = melody - 7;
int pauseBetweenNotes = noteDuration *. 5;
delay(pauseBetweenNotes);
noTone(8);
}
}
Als het juiste licht wordt weergegeven, voert u de motor, lichten en sirenes
void loop {}
int snelheden = analogRead (IR) * 1.5;
Serial.println(speeds);
Als (> 40 snelheden & & snelheden < 500) {}
digitalWrite (motor, snelheden);
lightsAndSirens();
} else {}
analogWrite (redLed, laag);
analogWrite (blueLed, laag);
analogWrite (motor, laag);
}
delay(5);
}
Onze test uitvoeren van de code: http://www.youtube.com/watch?v=-BTyNu-XDLA&feature=youtu.be