ArduinoRGB Diffused Common Anode

LEDs hebben we al eerder gezien. Een normale LED heeft 2 pootjes een + en een -. De RGB Diffused LED heeft echter 4 pootjes. Als je met (heel veel moeite) het ding uit elkaar zou halen, dan zou je zien dat het eigenlijk 3 LEDs zijn. Een rode, een groene en een blauwe. En hierin zit ook het bijzondere van de 4 pootjes. Er is een pootje voor rood, een voor groen en een voor blauw. Dat zijn 3 pootjes.



ArduinoCommon Anode versus Common Kathode

Het resterende pootje is een gezamelijke (COMMON) verbinding voor de voeding / aarde. Alle 3 de LEDs zijn hierop aangesloten. Afhankelijk van het type LED (Anode / Kathode) dien je of 5V of GND op deze gesamenlijk pin te zetten. Voor een Common Anode is dat plus.
Voor een Common Kathode is dat min.

Omdat de stroom verschillende loopt voor Anode en Kathode werkt de een precies andersom aan de andere. Bij de ene is hoge waarde uit en lage aan, bij de andere is hoge waarde aan en een lage waarde uit. Om dit op te vangen heb ik in de sketch een slim stukje logica opgenomen.

  • Voor Anode

Wil je enkel de rode LED laten branden dan verbind je het common pootje met de plus (5V) en het rode pootje via een weerstand met de pin op de Arduino.

  • Voor Kathode

Wil je enkel de rode LED laten branden dan verbind je het common pootje met de GND op de Arduino en het rode pootje met de pin op de Arduino. Ook hier weer met een weerstand ertussen natuurlijk.

Om het je makkelijk te maken, is de sketch gezamelijk voor beide, waarbij je enkel de definitie op regel 8 moet aanpassen. De Breadboard zijn iets (...) anders.



ArduinoAansluiting

De aansluiting is even lastig. Zoals je ziet heeft de LED 4 pootjes die ook nog eens dicht bij elkaar zitten. Ik begin meestal met de pootjes iets uit elkaar te trekken zonder hierbij de LED te scheuren.


De pootjes hebben een verschillende lengte. Het langste pootje is altijd de COMMON aansluiting. Ernaast zit aan de ene kant een pootje, dat is rood. Aan de andere kant zitten 2 pootjes dat zijn vanaf de common naar buiten de groene en dan de blauwe poot.



ArduinoBreadboard common Anode



ArduinoBreadboard common Kathode



ArduinoSketch
/*
  RGB LED Common anode

  www.punthooft.nl
*/

// Definitions
#define COMMON_ANODE     // Definition for ANODE, remove line for KATHODE

// Constants
const int pinRed = 2;
const int pinGreen = 3;
const int pinBlue = 4;

// Variables
int ledColor = 0;
int delayValue = 1000;

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

  pinMode(pinRed, OUTPUT);
  pinMode(pinGreen, OUTPUT);
  pinMode(pinBlue, OUTPUT);  
  
}


// The loop function runs over and over again forever
void loop() {
  ledColor++;
  if (ledColor>7) {
    ledColor = 0;
  }
 
  switch (ledColor) {
    case 0:
      showLed(0,0,0); //  off
      break;
    case 1:
      showLed(255,0,0); //  red
      break;
    case 2:
      showLed(0,255,0); // green
      break;
    case 3:
      showLed(0,0,255); // blue
      break;
    case 4:
      showLed(255,255,0); // geel
      break;
    case 5:
      showLed(255,0,255); // roze
      break;
    case 6:
      showLed(0,255,255); // lightblue
      break;   
    case 7:
      showLed(255,255,255); //  owhite
      break; 
    default:
      break;
    }

  delay(delayValue);
}


// Show led
void showLed(int red, int green, int blue) {

  #ifdef COMMON_ANODE
    red = 255 - red;
    green = 255 - green;
    blue = 255 - blue;
  #endif
  
  analogWrite(pinRed, red);
  analogWrite(pinGreen, green);
  analogWrite(pinBlue, blue);
}



ArduinoOpmerkingen

De gebruikte weerstanden zijn 220 Ohm

Bovenin de sketch staat het commando:

#define COMMON_ANODE
Door dit op te nemen, maken we de waarde COMMON_ANODE bekend. Later gaan we in de functie showLed kijken of deze is gedefinieerd
#ifdef COMMON_ANODE
  red = 255 - red;
  green = 255 - green;
  blue = 255 - blue;
#endif

en als dat het geval is, dan draaien we de waarden om, om de problemen met "Bij de ene is hoge waarde uit en lage aan, bij de andere is hoge waarde aan en een lage waarde uit." Op te vangen. De werking is nu zoals je zou verwachten.

Heb je een Kathode LED, dan moet je de #define regel uitcommentariseren of verwijderen.




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.