Intellekten Edison: Hetta mätare, TMP36 (2 / 5 steg)
Steg 2: kodning
Först av allt, du behöver information från mätaren att hur det fungerar i olika positioner. Att göra detta ladda Triscometer_test.ino fil och prova det. Mätaren kommer inte max ut i testet.
När du har listat ut de magiska nummer för mätaren, börja skriva huvudkoden. Dina mått från mätaren kan skilja sig från mig.
Första globala variabler.
Miska Karvonen-koden.
mizka90
TMP36 Pin analog ingång
int temperaturePin = 0;
int meter = 9.
int nivå = 0;
int meterMovement = 5;
Sedan installationen.
void setup()
{
Serial.BEGIN(9600);
pinMode (mätaren, OUTPUT);
}
Och sedan huvudprogrammet. Du kan se att det har fått en massa om uttalanden. Dessa uttalanden omfatta all den information som att mätaren behövas funktion med aktuella värma nivå. Genom att göra så många om uttalanden som möjligt kan du se till att mätaren är lika exakt som det kan vara.
void loop()
{
flyta temperatur = getVoltage(temperaturePin);
temperatur = (temperatur -.6) * 100;
Serial.println(temperature);
om (temperatur < 40) {
analogWrite (mätaren, nivå).
Level = 0;
}
om (temperatur > 45) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
level = 40;
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 50) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
level = 50;
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 55) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 60.
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 60) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 70.
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 65) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 100.
meterMovement = - meterMovement;
Delay(10);
om (temperatur > 70) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 130;
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 75) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 150;
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 80) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 180;
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 85) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 210;
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 90) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 235.
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur > 95) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 250;
meterMovement = - meterMovement;
Delay(10);
}
om (temperatur < 120) {
analogWrite (mätaren, nivå).
level = nivå + meterMovement;
Level = 255;
meterMovement = - meterMovement;
Delay(10);
}
}
Delay(100);
}
för TMP36
flyta getVoltage(int pin) {
Return (analogRead(pin) *. 004882814);
}