Forum: Mikrocontroller und Digitale Elektronik Anfänger sucht Tipps von Profis :)


von Thorsten S. (thorstenst)


Lesenswert?

Hallo Profis..

ich bin neu auf dem Gebiet der Mikrocontroller, bzw. hab noch nicht mal 
richtig angefangen, bin aber ehrgeizig.
Ich würde gerne ein kleines Projekt in Angriff nehmen, das eigentlich 
wie ein Dartautomat ablaufen soll.
Ich habe eine Dartscheibe, die ja wie eine Tastaturmatrix aufgebaut ist. 
Anzeige der Punkte etc. soll über
7 Segmentanzeigen funktionieren. Anzahl der Würfe über LEDs..., wie das 
theoretisch funktionieren soll kann ich mir vorstellen
auch das Programm kann ich bestimmt mit ein bisschen Zeit in C 
hinbekommen, da ich selbst Software-Entwickler bin.

Nur mit dem Speichern des Programmes/Spieles bin ich mir noch nicht 
sicher wie das funktionieren soll.
- Reicht dafür ein ATmega2560 oder ATmega328 aus?
- Oder sollte es doch lieber ein ARM sein?
- Wenn das Spiel nicht auf dem Mikrocontroller passt wie kann ich es 
auslagern?
- Wie werden z.B. Spielstände oder Credits gespeichert auch wenn der 
Strom weg ist?

Ich hätte gedacht das ich zum üben etc. ein Arduino Kit benutzen könnte
da dort z.B. auch schon 7-Segmentanzeigen und ein Ultraschallsensor 
dabei ist.

Also wenn ihr mir ein paar Tipps geben könntet wäre das super. Ich will 
keinen vorgefertigten Code oder ähnliches.
Auch ist mir klar das ich noch Grundlagen zum Mikrocontroller brauche 
etc.
Ein paar Stichwörter zu meinen Fragen, wonach ich dann im Netz suchen 
kann, würden mir erstmal weiterhelfen.
Alles andere ergibt sich dann :)

Mfg
 Thorsten

von Karl H. (kbuchegg)


Lesenswert?

Thorsten S. schrieb:

> Nur mit dem Speichern des Programmes/Spieles bin ich mir noch nicht
> sicher wie das funktionieren soll.
> - Reicht dafür ein ATmega2560 oder ATmega328 aus?

Dicke

> - Oder sollte es doch lieber ein ARM sein?

Wofür?
Damit der aus lauter Langeweile Selbstmord begeht?

> - Wenn das Spiel nicht auf dem Mikrocontroller passt wie kann ich es
> auslagern?

Warum soll das nicht draufpassen?
Du kommst von der PC-Schiene - stimmts?
und du bist gewöhnt, dass selbst das popeligste Programm gleich mal ein 
paar Megabytes belegt.
Nun, auf einem µC kann man einfache Programme in ein paar 100 Bytes 
unterbringen :-)

> - Wie werden z.B. Spielstände oder Credits gespeichert auch wenn der
> Strom weg ist?

Na zb im EEPROM. Genau dafür ist es gedacht.


> Ein paar Stichwörter zu meinen Fragen, wonach ich dann im Netz suchen
> kann, würden mir erstmal weiterhelfen.

Wenn du mit Arduino anfangen willst, wie wärs mit
"Arduino Tutorial"

von Thorsten S. (thorstenst)


Lesenswert?

Hallo Karl-Heinz, vielen Dank für die schnelle Antwort.
Ja ich komme von der PC-Schiene und ja ein popeliges Programm braucht 
direkt mehrere MB ;) Aber klar wenn da viel mit Grafischer Oberfläche 
ist etc. Ist für mich immer noch schwer vorstellbar was alles auf so nen 
kleinen Dingen drauf passt ;)

Das mit dem Tutorial ist schon fast klar, die Stichwörter wie EEPROM und 
Selbstmord aus Langeweile haben mir schon weitergeholfen. Wenn noch 
jemand Tipps hat super, aber denke da komme ich hoffentlich erst einmal 
mit klar.

Vielen Dank,

 Gruß Thorsten

von Philipp K. (numeriusnegidius)


Lesenswert?

Neben dem AVR Tutorial hier gibt es, speziell für Arduino, auch zwei 
empfehlenswerte Bücher, die bei den absoluten Grundlagen anfangen, aber 
auch schon ganz spannende Sachen machen:

Englisch:

Arduino Workshop
A Hands-On Introduction with 65 Projects
von John Boxall

Deutsch:

