Sparrow-App: Lauflicht mit 16 Leuchtdioden

von Hermann Nieder
Lauflicht mit 16 Leuchtdioden
In dieser Sparrow-App steuert der ATtiny13 auf einer Sparrow-Platine einen Vier-Bit-Binärdekoder/ Demultiplexer an, an dessen 16 Ausgängen jeweils eine Leuchtdiode über einen gemeinsamen Vorwiderstand an Vcc angeschlossen ist. Im Bild ist an allen Ausgängen des SN74154 zusätzlich eine von 16 kreisförmig auf einer Platine angeordneten Leuchtdioden über einen gemeinsamen Vorwiderstand an Vcc angeschlossen. Die grünen und gelben Leuchtdioden werden fortwährend im Uhrzeigersinn ein- und ausgeschaltet, während die roten Exemplare auf dem Steckboard nacheinander einzeln von links nach rechts aufleuchten.
Beschaltung
Dies ist das Schaltbild des von einem Sparrow gesteuerten Lauflichts. Von den für das kleine Projekt notwendigen 16 Leuchtdioden sind der Übersichtlichkeit wegen nur 2 dargestellt. Das Programm für den ATtiny13 auf der Sparrow-Platine wurde in C entworfen. Taster S2 wird in diesem Projekt nicht verwendet, PORTB.2 dient hier als Ausgang! Mit S1 kann man die Taktfrequenz des Lauflichts in einem bestimmten Bereich einstellen.
Dies ist ein Auszug aus dem Programlisting dazu:
/* Lauflicht*/
#include <avr/io.h> 
#include <util/delay.h> 
unsigned char  n,p,portwert;
int t;
#define setbit(P,BIT)  ((P) |= (1<<(BIT)))
#define clearbit(P,BIT) ((P) &=~(1<<(BIT)))


void mydelay(int t)
{
  for (p=0;p<t;p++)
  {
    _delay_ms(5);
  }
}

int main(void) {
  DDRB=0b00011110;   // PORTB.1,PORTB.2, PORTB.3 und PORTB.4 

  t=20;

  while(1)
  {

    if(!(PINB &(1<<PB0)))   
    {
      t++;
    }   
    for (n=0;n<16;n++)
    {
      switch(n)
      {
      case 0:
        PORTB=0b00000000;
        mydelay(t);
        break;
      case 1:
        PORTB=0b00000010;   
        mydelay(t);
        break;
        ...
        case 14:
        PORTB=0b00011100;
        mydelay(t);
        break;

      case 15:
        PORTB=0b00011110;
        mydelay(t);
        break;

      default:
        break;
      }
    }// end for

  } // end while(1)       
}


Ganz nah dran
Links und Referenzen: