Forum: Projekte & Code LED Würfel (Attiny2313)


von Christian T. (stahlbart)


Angehängte Dateien:

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

von Lehrmann M. (ubimbo)


Lesenswert?

Christian T. schrieb:
> 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 ;)

Das ist eine hervorragnede Idee.
Einen µC braucht man aber wahrlich für sowas nicht !

von Christian T. (stahlbart)


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

von Sam .. (sam1994)


Lesenswert?

Lehrmann Michael schrieb:
> Einen µC braucht man aber wahrlich für sowas nicht !

Doch für die Schummelfunktion!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.