Punktezähler Bogensport

Hallo liebe Arduino-Gemeinde,
ich habe mal ein paar Fragen zu meinen aktuellen Projekt und hoffe hier Hilfe zu finden^^
Also es geht um einen Punktezähler fürs Bogenschießen.
Geplannt waren 7 Taster für die Punkte: 20-16-14-10-8-4-0 und einen für einen Reset
Dazu wollte ich noch mein HD77840 LCD zur Anzeige benutzen.
Es werden 30 Ziele, an jedem werden die Punkte gezählt und am Ende hat man einen Endstand an Punkten
Jetzt habe ich ein paar Probleme:

  1. Auf meinen Arduino UNO gehen mir die Ports aus und da wollte ich fragen ob man dieses Display mit weniger als den 6 Pins ansteuern kann.
  2. Wie programmiert man diesen Zähler... Ich hab bis jetzt immer nur Zähler gefunden die einen Taster haben und damit nur einen Wert der aufaddiert wird. Geht des auch mit mehr Tastern und mehr Werten?

Danke jetzt schonmal im Voraus^^

Weniger als 6 geht nicht, es sei denn du steigst auf I2C um. Da gibt es Adapter:

Das gibts auch fertig mit Displays drauf und ich würde dir es für zukünftige Projekte empfehlen.

Was du noch machen kannst ist eine Port-Erweiterung über Schieberegister:

Wobei du da nicht das Display mit ansteuern kannst es sei denn du schreibst die Library um. Das geht mit einem Parallel-In/Serial-Out (PISO) Register (z.B. 74HC165) auch anders herum, wird aber für Taster vielleicht problematisch sein, da du ständig das gesamte Register reinschieben musst um die Tasten zu erfassen.

Natürlich geht das auch anders. Du musst halt die Taster abfragen und je nachdem was gedrückt wurde was anderes auf die Variable addieren.

Zähler:
if taster 1 gedrückt
Zähler =+20;
if taster 2 gedrückt
Zähler =+ 16
ecc

Ist es eigentlich möglich die Taster über die Analogpins zu nutzen?
Wenn des gehen würde, hätte ich wieder genug Ports frei für Taster und LCD.

In Grenzen, ja. Mit einem Widerstandsnetzwerk:

http://tronixstuff.wordpress.com/2011/01/11/tutorial-using-analog-input-for-multiple-buttons/

Das ist wahrscheinlich zuverlässiger als über ein Schieberegister, da du damit sofort den Tastendruck bemerkst, bzw. man schneller Einlesen kann. Wird die beste Option für dich sein und es ist wesentlich einfacher aufgebaut.

Du kannst die Analogpins auch als digital Ein/Ausgänge benutzen. Einfach mit pinMode(Ax,INPUT) und dann digitalRead(Ax) wie gewohnt. Dass die Pins A0 bis A5 auch als Anlogeingänge benutzt werden können, ist einfach zusätzliche Peripherie im Atmega, die du verwenden kannst oder auch nicht.

Digitalduino: R2R Button Resistor Ladder Mir ist schleierhaft was das mit einem R2R Netzwerk zu tun hat.
http://tronixstuff.wordpress.com/2011/01/11/tutorial-using-analog-input-for-multiple-buttons/ so kann bei Drücken mehrerer Tasten immer nur eine Taste erkannt werden

Ich sehe das analoge Einlesen von Tasten nicht langsamer als über ein Schieberegister. Ich sehe über ein Schieberegister sicherer und schneller wenn Du den SPI-verwendest.

Grüße Uwe

Yokaido:
Ist es eigentlich möglich die Taster über die Analogpins zu nutzen?
Wenn des gehen würde, hätte ich wieder genug Ports frei für Taster und LCD.

Ja, Du kannst Analogpins auch nutzen als wären es Digitalpins und einen Taster damit auswerten.

Allerdings kannst Du mit einem Analogpin auch fünf (oder sogar mehr) Taster auswerten, indem Du nicht nur fünf Buttons, sondern auch sechs Widerstände an einem Analogpin anschließt und dann beim Drücken jedes Buttons per analogRead eine andere Spannung einlesen kannst, die dann einem gedrückten Button zugeordnet wird. Einziger Nachteil: Mehrere gleichzeitig gedrückte Taster können nicht mehr einzelnen gedrückten Tasten zugeordnet werden.

LCD-Displays gibt es auch gleich fertig mit I2C-Adapter zu kaufen, so dass Du nicht löten brauchst. Diese benötigen nur die zwei I2C Pins sowie 5V und Ground als Anschluss.

Die Version mit mehreren Tasten gleichzeitig gibt es hier:
http://tronixstuff.wordpress.com/2012/02/29/tutorial-analog-input-for-multiple-buttons-part-two/

Allerdings liegen da die Werte schon bei 4 Tasten sehr eng beinander. Hier sollen es 7 werden. Wobei das hier glaube ich aber nicht gebraucht wird.

Serenifly:
Die Version mit mehreren Tasten gleichzeitig gibt es hier:
http://tronixstuff.wordpress.com/2012/02/29/tutorial-analog-input-for-multiple-buttons-part-two/

Allerdings liegen da die Werte schon bei 4 Tasten sehr eng beinander. Hier sollen es 7 werden. Wobei das hier glaube ich aber nicht gebraucht wird.

ok, DAS ist ein R2R Netzwerk und ist im Andeffekt ein D/A Wandler. Jeder Taste hat eine verschiedene Wertigkeit und erhöt die Spannung um diesen wert.

Grüße Uwe

Serenifly:
Allerdings liegen da die Werte schon bei 4 Tasten sehr eng beinander.

Die Schaltung taugt nicht so viel, wenn die Werte dicht beieinander liegen. Das liegen sie allerdings gar nicht, wenn man davon ausgeht (und das als gegeben nimmt): Tastenkombinationen, also mehrere gedrückte Tasten auf einmal, lassen sich damit nicht unterscheiden. Tasten dürfen nur einzeln gedrückt werden und geben dann einen eindeutigen Code. Allerdings braucht man keine 2 Widerstände pro Taster, es reicht ein Widerstand mehr als man Taster auswerten möchte.

Im Zweifelsfall für die Buttons und Widerstände am Analogpin die Schaltung nehmen, wie sie beim Keypad-Shield verwendet wird, da ist das vernünftig gemacht und die Werte der 5 Buttons liegen ordentlich auseinander:
http://www.dfrobot.com/image/data/DFR0009/LCDKeypad%20Shield%20V1.0%20SCH.pdf

Mit 2 Analogports hätte man dann 10 Buttons, also nicht nur ausreichend Buttons für 7 verschiedene Punktwerte, sondern auch noch für die Buttons "Storno letzte Eingabe" und "Vorheriges Ziel", "Nächstes Ziel".