Der LED Bargraph muss über Multiplexing angesteuert werden, dazu eignet sich neben Transistoren und Schieberegister auch der (über ebay günstig erhältliche) Treiber-IC "MAX7219".
Bauteile:
Die Funktion setBAR(), im Quellcode unten beschrieben, vereinfacht die Ansteuerung der einzelnen Segmente.
Links:
Der Pin 1 des Bargraphs befindet sich links unten.
Kontakt: Stefan Kugler
/* Using an Adafruit Bi-Color (Red/Green) 12-LED Bargraph controlled by a MAX7219 and the LedControl-library Stefan Kugler <kugler.s@borgmistelbach.ac.at> setBar licensed under CC BY 2.0 something like a library may follow */ #include "LedControl.h" LedControl lc = LedControl(9,8,7,1); int i = 0; int dir = 1; void setup() { lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0); } // Controlling an Adafriut LED bargraph (Product ID 459) // LedControl-Object has to be named "lc" // int led: 0-11 // int color: 0: red, 1: green, 2: orange // int state: on/off void setBar(int led, int color, boolean state) { int c = color % 3; led = led % 12; int r = led % 4; int e = led / 4; switch(c) { case 0: lc.setLed(0,r,e,state); break; case 1: lc.setLed(0,r+4,e,state); break; case 2: lc.setLed(0,r,e,state); lc.setLed(0,r+4,e,state); break; } } // setBar END void loop() { setBar(i % 12, i/12,true); delay(20); setBar(i % 12, i/12,false); i = i + dir; if (i > 33) dir = -1; if (i < 0) dir = +1; }
void loop() { for(int k = 0; k < 12; k++) { for(int n = 11; n >= k; n --) { setBar(n, 1, true); delay(30); setBar(n, 1, false); } delay(100); setBar(k, 0, true); } lc.clearDisplay(0); delay (100); }