Die elektronische Welt mit Arduino entdecken (O'Reillys Basics)
Von Erik Bartmann

Bei Oreilly gibts beide ebooks 50% billiger mit dem Code DSUG2.

von Amateur (Gast)


Lesenswert?

Wenn man von der PC-Seite kommt, ist es kaum vorstellbar, dass man in 
ein paar Kilobyte Flash ein ausgewachsenes Programm hineinbekommt.
Aber es ist so und die meisten Atmel-Prozessoren haben, wie schon 
erwähnt, auch ein Eingebautes EEPROM. Willst Du allerdings die 
Spielstände der letzten 100 Spiele, von 8 verschiedenen Leuten sichern, 
so kommst Du wahrscheinlich um eine Erweiterung (kein Problem) desselben 
oder eine kleine Flash-Karte (auch kein Problem) herum.

von MaWin (Gast)


Lesenswert?

> Ich hätte gedacht das ich zum üben etc. ein Arduino Kit benutzen könnte

Kannst du.

Zählen und Anzeigen kann schon ein ATmega8.

Spielstände speichern kann man im EEPROM, falls erwünscht.

Interessanter ist die Mechanik, und die damit einhergehenden Fehler. 
Beispielsweise wenn ein Pfeil einschlägt, wackelt der andere.

von Thorsten S. (thorstenst)


Lesenswert?

Philipp K. schrieb:
> Neben dem AVR Tutorial hier gibt es, speziell für Arduino, auch zwei
> empfehlenswerte Bücher, die bei den absoluten Grundlagen anfangen, aber
> auch schon ganz spannende Sachen machen:
>
> Englisch:
>
> Arduino Workshop
> A Hands-On Introduction with 65 Projects
> von John Boxall
>
> Deutsch:
>
> Die elektronische Welt mit Arduino entdecken (O'Reillys Basics)
> Von Erik Bartmann
>
> Bei Oreilly gibts beide ebooks 50% billiger mit dem Code DSUG2.


Die Bücher klingen von dem Inhaltsverzeichnissen schon mal sehr 
interessant. Werde mir erstmal das Deutsche besorgen und dann ggf. durch 
das englische ergänzen. Auch vielen Dank für diesen Tipp.


MaWin (Gast) schrieb:
>Interessanter ist die Mechanik, und die damit einhergehenden Fehler.
>Beispielsweise wenn ein Pfeil einschlägt, wackelt der andere.


Ja das denke ich auch, aber jetzt wird mir klar warum an den 
Dartautomaten nach dem schmeißen erstmal die Rote lampe für "nicht 
schmeißen" leuchtet und man erst wieder schmeißen sollte wenn die grüne 
lampe leuchtet.

Programm stell ich mir theoretisch vor wie: Pfeil wurde geschmissen und 
die Zahl erkannt, dann wird z.b. ne variable gesetzt, solange diese 
aktiv ist rote lampe anzeigen, sollten keine eingaben mehr erfolgen + 
gewisse zeit evtl. dann wieder zurücksetzen und grüne lampe anzeigen.
Naja ich werd es ja sehen. Danke euch!

von Karl H. (kbuchegg)


Lesenswert?

Thorsten S. schrieb:

> Programm stell ich mir theoretisch vor wie: Pfeil wurde geschmissen und
> die Zahl erkannt, dann wird z.b. ne variable gesetzt, solange diese
> aktiv ist rote lampe anzeigen, sollten keine eingaben mehr erfolgen +
> gewisse zeit evtl. dann wieder zurücksetzen und grüne lampe anzeigen.


Im Grunde ist das Problem nichts anderes als eine Entprellung von 
Tasten. Nur dass die Prellzeit um einiges länger ist.
Der Automat schaltet auf rot, sobald er eine Veränderung bemerkt und 
dann wird in regelmässigen Zeitabständen nachgesehen ob es immer noch 
Veränderungen gibt. Ist, hausnummer, 5 mal hintereinander keine 
Veränderung mehr feststellbar, dann kann man davon ausgehen dass jetzt 
wieder alles ruhig ist und der Automat geht wieder auf grün.

INteressant ist das Thema aber trotzdem, denn wie erkennt man in welchen 
Feldern Pfeile stecken, bzw. wieviele da eigentlich drinn stecken. Oder 
geht das nach dem Muster: welcher 'Taster' ist zuletzt gedrückt worden, 
selbst wenn er jetzt nicht mehr gedrückt ist (1 Feld == 1 Taster)

von Thorsten S. (thorstenst)


Lesenswert?

jup, so gesehen ist jedes feld ein eigener taster, ähnlich wie eine 
computer tastatur.

hier ein beispiel bild: http://p1.grando.hu/photos/0d/f2/ed75_1_1600.jpg

wird ein pfeil geschmissen muss man halt rausbekommen bei welchem 
matrixpunkt der pfeil eingetroffen ist und zählt die Punkte runter. dann 
wenn der nächste das gleiche feld trifft wird wieder nur einmal 
runtergezählt, da ist es egal wieviele in einem Feld stecken.
Normalerweise gehen die Felder (Segmente) wieder zurück so das der 
kontakt nicht geschlossen wird. Bleibt doch mal einer hängen, so wird 
das bei Professionellen Geräten in Display angezeigt und dann steht da 
sowas wie E17 und das 17er Segment klemmt feste ...

aber so wie du es beschrieben hast, so meinte ich das auch ^^

von MaWin (Gast)


Lesenswert?

Dieses Feld ist als Matrix verschaltet.
Um schnell entdecken zu können, wann ein Pfeil trifft,
legt man ALLE Spalten auf LOW und wartet bis IRGENDEINE Zeile auch auf 
LOW gezogen wird (die sonst durch den pull up am Eingang des uC auf high 
liegen).
Da kann man per pin change Interrupt drauf warten.
DANN erst taktet man schnell jede Spalte einzeln durch und guckt 
jedesmal ob die Zeile noch Kontakt hat. Und weil das ganze eventuell 
prellt, macht man das einige Zeit lang falls nicht gleich eine Zeile 
detektierbar ist.
Dann wartet man einige Zeit ab, bevor man den Interrupt wieder 
einschaltet und auf alle Spalten wartet.
Derweil kann das Programm ja das Display ansteuern.

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.