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


ArduinoSource code
/*
  Light sensor

  (C) copyright www.punthooft.nl 2019
*/

// 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() {

  // fetch light value and convert to ledValue
  sensorValue = analogRead(analogInPin);
  float ledValue = (sensorValue / 200);

  // Write values in the serial Monitor
  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print(" led=");
  Serial.println(ledValue);

  // Check for other LEDs which to turn ON
  for(int pinNumber = 2; pinNumber <= 6; pinNumber++) {
    turnLEDOn(pinNumber,ledValue);
  }
}

// Function flashes a LED
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);
  
  // End function, proceed at calling point
} 

void turnLEDOn(int led,float value) {

  // If LED number is smaller, turn ON, otherwise OFF
  if ((led-1) <= value) {
    digitalWrite(led,HIGH);
  } else {
    digitalWrite(led,LOW);
  }

  // End function, proceed at calling point
}


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 het programma, 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.



Copyright 2019 www.punthooft.nl
We do not collect cookies for advertisement. Your data is never send to third parties.