Hier staan de antwoorden voor de opdrachten.
Probeer zo veel mogelijk zelf uit te zoeken en kijk pas naar de antwoorden als je zelf (al een paar minuten) vast zit.
Je kan natuurlijk ook vragen stellen aan de workshopgevers, of de antwoorden samen doornemen.
Antwoord knipperend lampje
#define LED 6 // de digitale input waarop het LED lampje op aan is gesloten
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH); // LED aan
delay(1000); // 1000 milliseconden is 1 seconde
digitalWrite(LED, LOW); // LED uit
delay(1000);
}
Antwoord klapper LED
#define LED 6
int soundSensor = A2; // de geluidssensor zit op A2
bool ledState = LOW; // het lampje begint uit
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop() {
// lees de waarde van de geluidssensor
int soundValue = analogRead(soundSensor); // tussen 0 en 1023
if (soundValue > 650) {
ledState = !ledState; // draai de state om: HIGH wordt LOW en LOW wordt HIGH
digitalWrite(LED, ledState); // pas de state toe op het lampje
}
delay(100);
}
Antwoord lantaarnpaal
#define LED 6
int lightSensor = A3; // de lichtsensor zit op A3
void setup() {
Serial.begin(9600);
pinMode(LED,OUTPUT);
}
void loop() {
int lightVal = analogRead(lightSensor); // 0-1023
Serial.println(lightVal);
digitalWrite(LED, lightVal < 512); // je kan 512 aanpassen als je de drempelwaarde bij wilt stellen
delay(500);
}
Antwoord lichtsterkte laten zien op het scherm
#include "Arduino_SensorKit.h"
int lightSensor = A3; // de lichtsensor zit op de sensor kit aan A3
void setup() {
Serial.begin(9600);
// initialiseer OLED scherm
Oled.begin();
Oled.setFlipMode(true);
}
void loop() {
// lees de waarde van de sensor
int rawLightVal = analogRead(lightSensor);
// de waarde van de sensor is tussen de 0 en de 1023 (10 bits ;))
// zorg ervoor dat het makkelijker te lezen is voor mensen (0-100)
int light = map(rawLightVal, 0, 1023, 0, 100);
// stel een lettertype (font) in op het scherm en geef aan waar op het scherm er geschreven gaat worden
Oled.setFont(u8x8_font_chroma48medium8_r);
Oled.setCursor(0, 33);
// Schrijf de lichtwaarde (0-100) naar het scherm
Oled.print(light);
// Na het schrijven staat het in het geheugen van het schermpje, maar je moet het nog wel toepassen:
Oled.refreshDisplay();
delay(1000); // dit alles gebeurt om de 1000ms (1 seconde)
}
Antwoord tellen op scherm met knop
#include "Arduino_SensorKit.h"
#define button 4 // de knop is aangesloten via D4
int i = 0; // de teller begint bij 0
void setup() {
Serial.begin(9600);
pinMode(button, INPUT); // geef aan dat je wilt gaan lezen van D4
// initialiseer het OLED scherm en zet het getal naar 0 (i dus, het begin)
Oled.begin();
Oled.setFlipMode(true);
setNumber();
}
void loop() {
// als de knop wordt ingedrukt en er dus stroom doorheen gaat (een digitale true-waarde is HIGH)
if (digitalRead(button) == HIGH) {
i++; // +1 op de teller
setNumber(); // roep de functie aan die het naar getal op het scherm gaat zetten
delay(250); // wacht 250 milliseconde, zodate je niet per ongeluk 2x klikt als je maar 1x wilde klikken
}
}
void setNumber() {
Oled.setFont(u8x8_font_chroma48medium8_r);
// zet de positie op het schermpje waar geschreven gaat worden
Oled.setCursor(0, 33);
Oled.print(i); // schrijf de waarde naar het scherm (komt in geheugen)
Oled.refreshDisplay(); // pas het toe op het scherm
}
Antwoord tekst verplaatsen met potentiometer
#include "Arduino_SensorKit.h"
int potentiometer = A0; // de potentiometer is aangesloten via A0
void setup() {
Serial.begin(9600);
pinMode(potentiometer, INPUT); // geeft aan dat je wilt gaan lezen vanaf de A0 port
// initialiseer het OLED schermpje en het lettertype
Oled.begin();
Oled.setFlipMode(true);
Oled.setFont(u8x8_font_chroma48medium8_r);
}
void loop() {
// lees de waarde van de potentiometer (is tussen de 0 en 1023)
int sensorValue = analogRead(potentiometer);
// zorg ervoor dat de waarde binnen het aantal pixels van het scherm blijven
// -1 omdat een computer bij 0 begint met tellen
int value = map(sensorValue, 0, 1023, 0, Oled.getRows()-1);
Oled.clearDisplay(); // maak het scherm leeg, zodat de tekst op een lege achtergrond wordt geschreven
// schrijf de tekst naar x = 0 en y = (waarde van de sensor)
Oled.drawString(0, value, "Hello, world!");
}