Étape 2: Code et diviseur de tension
Vous aurez besoin de la bibliothèque de Timer pour exécuter le code que j’ai écrit
#include < Event.h >
#include < Timer.h >
const int analogInPin = A0 ; Broche d’entrée analogique
const int rouge =;// numbercorresponding broche de sortie Mouser où vous avez branché dans la lumière
const int jaune =;// pin correspondant à la sortie de Mouser où vous avez branché dans la lumière
const int Greeen =;// pin correspondant à la sortie de Mouser où vous avez branché dans la lumière
const int HighThreshold =;// définir la valeur de la tension (x10) vous souhaitez déclencher la lumière rouge ici
const int MediumThreshold =;// définir la valeur de la tension (x10) vous souhaitez déclencher la lumière jaune ici
const int LowThreshold =;// définir la valeur de la tension (x10) vous voulez déclencher le feu vert
rien en dessous du seuil bas provoquera le système flash
const int PeakVoltage = //the tension la plus élevée (x10) vous anticipez (utilisée pour mapper arduino signal aux tensions correspondantes (bien que l’arduino sentira seulement 5 volts à cause du diviseur de tension)
Minuterie t ;
int sensorValue = 0 ; valeur lue dans le pot
int outputValue = 0 ;
loopcount int ;
void setup() {}
initialiser une communication série à 9600 bits/s :
Serial.Begin(9600) ;
LoopCount = 0 ;
pinMode (rouge, sortie) ;
pinMode (jaune, sortie) ;
pinMode (vert, sortie) ;
}
void loop() {}
lire l’analogue en valeur :
sensorValue = analogRead(analogInPin) ;
mapper à la gamme de l’analogique sur :
outputValue = carte (sensorValue, 0, 1023, 0, PeakVoltage) ;
changer l’analogue à la valeur :
analogWrite (analogOutPin, outputValue) ;
Si (outputValue > = HighThreshold)
{
digitalWrite(Red,HIGH) ;
digitalWrite(Yellow,LOW) ;
digitalWrite (vert, faible) ;
t.Stop(flashYellow) ;
}
ElseIf (outputValue < HighThreshold & & outputValue > MediumThreshold)
{
digitalWrite(Red,LOW) ;
digitalWrite(Yellow,HIGH) ;
digitalWrite (vert, faible) ;
t.Stop(flashYellow) ;
}
ElseIf (outputValue < MediumThreshold & & outputValue > LowThreshold)
{
digitalWrite(Red,LOW) ;
digitalWrite(Yellow,LOW) ;
digitalWrite (vert, élevé) ;
t.Stop(flashYellow) ;
}
ElseIf (outputValue < = LowThreshold)
{
flashYellow = t.oscillate(Yellow,500,HIGH) ;
}
Si ((oldValue > 0) & & (outputValue < (oldValue*(1-Sensitivity)))
{
}
imprimer les résultats pour ordinateur chaque (premier argument) milisecondes
t.Every (100, produitLogiciels) ;
t.Update() ;
}
Sub reportData()
{
Serial.println(outputValue) ;
}