• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Farb-Memory Spiel mit AVR, LCD-Display und Ton-Ausgabe

AlexanderD

Geocacher
OK. Ich find den Fehler nicht. Vlt hab ich irgendein Bauteil zerschossen, vlt. ist es auch die 4,5 V Spannung die fürs Display zu niedrig ist. :motz: :kopfwand:

Ich hab mir noch mal n neuen "Bausatz" bei Reichelt bestellt und will das Ganze noch mal sauber aufbauen. Um den Fehler etwas eingrenzen zu können: Müsste die Schaltung auch ohne Display und I2C klappen? Also qualsi nur der programmierte Tiny, die LEDs und die Schalter? Kann es sein, dass der Fehler gar nicht an der Verschaltung sondern am Programm liegt? Soll heißen: Sicher, dass das Programm zum Schaltplan passt?

Devor ich nämlich jetzt ggf. noch n teures Display zerschieße würde ich gerne erst mal die Grundfunktion aktiviert bekommen.

Vielen Dank noch mal für die Geduld mit mir. Wenn ich das Ding tatsächlich irgendwann mal funktionstüchtig erstellt habe und es im Cache verbaut ist gibts in der Cachebeschreibung ne lobende Nennung.
 
OP
qByter

qByter

Geocacher
Müsste die Schaltung auch ohne Display und I2C klappen?
Kann ich leider nicht genau sagen, aber ich vermute nicht. Gut möglich, dass er dann bei der Initialisierung hängen bleibt...
Es sei denn Du nimmst alle "lcd", "cls" und "locate" Befehle und das "lcdinit" raus.

Da ist jetzt klassisches "Fehler eingrenzen" angesagt. Ich würde zunächst mal ein einfaches Programm nehmen, das nur die drei LEDs zum Blinken bringt - dann weisst Du schonmal, dass der Tiny läuft.
$regfile = "ATtiny24.DAT"
$crystal = 1000000 'Frequenz des internen Oszillators
Config Portb = &B11111100 'Ports B0 und B1 auf Eingang
Config Porta = &B11110111 'Port A3 auf Eingang

Do
Porta.7 = 1
Wait 1
Porta.7 = 0
Portb.2 = 1
Wait 1
Portb.2 = 0
Porta.6 = 1
Wait 1
Porta.6 = 0
Loop
Die 5V für´s Display würde ich auch einfach mal ausprobieren, um da Gewissheit zu haben - die Schaltung kannst Du problemlos mit 5V betreiben.

Du könntest auch mal testweise die "R/W"-Leitung vom Display auf Masse legen. Die wird vermutlich nicht benötigt von der Library und manche Displays brauchen dann Masse.
 

AlexanderD

Geocacher
Danke für die Tips. Leider haben auch die nichts gebracht. Das Blinkprogramm läuft ohne Probleme.

Ich hab jetzt mal versuch 5V draufzugeben und auch R/W hab ich mal auf Masse gepackt. Nichts geht. Die LEDs rühren sich genausowenig wie das Display. Aber bei 5V passiert folgendes:

Die Hintergrundbeleuchtung vom Display geht an sobald man Spannung auf die Schaltung gibt. Drückt man einen Knopf wird das Display etwas heller und bleibt auch hell, bis man die Spannung wieder wegnimmt.

Morgen kommt ein Paket. Dann werd ich alles noch mal aufbauen...
 

axel8875

Geonewbie
Hallo Alexander,

ich hatte das gleiche Problem wie du, bei mir lag es an einem Festspannungsregler der selbst ins schwingen kam (keine Kondensatoren an Ein-und Ausgang).
Leider läuft bei mir weder das Farbspiel, noch das Blinkprogramm. Habe schon alles erdenkliche probiert und natürlich über die Fuses einen Tiny unbrauchbar gemacht :kopfwand:
Ich werde aber auf keinen Fall augeben....
 

AlexanderD

