Stap 6: Arduino Code
De Arduino-code hieronder is vrij eenvoudig. De witte LED-pin is altijd ingesteld op hoog. De rode LED gebruikt een PWM-pin met een willekeurig verschillende signaalsterkte na te bootsen de flikkerende van een brand. De servo is ingesteld om te draaien met een periode van 1,5 tot 2 seconden. Ik gebruikte de Arduino tone-functie voor de foghorn. Als ik de foghorn naar geluid continu wilde zonder zich te mengen met de rest van de code, ik gebruikte de Millis opdracht en sommige als verklaringen. Één nota van voorzichtigheid; gebruik van de Servo.h-bibliotheek schakelt analogWrite() (PWM) functionaliteit op pin 9 en 10, al of niet een servo is aangesloten op deze pinnen. Dit dreef me gek, als ik had oorspronkelijk de rode LED verbonden met pin 10 en kreeg geen goede resultaten. Ik wil in de toekomst de UNO vervangen met een ATtiny in de definitieve versie, aangezien het circuit slechts vier pinnen gebruikt.
Arduino gecontroleerd vuurtoren, 6/18/2014
#include < Servo.h >
Servo lightServo;
int lightPin = 1;
int servoPin = 3;
int fireLightPin = 5;
int fogHornPin = 13;
Constanten die worden gebruikt in de sectie foghorn van het programma
lange previousMillis = 0;
lange interval1 = 2000;
lange interval2 = 4000;
lange interval3 = 6000;
VOID Setup
{
pinMode (lightPin, OUTPUT);
pinMode (fogHornPin, OUTPUT);
pinMode (fireLightPin, OUTPUT);
digitalWrite (lightPin, hoge);
lightServo.attach(servoPin);
}
void loop
{
Snelheid van de rotatie van de servo instellen
lightServo.write(100);
Code knippert de rode LED
analogWrite (fireLightPin, random(150)+10);
delay(Random(100));
Code te klinken de foghorn zonder interupting
de rest van het programma
unsigned long currentMillis = millis();
Als (currentMillis - previousMillis < interval1)
{
Toon (fogHornPin, 80);
}
Als (currentMillis - previousMillis > interval1 & & currentMillis - previousMillis < interval2)
{
Toon (fogHornPin, 40);
}
Als (currentMillis - previousMillis > interval2 & & currentMillis - previousMillis < interval3)
{
noTone(fogHornPin);
}
Als (currentMillis - previousMillis > interval3)
{
previousMillis = currentMillis;
}
}