project 04 Board

 

 

 

 Project 04 componenten

 

 

 

 

 

Project 04 circuit

 

 

 

 analogWrite zet 8 bit getallen om in een pwm signaal

 

analogWrite zet 8 bit getallen om in een pwm signaal

 

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); 
}