Arduino All Things - humör upptäcka ljus (3 / 3 steg)
Steg 3: Koden
Koden
/ * "Magic Crystal humör boll"
Dumma sällskapsdjur Trick-ITP 2011
*/
TMP36 Pin variabler
int temperaturePin = 0; ingång: den analoga pin TMP36 är ansluten
RGB LED stift
int ledDigitalOne [] = {9, 10, 11}; output: tre digitala stiften RGB LED
9 = redPin, 10 = greenPin, 11 = bluePin
CONST booleska ON = låg;
CONST booleska OFF = hög;
Fördefinierade färger
CONST boolean [röd] = {ON, OFF, OFF};
CONST boolean [grön] = {OFF, på OFF};
CONST boolean [blå] = {OFF, OFF ON};
CONST boolean [gul] = {ON, ON, OFF};
CONST booleska CYAN [] = {ON, ON OFF};
CONST booleska MAGENTA [] = {ON, OFF ON};
CONST boolean [vit] = {ON, ON, ON};
CONST boolean [svart] = {OFF, OFF, OFF};
void setup()
{
för (int jag = 0; jag < 3; i ++) {
pinMode (ledDigitalOne [i], produktionen); Ange RGB LED stift som utgångar
}
Serial.BEGIN(9600); Starta seriell anslutning med datorn
}
void loop()
{
flyta temperatur = getVoltage(temperaturePin); att få spänningen från temperaturgivare
temperatur = (((temperature –.5) * 100) * 1,8) + 32; konvertering från 10 mv per grad wit 500 mV offset
int newTemperature = temperatur; grader ((volatge-500mV) gånger 100)
Serial.println(newTemperature); skriva ut resultatet
Delay(7000); väntar på 7 sekunder för att få en ny resultat
Ange tre lysdioderna till några fördefinierade färg beroende på temperaturen i ºF
om ((newTemperature>40) & & (newTemperaturesetColor (ledDigitalOne, svart);
Serial.println("Black");
}
annars om ((newTemperature > = 72) & & (newTemperaturesetColor (ledDigitalOne, vit);
Serial.println("White");
}
annars om ((newTemperature > = 74) & & (newTemperaturesetColor (ledDigitalOne, grön);
Serial.println("Green");
}
annars om ((newTemperature > = 76) & & (newTemperaturesetColor (ledDigitalOne, CYAN);
Serial.println("cyan");
}
annars om ((newTemperature > = 78) & & (newTemperaturesetColor (ledDigitalOne, blå);
Serial.println("Blue");
}
annars om ((newTemperature > = 80) & & (newTemperaturesetColor (ledDigitalOne, gul);
Serial.println("Yellow");
}
annars om ((newTemperature > = 82) & & (newTemperaturesetColor (ledDigitalOne, röd);
Serial.println("Red");
}
annat {
setColor (ledDigitalOne, MAGENTA);
Serial.println("magenta");
}
}
flyta getVoltage(int pin) {
Return (analogRead(pin) *. 004882814); konvertering från ett 0 till 1024 digitala utbud
0 till 5 volt (varje 1 läser lika med ~ 5 millivolt
}
Funktion för att ange färg
{Ogiltig setColor (int * ledde, boolean * färg)
för (int jag = 0; jag < 3; i ++) {
digitalWrite (ledde [i], color[i]);
}
}
En version av setColor som möjliggör med const booleska färger
{Ogiltig setColor (int * ledde, const boolean * färg)
booleska tempColor [] = {färger [0], färg [1], [2]};
setColor (led, tempColor);
}