Geocacher
Bin heute aus dem Urlaub wiedergekommen. Morgen werde ich wieder basteln und dann meine neuesten Erkenntnisse hier wieder posten. Ich hoffe, dass es dieses mal klappt.
 

axel8875

Geonewbie
Kleines Update, das Blinkprogramm läuft nun mittlerweile. Habe nichts geändert, nur die neuste Version des AVR Studios verwendet. Leider funktioniert das eigentliche Farbspiel immer noch nicht, aber ich bleibe dran...
 

axel8875

Geonewbie
Also das Farbspiel Programm scheint zu laufen, die LEDs blinken. Nur auf dem Display erscheinen nur weiße Kästchen. Alle Verbindungen durchgemessen, Display und Controller ausgetauscht. So wie es aussieht liegt es noch an der Software.
 

Pretender

Geocacher
Hallo
Ich habe mal versucht das Programm mit 4 Taster und 4 LEDs zu erstellen....
Mein Prozessor war oder ist aber ein Attiny 2312 benützt
das compile geht auch ohne Fehler komischer
komischer weise macht er beim drauf spielen mehrere Errors darunter auch Fuse
und was noch schlimmer ist er erkennt dann auch nicht mehr den Prozessor und ich habe es mit einen Atmega8 auch versucht und hatte das selbe Problem :kopfwand:
bitte um Hilfe :gott: :gott: :gott:
Gruß Christopher
hier mein Programm:




$regfile = "attiny2313.dat"
$crystal = 1000000
$hwstack = 20 'Hardwarestack herabsetzen

Declare Sub Show_level
Declare Sub Show_location
Declare Sub Beep_error
Declare Sub Beep_ok
Declare Sub Get_level_input
Declare Sub Verify_single_input

Config Portb = &B11110000 'Ports B0 und B3 auf Eingang
Portb.0 = 1 'PullUp für Taster "gelb" ein
Portb.1 = 1 'PullUp für Taster "grün" ein
Portb.2 = 1 'PullUp für Taster "rot" ein
Portb.3 = 1 'PullUp für Taster "weiß" ein
Config Debounce = 25 'Schwelle für Entprellen der Taster, ggf. erhöhen

Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , _
Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0 'LCD im 4-Bit Mode betreiben
Config Lcd = 16 * 2 '16x2 Dotmatrix LCD


Dim A As Byte
Dim B As Byte
Dim Level As Byte
Dim Farbfolge(8) As Byte
Dim Aktzeichen As Byte
Dim Farbe_zu_pruefen As Byte
Dim Farbe_korrekt As Byte
Dim Zaehler As Integer

Config Timer1 = Timer , Prescale = 1 'Timer für Zufallszahlen
Dim ___rseed As Word
Enable Timer1
Start Timer1
Initlcd 'LCD initialisieren

Start: 'Hauptschleife - Anfang der Eingabe / Begin des Spiels

Cls 'LCD Display loeschen
Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
Lcd "*FARBEN-MEMORY*" 'String auf Display anzeigen
Locate 2 , 1
Lcd " Taste = START"

Do 'Auf Tastendruck warten
Debounce Pinb.3 , 0 , Start_game 'Taste "weiß" gedrückt
Debounce Pinb.2 , 0 , Start_game 'Taste "rot" gedrückt
Debounce Pinb.1 , 0 , Start_game 'Taste "grün" gedrückt
Debounce Pinb.0 , 0 , Start_game 'Taste "gelb" gedrückt
Loop


Start_game:

___rseed = Timer1 ' Rseed setzen, damit Zufallszahlen abhängig vom Tastendruck sind

Wait 1 'Kleine Pause

A = 1
Level = 1 'Level auf 1 zurücksetzen
Cls

Do 'Level-Schleife
Locate 1 , 1
Lcd "Level "
Locate 1 , 7

