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.

Kod på GitHub

// 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.