Forum: Mikrocontroller und Digitale Elektronik Programmabfrage mit tastendruck


von Bernd (Gast)


Lesenswert?

Hallo,

ich habe einen Code geschrieben, mit dem ich Spannung am AD Port messe, 
und den Wert an ein Display ausgibt.

Jetzt möchte ich wenn ich einen taster drücke das man zwischen Volt und 
millivolt umschalten kann. Das umrechnen der bekoome ich hin nur nicht 
das hin und herschalten zwischen den werten.

von Karl H. (kbuchegg)


Lesenswert?

Dazu brauchst du einen entprellten Taster und eine Flankenauswertung 
dazu

Siehe Artikel
Entprellung

von Markus M. (mark_m)


Lesenswert?

Beschreib doch ein bisschen genauer die Funktionalität, die du gerne 
hättest.

Soll z.B. die Umschaltung immer bei jedem Tastendruck erfolgen oder nur 
solange die Taste gerückt wird?

Die Abfrage einer Taste kannst du per Interrupt oder per Polling in der 
main Schleife erledigen.

Grüsse

von Bernd (Gast)


Lesenswert?

Also den entprellten Taster habe ich per debounce eingefügt. Danke an 
kbuchegg.

Ich hätte gerne das man wenn man den taster drückt er zwischen zwei 
meßbereichen umschaltet.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Dann musst du jetzt nur noch mit dem Taster ein Flag umschalten und 
dieses Flag in deiner Umrechenroutine entsprechend berücksichtigen und 
damit die Berechnung umschalten.

von Dominik S. (dasd)


Lesenswert?

Ja, dann tu das doch ^^
Den restlichen Code hast du vermutlich wohl eher zusammenkopiert als 
selbst geschrieben...
Anders kann ich mir nicht erklären, dass du an einer so einfachen 
Aufgabe nun scheiterst.

Z.B. Ganz simpel:
1
if(bereich==o) gibAus(wertInMillivolt)
2
else gibAus(wertInVolt)

Die Variable bereich toggelst du eben bei Betätigung des Tasters.

PS: nicht böse gemeint. Verstehe nur nicht, dass ADC und Display klappen 
sollen und es dann an so Grundlegendem scheitert...

von Karl H. (kbuchegg)


Lesenswert?

Bernd schrieb:

> Ich hätte gerne das man wenn man den taster drückt er zwischen zwei
> meßbereichen umschaltet.


Das Prinzip lautet "Teile und herrsche"

Das eine hat mit dem anderen erst mal nichts zu tun. Deine neue 
Programmfunktionalität besteht aus 2 'Teilen'.
* der Ausgabe
* dem Taster

Das mag jetzt banal klingen, ist aber der Schlüssel. Denn die Ausgabe 
stützt sich auf eine Variable, die angibt, wie die Ausgabe zu erfolgen 
hat: In Volt oder in Millivolt. Die Ausgabe befragt dazu nur diese 
Variable und sonst nichts anderes. Ist sie 0, dann ist die Ausgabe in 
Volt, ist sie 1 dann ist die Ausgabe in Millivolt. Ein guter Name für 
diese Variable wäre zb ShowAsMilliVolt. (Oder aber alles genau umgekehrt 
- deine Entscheidung wie du da machen möchtest).

Und das andere ist die Eingabe, die bei einem Tastendruck die Variable 
von 0 auf 1 bzw. wieder zurück umstellt.

PS: Besagte Variable ist zb ein guter Kandidat, um ein Autoranging zu 
implementieren, bei dem der Messwert selber die Variable ja nach Größe 
des Messwertes auf Volt oder Millivolt stellt. Oder aber besagte 
Variable ist zb ein guter Kandidat um im EEPROM gespeichert zu werden, 
so dass beim nächsten Einschalten des Gerätes der zuletzt eingestellte 
Anzeigebereich wieder hergestellt wird.
Du siehst also, aus dem Einfachen "teile" folgen schon eine ganze Menge 
Möglichkeiten für "herrsche".

D.h. sich zu überlegen in welche Teilaufgaben, die man möglichst 
voneinander entkoppelt, man eine Aufgabenstellung zerlegen kann ist oft 
eine sehr sehr gute Idee. Bei dir lautet die Aufgabenstellung "Mit einem 
Taster möchte ich den Anzeigebereich umschalten". Das zerfällt schon 
fast trivialerweise in die Bereiche Taster-Eingabe und Anzeige. Und das 
Bindeglied ist eine Variable, die die Darstellung in einen anderen Modus 
schaltet und die von einem Taster ihre Einstellung bekommt bzw. 
verändert wird.

von Bernd (Gast)


Lesenswert?

von wegen reinkopiert!

Habs aber hinbekommen hatte die sub programme in der schleife jetzt geht 
es Danke

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.