Arduino kontrollerade fyren (6 / 7 steg)
Steg 6: Arduino kod
Arduino koden nedan är ganska självförklarande. Den vita LED stiftet är alltid inställd på hög. Den röda lysdioden använder en PWM stift med ett slumpmässigt varierande signalstyrka för att efterlikna flimmer en brand. Servo är inställd att rotera med under 1.5 till 2 sekunder. Jag använde funktionen Arduino tonen för mistlur. Som jag ville ha Mistlur till ljud kontinuerligt utan att störa resten av koden, jag använde kommandot Millis och något om uttalanden. En varningens; användning av Servo.h biblioteket inaktiveras analogWrite() (PWM) funktionen på stift 9 och 10, om huruvida ett servo är ansluten till dessa stift. Detta drivande jag tokig, eftersom jag ursprungligen hade den röda LED ansluten till pinne 10 och var inte att få rätt resultat. I framtiden kommer jag att ersätta UNO med en ATtiny i den permanenta versionen eftersom kretsen bara använder fyra stift.
Arduino kontrollerade fyr, 6/18/2014
#include < Servo.h >
Servo lightServo;
int lightPin = 1;
int servoPin = 3;
int fireLightPin = 5;
int fogHornPin = 13.
Konstanter som används i avsnittet Mistlur i programmet
lång previousMillis = 0;
lång interval1 = 2000.
lång interval2 = 4000;
lång interval3 = 6000;
void setup()
{
pinMode (lightPin, produktionen);
pinMode (fogHornPin, produktionen);
pinMode (fireLightPin, produktionen);
digitalWrite (lightPin, hög);
lightServo.attach(servoPin);
}
void loop()
{
Ställa in servo rotationshastighet
lightServo.write(100);
Koden flimrar det röda LED
analogWrite (fireLightPin, random(150)+10);
Delay(Random(100));
Kod för att låta Mistlur utan interupting
resten av programmet
osignerade långa currentMillis = millis();
om (currentMillis - previousMillis < interval1)
{
tonen (fogHornPin, 80);
}
om (currentMillis - previousMillis > interval1 & & currentMillis - previousMillis < interval2)
{
tonen (fogHornPin, 40);
}
om (currentMillis - previousMillis > interval2 & & currentMillis - previousMillis < interval3)
{
noTone(fogHornPin);
}
om (currentMillis - previousMillis > interval3)
{
previousMillis = currentMillis;
}
}