mikrocontroller.net

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


Autor: Christian T. (stahlbart)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

$regfile = "attiny2313.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40


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

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

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

Portb = &B01100000                                          'Das ganze für die obere linke und untere rechte LED
Waitms 1
     If Pina.0 = 0 Then
Gosub Anzeigen
Else
Waitms 1
End If

Portb = &B11100000
Waitms 1

     If Pina.0 = 0 Then
Gosub Anzeigen
Else
Waitms 1
End If

Portb = &B01111000
Waitms 1
     If Pina.0 = 0 Then
Gosub Anzeigen
Else
Waitms 1
End If

Portb = &B11111000
Waitms 1
     If Pina.0 = 0 Then
Gosub Anzeigen
Else
Waitms 1
End If

Portb = &B01111110
Waitms 1
     If Pina.0 = 0 Then
Gosub Anzeigen
Else
Waitus 1
End If
Gosub Anfang

Else
Waitus 1

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

End If
Loop
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

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: Christian T. (stahlbart)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Sam .. (sam1994)
Datum:

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

Doch für die Schummelfunktion!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.