Select Case Level 'Je nach Level die Blinkanzahl setzen
'Select statt FOR-Schleife, um besser testen/eingreifen zu können

Case 1:
Lcd "1"
A = 3 'Level1: 3 Blinkzeichen

Case 2:
Lcd "2"
A = 4 'Level2: 4 Blinkzeichen

Case 3:
Lcd "3"
A = 5 'Level3: 5 Blinkzeichen

Case 4:
Lcd "4"
A = 6 'Level4: 6 Blinkzeichen

Case 5:
Lcd "5"
A = 7 'Level5: 7 Blinkzeichen

Case 6:
Lcd "6"
A = 7 'Level5: 7 Blinkzeichen

Case 7:
Show_location 'Alle Level durchlaufen, Zeige Location
Exit Do 'Zum Programm-Ende

End Select

For B = 1 To A 'Array mit Zufallszahlen füllen
Farbfolge(b) = Rnd(30) + 10 'Zufallszahl von 1-3 generieren
Farbfolge(b) = Farbfolge(b) / 10
Next B

Wait 2 'Pause bis zum Start der LEDs

Show_level 'LEDs blinken lassen, je nach Level
Beep_ok 'Signalton signalisiert Eingabebeginn
Get_level_input 'Benutzereingaben abfragen und prüfen

Locate 2 , 1
Lcd " "

Level = Level + 1 'Dieses Level war erfolgreich, Level erhöhen
A = 1
Loop


End 'Programm Ende!


' ---------------------- SUB-Routines ----------------------- '


Sub Show_level 'LEDs je nach Level blinken lassen

Locate 2 , 1
For B = 1 To A 'A = Anzahl Blinker, pro Level unterschiedlich

Select Case Farbfolge(b)
Case 1:
Portb.4 = 1 'weiß LED
Case 2:
Portb.5 = 1 'rote LED
Case 3:
Portb.6 = 1 'grüne LED
Case 4:
Portb.7 = 1 'gelbe LED
End Select

Lcd "-" 'Pro Blink ein Zeichen aufs LCD schreiben

Zaehler = Level * 50 'Mit zunehmendem Level die Blinkdauer verringern
Zaehler = 600 - Zaehler '450ms Basis, pro Level 50ms abziehen
Waitms Zaehler

Portb.4 = 0 'LEDs wieder ausschalten
Portb.5 = 0
Portb.7 = 0
Portb.6 = 0

Waitms Zaehler 'Pause bei "LEDs aus"
Next B

End Sub


Sub Get_level_input 'Benutzereingaben annehmen und prüfen

Zaehler = 1 'Zähler für Countdown, Eingabe zeitlich begrenzen
Aktzeichen = 1 'Aktuelle "Blink" aus dem Array
Farbe_korrekt = 2
A = A + 1

Locate 2 , 1

Do 'Tasten nacheinander abfragen und auf korrekte Eingabe prüfen
Farbe_zu_pruefen = 1
Debounce Pinb.3 , 0 , Verify_single_input , Sub 'Taste "weiß" gedrückt
Farbe_zu_pruefen = 2
Debounce Pinb.2 , 0 , Verify_single_input , Sub 'Taste "rot" gedrückt
Farbe_zu_pruefen = 3
Debounce Pinb.1 , 0 , Verify_single_input , Sub 'Taste "grün" gedrückt
Farbe_zu_pruefen = 4
Debounce Pinb.0 , 0 , Verify_single_input , Sub 'Taste "gelb" gedrückt

Zaehler = Zaehler + 1 'Zaehler für Timeout erhöhen
Waitms 10 'und 10ms warten


Loop Until Zaehler = 1000 Or Aktzeichen = A 'bis Timeout erreicht oder Alle Eingaben abgefragt

If Zaehler = 1000 Then 'Timeout 7 Sekunden erreicht?
Cls
Lcd "Zeit abgelaufen!" 'dann Fehler ausgeben und zum Anfang zurück
Beep_error
Wait 3
Goto Start
End If

