Étape 6: Arduino Code
L’Arduino code donné ci-dessous est assez simple. Le pin blanc de LED est toujours défini sur haute. La LED rouge utilise une goupille PWM avec une force de signal au hasard variable pour imiter le scintillement d’un incendie. Le servo est situé à tourner avec une période de 1,5 à 2 secondes. J’ai utilisé la fonction de tonalité de Arduino pour la corne de brume. Comme je le voulais la corne de brume à sonner en permanence sans interférer avec le reste du code, j’ai utilisé la commande Millis et certains si des déclarations. Une note de prudence ; utilisation de la bibliothèque de Servo.h désactive la fonctionnalité de analogWrite() (PWM) sur les broches 9 et 10, si un servo est relié à ces broches. Cela me rendait fou, comme je l’avais initialement le rouge LED connectée à la broche 10 et ne devenait pas de résultats corrects. À l’avenir, j’ai l’intention de remplacer l’ONU avec un ATtiny dans la version permanente car le circuit n’utilise que quatre épingles.
Arduino contrôlée phare, 18/06/2014
#include < Servo.h >
Servo lightServo ;
int lightPin = 1 ;
int servoPin = 3 ;
int fireLightPin = 5 ;
int fogHornPin = 13 ;
Constantes utilisées dans la section de corne de brume du programme
long previousMillis = 0 ;
interval1 long = 2000 ;
interval2 long = 4000 ;
interval3 long = 6000 ;
void setup()
{
pinMode (lightPin, sortie) ;
pinMode (fogHornPin, sortie) ;
pinMode (fireLightPin, sortie) ;
digitalWrite (lightPin, HIGH) ;
lightServo.attach(servoPin) ;
}
void loop()
{
Régler la vitesse de rotation servo
lightServo.write(100) ;
Code à clignoter la LED rouge
analogWrite (fireLightPin, random(150)+10) ;
Delay(Random(100)) ;
Code pour sonner la corne de brume sans interupting
le reste du programme
unsigned long currentMillis = millis() ;
Si (currentMillis - previousMillis < interval1)
{
ton (fogHornPin, 80) ;
}
Si (currentMillis - previousMillis > interval1 & & currentMillis - previousMillis < interval2)
{
ton (fogHornPin, 40) ;
}
Si (currentMillis - previousMillis > interval2 & & currentMillis - previousMillis < interval3)
{
noTone(fogHornPin) ;
}
Si (currentMillis - previousMillis > interval3)
{
previousMillis = currentMillis ;
}
}