LED Würfel (Attiny2313)

OP #1930988
Lesenswert?

Guten Abend liebe uC.net Gemeinde :)

Ich meine hier auf der Seite einen Code gesehen zu haben um einen LED 
Würfel zu bauen. Man kennt das ja:
Solange man einen Taster drückt wird gezählt und wenn man ihn wieder 
loslässt, wird das Ergebnis angezeigt.
Mein Code kommt aber ohne die "umstrittene" _RND Funktion aus.
Jedesmal wenn der Eingang A0 (Pin 5) auf High gesetzt wird, wird bei 1 
wieder angefangen. Durch das schnelle Zählen wird es sogesehen schon von 
alleine Zufällig ;)
Die Ausgänge für die einzelnen Augen sind die Pins 19-13.
1
$regfile = "attiny2313.dat"
2
$crystal = 8000000
3
$hwstack = 32
4
$swstack = 10
5
$framesize = 40
6

7

8
Config Pina.0 = Input                                       'Pin (PA0) wird als Eingang definiert
9
Porta.0 = 1
10
Config Portb = Output                                       'Den gesamten PortB als Output definieren
11
Dim Warten As Byte
12

13
Warten = 1
14
    Gosub Anfang                                            'Da das ganze Programm in einer Schleife läuft, muss es hier einmal gestartet werden
15

16
    Anfang:
17
                                                             'Eigentliche Würfelfunktion
18
Do
19
If Pina.0 = 1 Then                                          'Wenn A0 High ist, wird die
20
Portb = &B10000000                                          'LED für das mittlere Auge wird angesteuert
21
Waitms 1
22
     If Pina.0 = 0 Then                                     'Wenn A0 Low ist dann
23
Gosub Anzeigen                                              'springt es zur Funktion die die Zählfunktion pausiert
24
Else
25
Waitms 1                                                    'Wenn A0 low nicht erfüllt ist soll er eine ms warten
26
End If
27

28
Portb = &B01100000                                          'Das ganze für die obere linke und untere rechte LED
29
Waitms 1
30
     If Pina.0 = 0 Then
31
Gosub Anzeigen
32
Else
33
Waitms 1
34
End If
35

36
Portb = &B11100000
37
Waitms 1
38

39
     If Pina.0 = 0 Then
40
Gosub Anzeigen
41
Else
42
Waitms 1
43
End If
44

45
Portb = &B01111000
46
Waitms 1
47
     If Pina.0 = 0 Then
48
Gosub Anzeigen
49
Else
50
Waitms 1
51
End If
52

53
Portb = &B11111000
54
Waitms 1
55
     If Pina.0 = 0 Then
56
Gosub Anzeigen
57
Else
58
Waitms 1
59
End If
60

61
Portb = &B01111110
62
Waitms 1
63
     If Pina.0 = 0 Then
64
Gosub Anzeigen
65
Else
66
Waitus 1
67
End If
68
Gosub Anfang
69

70
Else
71
Waitus 1
72

73
Anzeigen:                                                   'Soll wieder von vorne beginnen um Eingangscheck zu starten
74
      Waitus 1
75
   Gosub Anfang
76

77
End If
78
Loop
79
End

Diese Schaltung ist auf der Arbeit (bin Azubi) entstanden und diente 
eigentlich nur Lernzwecken. Sie wurde getestet und funktioniert. Wir 
haben als Taster einen Reedkontakt benutzt. Der Magnet dazu ist frei in 
einer kleinen Röhre, kann also hin und her rutschen. Schon hat man eine 
Schüttelfunktion ;)

LG
Stahl

P.S.:
Ich denke mal der Code ist ausreichend kommentiert oder? :P
Angehängte Dateien:
OP #1931008
Lesenswert?

Lehrmann Michael schrieb:

> Einen µC braucht man aber wahrlich für sowas nicht !

Ja das stimmt, da gebe ich dir Recht. Das war der zweite Würfel den wir 
gebaut haben. Der andere wurde mit den 555, Zähler, NAND und AND gebaut. 
So konnten wir zeigen, dass man so vieles auch in einem Chip haben kann 
und somit ein kleineres Gehäuse benutzen kann. SMD löten kommt erst 
nächste Woche dran ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren