Project 4 Color Mixing Lamp blz 54. terug naar de inleiding
De schets maakt gebruik van digitale outputpinnen 9, 10 en 11 deze pinnen zijn geschikt voor pwm
Met analogRead() wordt de ingangsspanning op de analoge pinnen omgezet naar een 10 bit getal
Door dit 10 bit getal te delen door 4 wordt het een 8 bit getal.
Met analogWrite() worden 8 bit getallen omgezet in pwm waarden waarmee je bijvoorbeeld een led kan dimmen
De LDR (Light Dependent Resistor) vormt samen met de weerstand van 10 KOhm een spanningsdeler
// De digitale pinnen 9, 10 en 11 als outputpinnen instellen
// Deze pinnen zijn geschikt voor pwm (zie verder)
// De led pinnen zijn outputpinnen
const int ledGroen = 9;
const int ledRood = 10;
const int ledBlauw = 11;
// declareren van de led variabelen
// Je hoef ze geen beginwaarde te geven
int ledRoodWaarde = 0;
int ledGroenWaarde = 0;
int ledBlauwWaarde = 0;
// declareren van de ldr sensor variabelen
// Je hoef ze geen beginwaarde te geven
int ldrRoodWaarde = 0;
int ldrGroenWaarde = 0;
int ldrBlauwWaarde = 0;
void setup() {
// de seriële poort openen en de boud snelheid initieren
Serial.begin(9600);
// maak de digitale pinnen outputpin
pinMode(ledGroen, OUTPUT);
pinMode(ledRood, OUTPUT);
pinMode(ledBlauw, OUTPUT);
// De analoge pinnen hoef je niet als inputpinnen in te stellen
// want alle pinnen zijn default al als inputpin ingesteld
}
void loop() {
// de 3 ldr sensoren uitlezen en in de integers stoppen
//Omdat een LDR nogal traag reageert is een delay nodig.
ldrRoodWaarde = analogRead(A0);
delay(5);
ldrGroenWaarde = analogRead(A1);
delay(5);
ldrBlauwWaarde = analogRead(A2);
// de waarden naar de seriële monitor schrijven
Serial.print(" ldr sensoren\t rood: ");
Serial.print(ldrRoodWaarde);
Serial.print("\t groen: ");
Serial.print(ldrGroenWaarde);
Serial.print("\t blauw: ");
Serial.print(ldrBlauwWaarde);
// De analoge pinnen zijn 10 bit en variëren dus tussen de 0 en 1023
// door ze te delen door 4 worden ze 8 bit en variëren ze tussen de 0 en 255
// dit is nodig omdat pwm alleen in 8 bit werkt
ledRoodWaarde = ldrRoodWaarde / 4;
ledGroenWaarde = ldrGroenWaarde / 4;
ledBlauwWaarde = ldrBlauwWaarde / 4;
// print de waarden van de led lampjes
Serial.print(" led lampjes \t rood: ");
Serial.print(ledRoodWaarde);
Serial.print("\t groen: ");
Serial.print(ledGroenWaarde);
Serial.print("\t blauw: ");
Serial.println(ledBlauwWaarde);
// De 8 bits led waarden worden middels analogWrite omgezet in pwm en naar de digitale led pinnen geschreven.
// pwm is Puls Width Modulatie
// De output van de digitale pinnen zijn in breedte variërende pulsen hierdoor zal de led in intensiteit varrieren
// Let op, analogWrite() kan je alleen toepassen op digitale pinnen die geschikt zijn voor pwm,
// dit zijn de pinnen met het golfje
analogWrite(ledRood, ledRoodWaarde);
analogWrite(ledGroen, ledGroenWaarde);
analogWrite(ledBlauw, ledBlauwWaarde);
}