End Sub


Sub Verify_single_input 'Eingabe eines Tasters auf korrekte Farbe prüfen

If Farbfolge(aktzeichen) = Farbe_zu_pruefen Then 'Aktueller Tastendruck entspricht der richtigen Farbe
Lcd "*"
Farbe_korrekt = 1 'Eingabe auf LCD bestätigen
Else 'Falsche Taste! :)
Cls
Lcd "!! FALSCH !!" 'Fehler ausgeben und zurück zum Anfang
Beep_error
Wait 3
Goto Start

End If
Aktzeichen = Aktzeichen + 1 'Aktuell zu prüfenden "Blink" erhöhen
End Sub


Sub Show_location 'Anzeige der Koordinaten
Cls
Lcd "YES - Geschafft!"
Locate 2 , 1
Lcd "N23.222 E08.567"
Sound , Portd.6 , 100 , 90 'Bisserl piepsen
Waitms 300
Sound , Portd.6 , 100 , 90
$prog &H00 , &H00 , &H00 , &H00 ' generated. Take care that the chip supports all fuse bytes.
End Sub


Sub Beep_error 'Buzzer-Ton ausgeben
Sound , Portd.6 , 70 , 1200
End Sub


Sub Beep_ok 'OK-Ton ausgeben
Sound , Portd.6 , 150 , 50
End Sub
 

Pretender

Geocacher
Fehler gefunden

$prog &H00 , &H00 , &H00 , &H00 ' generated. Take care that the chip supports all fuse bytes.
macht das problem also raus genommen
 

hihatzz

Geomaster
Ist es eigentlich möglich an einem Port eines Atmels eine LED und einen Schalter anzuschliessen?
Erst leuchten ja die LEDs, dann werden die Schalter abgefragt,
d.h. nach dem leuchten konfiguriert man die Ports um auf INPUT und schaltet den Pull-up Widerstand ein.
Schafft man es dann das Senso-Spiel mit einem Atiny24 (12 Ports) mit 4 LEDs und 4 Schalter (beides zusammen auf 4 Ports) und einer 7 Segment-Anzeige (7 Ports) zu bauen?
Welche Ports darf man nicht verwenden wenn man ISP verwendet (z.B. Port PB3 ist RESET), das manche LEDs während des Programmierens blinken würde mich jetzt nicht stören.
 

Bussard

Geocacher
hihatzz schrieb:
Schafft man es ... Atiny24 (12 Ports) mit 4 LEDs und 4 Schalter (beides zusammen auf 4 Ports) und einer 7 Segment-Anzeige (7 Ports) zu bauen?
Ja, ohne Multiplexen geht es mit 7(Anzeige, ev. 8 mit Punkt) + 4 (4 LED's) + 1(4 Schalter) = 12Pins.
Dabei kannst du alle LEDs normal verschalten, die 4 Schalter an die Abgänge eines Spannungsteilers legen, die andere Schalterseite zusammenfassen und auf einen ADC-Eingang geben. Die Spannung messen, pro Schalter ein Fenster festlegen, in dem "Taster n gedrückt" gilt, und fertig.
Hat den Nachteil, daß über den Spannungsteiler immer ein sehr geringer Strom fließt, aber da das Teil sicher einen EIN/AUS Schalter hat, kein ernsthaftes Thema.
Aber, wenn du den Platz für mehrere Widerstände hast, gibt es wohl auch Platz für einen "Professor" mit der nötigen Portanzahl, oder?

Gruß Bussard
 

AlexanderD

Geocacher
Hey,

scheint ja doch einige Leute hier zu geben die sich damit richtig gut auskennen. Kann vielleicht jemand von Euch noch mal n Schaltplan inkl. zugehörigem Programmcode posten? Ich hab das Ding vor nem Jahr frustriert in die Ecke geknallt, weil sich einfach nix getan hat.

Wäre super nett von euch.
 

stonewood

Geowizard
hihatzz schrieb:
Schafft man es dann das Senso-Spiel mit einem Atiny24 (12 Ports) mit 4 LEDs und 4 Schalter (beides zusammen auf 4 Ports) und einer 7 Segment-Anzeige (7 Ports) zu bauen?
Man kann die Schalter parallel zu 'nem LED-Pin nutzen, braucht also für die Abfrage der Schalter gar keinen zusätzlichen Port. Kostet eine Diode in Reihe mit den Schaltern. Stichwort 'Charlieplexing'. Das geht sogar mit den 4 LEDs und der 7-segment zusammen, braucht insgesamt 8 Ports.

Ich hab schon mal 2x7-segment und 4 Schalter an einen Tiny24 gehängt, bis auf das Multiplexen geht das ohne Probleme.
 

Hucky3000

Geocacher
Ich habs die Tage wieder rausgekramt. Hab nach über einem Jahr mal Zeit gehabt :)
Bin noch am zusammenlöten - mal sehen wann ich den Rest zeitlich fertig bekomme.
Freu mich schon drauf :)

