Étape 8: Le Code
CODE
/*
Code moteur, feux et sirène avec LED.
Entraîne un moteur, feux et sirène avec la participation de LED lumineuse
circuit :
* un petit moteur
* petit haut-parleur
* six LED
* une photodiode
Créé le 17/04/12
par Dalton Bolger et Dulcie tête
*/
Notez les durées: 4 = noire, 8 = croche, etc.. :
int noteDurations = 16 ;
int IR = A0 ;
moteur int = 7 ;
int blueLed = A5 ;
int redLed = A4 ;
crée l’État pour les lumières et initialise le temps
int ledState = faible ;
long previousMillis = 0 ;
temps entre les éclairs pour les lumières
intervalle long = 100 ;
void setup() {}
pinMode (entrée, IR) ;
pinMode (moteur, sortie) ;
pinMode (blueLed, sortie) ;
pinMode (redLed, sortie) ;
Serial.Begin(9600) ;
}
méthode pour créer les lumières sans avoir à utiliser un retard
void runLights() {}
unsigned long currentMillis = millis() ;
Si (currentMillis - previousMillis > intervalle) {}
previousMillis = currentMillis ;
digitalWrite (A4, ledState) ;
Si (ledState == faible)
ledState = élevé ;
d’autre
ledState = bas ;
digitalWrite (A5, ledState) ;
}
}
Lancez les sirènes lors de feux clignotants en continu
void lightsAndSirens() {}
mélodie int = 550 ;
tandis que (mélodie < 1200) {}
runLights() ;
pour calculer la durée de la note, prendre une seconde
divisé par le type de note.
par exemple la note noire = 1000 / 4, note croche = 1000/8, etc..
int noteDuration = 1000/noteDurations ;
ton (8, mélodie, noteDuration) ;
mélodie = mélodie + 7 ;
pour distinguer les notes, fixer une durée minimale entre eux.
Durée + 30 % de la note semble bien fonctionner :
int pauseBetweenNotes = noteDuration *. 5 ;
Delay(pauseBetweenNotes) ;
arrêter la lecture de ton :
noTone(8) ;
}
mélodie = 1200 ;
alors que {(mélodie > 550)
runLights() ;
int noteDuration = 1000/noteDurations ;
ton (8, mélodie, noteDuration) ;
mélodie = mélodie - 7 ;
int pauseBetweenNotes = noteDuration *. 5 ;
Delay(pauseBetweenNotes) ;
noTone(8) ;
}
}
Si la lumière appropriée s’affiche, exécutez le moteur, les sirènes et les lumières
void loop() {}
vitesses int = analogRead (IR) * 1,5 ;
Serial.println(speeds) ;
Si (vitesses > 40 & & vitesses < 500) {}
digitalWrite (moteurs, vitesses) ;
lightsAndSirens() ;
} else {}
analogWrite (redLed, basse) ;
analogWrite (blueLed, basse) ;
analogWrite (moteur, faible) ;
}
Delay(5) ;
}
Notre série de tests du code : http://www.youtube.com/watch?v=-BTyNu-XDLA&feature=youtu.be