Project 03 board

 

 

 

 Project 03 componenten

 

 

 

 project 03 Circuit

 

 

 

 

tmp36 temperatuur uitgangsspanning grafiek

 

TMP36 temperatuur uitgangsspanning grafiek

 Project 3 Love-o-Meter blz 43.          terug naar de inleiding
 
De schets maakt gebruik van digitale pinnen 2,3 en 4 en analoge pin A0.
De analoge pin A0 wordt uitgelezen met analogRead(A0);
De schets schrijft met Serial.print data naar de seriële monitor
 
Serial is het seriële poort object die gebruik kan maken van communicatie functies.
Zo kan je via een poort met de computer of een board  communiseren.  Je kan Serial een systeem object noemen 
 
Aanpassingen van code en hardware
ipv de temp sensor, een potentiometer van 10 k tussen gnd en de 5 volt aansluiten.
De arm van de potentiometer  met pin A0 verbinden. De waarden van "sensorwaarde" kan dan variëren tussen de 0 en 1023.
met deze waarden veranderingen in het if--else statement aanbrengen
 
 
 

//De analoge output van de temp sensor aangesloten op analoge pin A0  
//De analoge pin is een ADC (analog digital convertor) 
 
const int sensorPin = A0; //zonder de A werkt de code ook 
const float uitgangstemp = 20.0; 
 
void setup() { 
// Serial opent de seriële poort,  "begin"  start de communicatie,
// met het argument stel je de communicatie  snelheid in. 
  Serial.begin(9600);    //9600 bits per seconde  is de snelheid van de puls trein 
   
  //met de for lus pinnen 2 t/m 4 outputpinnen maken en deze op "0" zetten 
  for (int pinnummer = 2; pinnummer < 5; pinnummer++) { 
    pinMode(pinnummer, OUTPUT); 
    digitalWrite(pinnummer, LOW); 
  } 
} 
 
void loop() { 
  //mbv de analogeRead() wordt de uitgansspanning van de sensorpin omgezet in een 10 bit digitaal getal 
  //10 bit kan een getal tussen de 0 en 1023 zijn 
  //dit getal wordt met analogRead(A0) in de variabele sensorwaarde opgeslagen 
   
  int sensorwaarde = analogRead(sensorPin); 
 
  //De 10-bit sensor waarde wordt via de seriele poort in de seriele monitor geprint 
  //De seriele monitor openen via Hulpmiddelen --> seriele monitor 
  Serial.print("sensor waarde: "); 
  Serial.print(sensorwaarde); 
 
  // zet de 10 bit sensorwaarde om in een getal om zo de uitgansspanning van de sensor weer te geven 
  float voltage = (sensorwaarde / 1024.0) * 5.0;  //.0 omdat voltage een floating point variabele is 
 
  //De uitgangsspanning naar de seriele monitor sturen 
  //Zo plaats je een variabele in c++ in een string  
  Serial.print(", uitgangsspannning: "+(String)voltage+" volt"); 
 
  //De uitgansspaninning omzetten naar temperatuur 
  //De spanning neemt toe met 10 mV per graad celcius 
  //Bij 50 graden is de spanning 1 volt en bij 0 graden 500 mv (zie de grafiek) 
  //dus de temp in graden is de (uitgangsspanning - 0.5)* 100 
  //bijvoorbeeld: 10 graden = 600 mv Dit omrekenen naar temp (0,6-0,5) * 100 = 10 
   
  Serial.print(", temp in graden celcius: "); 
  float temp = (voltage - .5) * 100; 
  Serial.println(temp); 
 
  //Als de temp lager is dan 22 graden branden de Leds niet 
  if (temp < uitgangstemp + 2) { 
    digitalWrite(2, LOW); 
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW); 
  } // Bij een temp tussen de 22 en 24 graden brand er een led 
  else if (temp >= uitgangstemp + 2 && temp < uitgangstemp + 4) { 
    digitalWrite(2, HIGH); 
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW); 
  } //Bij een temp tussen de 24 en 26 graden branden er twee leds 
  else if (temp >= uitgangstemp + 4 && temp < uitgangstemp + 6) { 
    digitalWrite(2, HIGH); 
    digitalWrite(3, HIGH); 
    digitalWrite(4, LOW); 
  } //Bij een temp hoger of gelijk aan 26 graden branden de 3 leds 
  else if (temp >= uitgangstemp + 6) { 
    digitalWrite(2, HIGH); 
    digitalWrite(3, HIGH); 
    digitalWrite(4, HIGH); 
  } 
  delay(1); 
}