Modell polisbil (8 / 9 steg)
Steg 8: Koden
KODEN
/*
Motor, belysning och siren koden med LED.
Driver en motor, belysning och siren med ingång för LED ljus
krets:
* en liten motor
* små högtalare
* sex LED
* en fotodiod
Skapad 4-17-12
av Dalton Bolger och Dulcie chef
*/
Observera varaktigheter: 4 = fjärdedelsnot, 8 = åttondelen noterar, etc.:
int noteDurations = 16.
int IR = A0;
int motor = 7.
int blueLed = A5;
int redLed = A4;
skapar staten för belysningen och intializes tiden
int ledState = låg;
lång previousMillis = 0;
tid mellan blinkar för ljus
långa intervall = 100;
void setup() {
pinMode (IR, indata);
pinMode (motor, utgång);
pinMode (blueLed, produktionen);
pinMode (redLed, produktionen);
Serial.BEGIN(9600);
}
metod för att skapa ljus utan att behöva använda en fördröjning
void runLights() {
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis > intervall) {
previousMillis = currentMillis;
digitalWrite (A4, ledState);
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
digitalWrite (A5, ledState);
}
}
köras sirener och blinkande lampor kontinuerligt
void lightsAndSirens() {
int melodi = 550;
medan (melodi < 1200) {
runLights();
för att beräkna noterar varaktighet, ta en sekund
dividerat med Noteringstyp.
e.g. fjärdedelsnot = 1000 / 4, åttondelen noterar = 1000/8, etc.
int noteDuration = 1000/noteDurations;
tonen (8, melodi, noteDuration);
Melody = melodi + 7.
Ange en minsta tid mellan dem för att skilja anteckningar.
tonens längd + 30% verkar fungera bra:
int pauseBetweenNotes = noteDuration *. 5.
Delay(pauseBetweenNotes);
stoppa tonen uppspelningen:
noTone(8);
}
Melody = 1200;
medan (melodi > 550) {
runLights();
int noteDuration = 1000/noteDurations;
tonen (8, melodi, noteDuration);
Melody = melodi - 7.
int pauseBetweenNotes = noteDuration *. 5.
Delay(pauseBetweenNotes);
noTone(8);
}
}
om en lämplig ljus visar upp, kör den motor, sirener och ljus
void loop() {
int hastigheter = analogRead (IR) * 1,5;
Serial.println(Speeds);
om (hastigheter > 40 & & hastigheter < 500) {
digitalWrite (motor, hastigheter);
lightsAndSirens();
} annat {
analogWrite (redLed, låg);
analogWrite (blueLed, låg);
analogWrite (motor, låg);
}
Delay(5);
}
Vårt test körning av koden: http://www.youtube.com/watch?v=-BTyNu-XDLA&feature=youtu.be