Hucky
 

Hucky3000

Geocacher
Es ist so weit :)
Heute hatte ich endlich mal Zeit und auch Lust !
Vielen Dank an QByter, dass ich die Schaltung und das Programm übernehmen durfte ! Da wirst du lange dran getüftelt haben !
Klasse Sache, gefällt mir sehr gut !!

Anbei noch ein paar Bilder...

Den Lautsprecher tausche ich noch aus, ist ein bisl leise das gute Stück. Ich habe zwar einen größeren da, und auch probiert, aber im Moment nichts gescheites, um den festzukleben.

mfG Hucky
 

Anhänge

  • P1090342.JPG
    P1090342.JPG
    273,7 KB · Aufrufe: 1.189
  • P1090347.JPG
    P1090347.JPG
    280,4 KB · Aufrufe: 1.189
  • P1090360.JPG
    P1090360.JPG
    382 KB · Aufrufe: 1.189

Finckenbande

Geocacher
Hallo,

wie hast Du das Thema "9V-Block-Anschluss" gelöst ?? Ich baue meine Stationen auch meist so auf, dass der Cacher Strom mitbringt und suche (immer noch) nach einer Methode, die nicht so anfällig ist gegen
- die 1% Rowdy-Cacher
- Nässe/Korrosion
, aber trotzdem den Strom zuverlässig leiten (also auch nicht immer mal wieder eine Unterbrechung erzeugen ...

Sorry fürs Hi-jacken - aber mach doch mal ein Bild ;-)
 

Hucky3000

Geocacher
http://www.reichelt.de/Batteriehalter-fuer-9V-Block/HALTER-9V/3/index.html?;ACTION=3;LA=2;ARTICLE=44604;GROUPID=4259;artnr=HALTER+9V;SID=14UQUAc38AAAIAAFAMM6Ab915f6477851e114514ad34cfbaba0cb

Die Pinne noch etwas bearbeiten, so dass nicht alles nach dem 5. mal "Batterie abziehen" auseinander bricht, und gut ist ;)

Hucky
 

Anhänge

  • P1090363.JPG
    P1090363.JPG
    368,7 KB · Aufrufe: 1.098

AlexanderD

Geocacher
Da werd ich mich nächste Woche noch mal dran machen. Das Teil von Hucky3000 sieht schön stabil aus. Tolle Arbeit! Da muss ich noch mal n paar Knöpfe bestellen.

@Hucky3000: Kannst du mir ne PN schreiben mit den Teilen die du dafür verwendet hast?
 

Hucky3000

Geocacher
@AlexanderD

Mach ich dir fertig, ist kein großes Geheimnis. Im großen und ganzen steht in den ganzen Beiträgen ja was du benötigst.

Hucky
 
Oben