Honigtopf
BORG MistelbachProjekteArduinoBi-Color LED Bargraph gesteuert per MAX7219

Bi-Color LED Bargraph gesteuert per MAX7219

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:

  • Arduino
  • Steckbrett
  • Steckverbinder
  • MAX7219
  • LED Bargraph
  • Elko 10µF
  • Kondensator 100nF
  • Widerstand 27kΩ

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

Quellcode

/*
  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;
}

Tetris-Effekt

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