ArduinoLichtintensiteit

Dit is een project waarin we de licht sensor gebruiken. De waarde zal worden omgerekend naar een hoeveelheid. Bij weinig licht zal geen of slechts een LED branden, bij heel veel licht allemaal.



ArduinoBreadboard



ArduinoSketch
/*
  Read light sensor

  www.punthooft.nl
*/

// Constants
const int led1 = 2;
const int led2 = 3;
const int led3 = 4;
const int led4 = 5;
const int led5 = 6;
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to


// Variables
int sensorValue = 0;        // value read from the pot


// Setup function runs once when powerup the board and on reset 
void setup() {

  // initialize serial communications at 9600 bps:
  Serial.begin(9600);

  // Let each LED flash for a moment, to test the connection
  for(int pinNumber = 2; pinNumber <= 6; pinNumber++) {
    pinMode(pinNumber, OUTPUT);
    flashLED(pinNumber);
  }
}


// The loop function runs over and over again forever
void loop() {

  // Lees de lichtwaarde van de sensor en zet deze om naar een ledValue
  sensorValue = analogRead(analogInPin);
  float ledValue = (sensorValue / 200);

  // Schrijf de waarden naar de Serial Monitor
  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print(" led=");
  Serial.println(ledValue);

  // Kijk voor LED 2 tot en met 6 of de LED aan of uit moet
  for(int pinNumber = 2; pinNumber <= 6; pinNumber++) {
    turnLEDOn(pinNumber,ledValue);
  }
}

void flashLED(int led) {

  // Zet de LED aan, wacht en zet de LED weer uit, wacht en keer terug naar de aanroeper
  digitalWrite(led,HIGH);
  delay(100);

  // Zet de LED uit, wacht en zet de LED weer uit
  digitalWrite(led,LOW);
  delay(100);
  
  // Einde van de functie, keer terug naar de aanroeper
} 

void turnLEDOn(int led,float value) {

   // Als het LED nummer (min een) kleiner of gelijk is aan de meegegeven waarde
   // zet dan de LED aan, zet hem anders uit
   if ((led-1) <= value) {
      digitalWrite(led,HIGH);
   } else {
      digitalWrite(led,LOW);
  }

  // Einde van de functie, keer terug naar de aanroeper
}


ArduinoOpmerkingen

De LEDs zitten aangesloten op de poorten 2 / 3 / 4 / 5 en 6.

De gebruikte weerstanden zijn 220 Ohm voor de aansluitingen van de LED. Let op dat voor de sensor een weerstand van 10 kOhm nodig is!

Boven in de sketch, voor de setup staan de constanten, de waarde van de constanten kan niet worden aangepast. Deze waarden blijven altijd hetzelfde. Eronder staat een variable sensorValue. Deze zetten we hier op 0. Dit is geen constante, deze waarde kan (en zal) tijdens het programma in de loop iedere keer worden aangepast.

Onder de loop zien we nog 2 functies staan. Dit zijn zelf geschreven functies. De flashLED functie zal worden aangeroepen vanuit de setup. De turnLEDOn functie zal in de loop worden gebruikt. De code zal van boven naar onder worden uitgevoerd. Als er opeens een functie staat (met of zonder waarden erachter) dan zal het programma verder gaan in deze functie. Deze helemaal uitvoeren en als die is afgewerkt, zal er worden teruggekeerd naar de plaats waar de functie stond, en met het eerst volgende commando erna verder gaan. De waarden achter de functienaam, tussen haakjes, zijn argumenten (ook wel parameters) genoemd. De uitvoerende functie krijgt deze waarden mee vanuit de aanroepende functie.

Door het gebruik van functies kan code overzichtelijk worden opgebouwd / ingedeeld. Ook kunnen de functies op verschillende plaatsen worden aangeroepen, wat weer dubbele code scheelt.




Lees Verder in deze categorie

Copyright 2018 www.punthooft.nl

We do not collect cookies for advertisement. Your data is never send to third parties.