ATtiny2313 Würfel


Hier mal meine kleine Experimentierschaltung mit einem ATtiny2313. Der ist etwas besser ausgestattet. Damit lässt sich z.B. bei einem Würfel jede LED einzeln ansteuern.

// attiny2313
// L1 L2  L3
//    L4
// L5 L6  L7
// PD0=L1, PD1=L2, PD2=L3, PD3=L4, PD4=L5, PD5=L6, PD6=L7
// PD* = 0, led an
// taster nach GND an PB0
// bernd, dh4bm

#include <avr/io.h>    
#include <stdlib.h>

int main(void)
{
int i=7; // Fuer Start alle LED an
DDRD |= _BV(PD0); // Datenrichtungsregister PD0
DDRD |= _BV(PD1); // Datenrichtungsregister PD1
DDRD |= _BV(PD2); // Datenrichtungsregister PD2
DDRD |= _BV(PD3); // Datenrichtungsregister PD3
DDRD |= _BV(PD4); // Datenrichtungsregister PD4
DDRD |= _BV(PD5); // Datenrichtungsregister PD5
DDRD |= _BV(PD6); // Datenrichtungsregister PD6
// als Ausgang setzen
DDRB &= ~_BV(PB0); // Eingang PB0
PORTB |= _BV(PB0); // Pull Up an PB0 aktivieren

while (1) {
if (bit_is_clear(PINB,0)) // taste gedrueckt ?
{i=rand() % 6 + 1; // neue zufallszahl zwischen 1 und 6 erzeugen
if (i==1)
{PORTD &= ~_BV(PD3); // LED 4 an
  PORTD |= _BV(PD0); // LED 1,2,3,5,6,7aus
  PORTD |= _BV(PD1);
  PORTD |= _BV(PD2);
  PORTD |= _BV(PD4);
  PORTD |= _BV(PD5);
  PORTD |= _BV(PD6);}
if (i==2)
{PORTD &= ~_BV(PD0); // LED 1,7 an
  PORTD &= ~_BV(PD6);
  PORTD |= _BV(PD1); // LED 2,3,4,5,6 aus
  PORTD |= _BV(PD2);
  PORTD |= _BV(PD3);
  PORTD |= _BV(PD4);
  PORTD |= _BV(PD5);}
if (i==3)
{PORTD &= ~_BV(PD0); // LED 1,4,7 an
  PORTD &= ~_BV(PD3);
  PORTD &= ~_BV(PD6);
  PORTD |= _BV(PD1); // LED 2,3,5,6 aus
  PORTD |= _BV(PD2);
  PORTD |= _BV(PD4);
  PORTD |= _BV(PD5);}
if (i==4)
{PORTD &= ~_BV(PD0); // LED 1,3,5,7 an
  PORTD &= ~_BV(PD2);
  PORTD &= ~_BV(PD4);
  PORTD &= ~_BV(PD6);
  PORTD |= _BV(PD1); // LED 2,4,6 aus
  PORTD |= _BV(PD3);
  PORTD |= _BV(PD5);}
if (i==5)
{PORTD &= ~_BV(PD0); // LED 1,3,4,5,7 an
  PORTD &= ~_BV(PD2);
  PORTD &= ~_BV(PD3);
  PORTD &= ~_BV(PD4);
  PORTD &= ~_BV(PD6);
  PORTD |= _BV(PD1); // LED 2,6 aus
  PORTD |= _BV(PD5);}
if (i==6)
{PORTD &= ~_BV(PD0); // LED 1,2,3,5,6,7 an
  PORTD &= ~_BV(PD1);
  PORTD &= ~_BV(PD2);
  PORTD &= ~_BV(PD4);
  PORTD &= ~_BV(PD5);
  PORTD &= ~_BV(PD6);
  PORTD |= _BV(PD3);} // LED 4 aus
}
if (i==7)
{PORTD &= ~_BV(PD0); // alle LED an
  PORTD &= ~_BV(PD1);
  PORTD &= ~_BV(PD2);
  PORTD &= ~_BV(PD3);
  PORTD &= ~_BV(PD4);
  PORTD &= ~_BV(PD5);
  PORTD &= ~_BV(PD6);}
}
return(0);
}


Bild "wuerfel-2313.png"

wuerfel-att2313.zip

In diesem ZIP-File ist meine Schaltung sowie mein C-Programm enthalten. Diese Schaltung ist auch recht gut für allerlei Experimente geeignet. Die nicht benutzen Port's können auch in die Versuche einbezogen werden. Ich experimentiere auf einem Steckboard. Das macht sich richtig gut.

Dann viel Spass beim Basteln.



zum Seitenanfang