003 Arduino projekt 3
Sidorna 42 - 51.
Koppla enligt figur på sidan 44.
Komponenter
- LED, 3 röda
- resistor 3 x 220 ohm
- TMP, temperatursensor
Mål
Lamporna är släckta vid start.
Om man håller i termistorn (temperaturgivare) så tänds dioderna. Ju längre du håller desto fler tänds.
20 grader celsius - alla släckta
22 grader celsius - en tänd
24 grader celsius - två tända
26 grader celsius - tre tända
Program
Koden skiljer sig något från den i boken. Funktionen är dock densamma.
// analogt stift som terminstorn kopplas till const int sensorPin = A0;
// gränstemperatur i grader celsius då alla dioder är släckta // denna kan du behöva ändra om det är varmt i rummet const float baselineTemp = 20.0;
// körs en gång vid uppstart void setup() { // öppna serieporten // 9600 bitar (ettor och nollor) per sekund Serial.begin(9600);
// digitala stiften 2, 3, 4 ska vara output, 0 volt
int pinNumber = 2;
while (pinNumber < 5)
{
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
pinNumber = pinNumber + 1;
}
}
// upprepas om och om igen void loop() { int temperatureSensorValue = analogRead(sensorPin);
// skriv ut mätvärde på datorn
Serial.print("Temperatur sensor value: ");
Serial.print(temperatureSensorValue);
// omvandla mätvärde [0 - 1024) till spänning i volt
float voltage = (temperatureSensorValue / 1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
// omvandla till temperatur i grader celsius
float temperature = (voltage - 0.5) * 100;
Serial.print(", degrees C: ");
Serial.print(temperature);
// styr lampor
if (temperature >= baselineTemp + 6)
{
// tänd tre dioder
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
else if (temperature >= baselineTemp + 4)
{
// tänd tre dioder
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
else if (temperature >= baselineTemp + 2)
{
// tänd tre dioder
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
if (temperature < baselineTemp)
{
// släck alla dioder
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
// pausa i 1 ms
delay(1);
}
Testa
Se till att det fungerar som tänkt. När du håller i termistorn bör dioderna tändas en efter en, och släckas en efter en då du släpper.
Kanske behöver du ändra på baselineTemp.