Forum: Mikrocontroller und Digitale Elektronik Programm das sich signale merkt


von Pinie (Gast)


Lesenswert?

Hallo,
ich bräuchte mal einen Rat bei einem Projekt wo ich zurzeit ein wenig 
hänge
Aufgabenstellung
Es gibt einen Taster der gedrückt wird damit ein Programm abläuft beim 
drücken des Tasters soll das Laufende Programm nicht abgebrochen werden 
sondern erst bis zum Schluss durchlaufen
Gleichzeitig soll der Microcontroller sich das Signal merken wenn der 
Taster gedrückt wird und wie oft.
Soll wie folgt z.B. aussehen
Taster ist gedrückt
Ledlauflicht von 8Leds startet
Das Programm ist bei Led 4 angekommen und Taster wird noch zweimal 
gedrückt
Somit soll nach Beendigung des Ledlauflichtes das Programm noch 
2xdurchlaufen werden

Hat da jemand vielleicht ein Beispielcode in C?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Pinie schrieb:
> ich bräuchte mal einen Rat bei einem Projekt wo ich zurzeit ein wenig
> hänge
Dann hast du ja schon was. Zeig das doch (am Besten als Anhnag in einer 
.c Datei), dann kann man darüber diskutieren.

von Pinie (Gast)


Lesenswert?

ich hange indem ich kein anfang finde

von Axel D. (axel_jeromin) Benutzerseite


Lesenswert?

gugst Du Entprellung

Dann machst Du eine Flanke und damit wird eine Variable hoch gezählt.

Bei jedem LED Durchlauf wir wieder eins abgezogen.

Fertig


Axel

von Pinie (Gast)


Lesenswert?

Ahh...
jetzt müsst Ihr mir nochmal helfen mit den Flanken ich habe noch nie 
Flanken Programmiert das ist mein Problem :(

Ich sehe mich ehr als besserer Anfänger was das Programmieren angeht

bestendank im vorraus

von nerv (Gast)


Lesenswert?

LESEN: 
http://www.mikrocontroller.net/articles/Netiquette#Keine_Rundumschlagprobleme_als_Aufgaben_stellen

Einem Bäcker (nichts gegen Bäcker) wird man eine solche Aufgabe wohl 
kaum stellen, ich gehe also davon aus dass du in der Schule / im Studium 
das nötige Wissen gelehrt bekommen hast. Wenn du natürlich nie da warst 
Pech gehabt, setz dich auf deinen Hosenboden und hol es nach. Das Forum 
ist keine 
"Wir-machen-deine-Hausaufgaben-und-du-kassierst-das-Diplom-ohne-einen-Fi 
nger-zu-rühren"-Plattform!!!

von Karl H. (kbuchegg)


Lesenswert?

Pinie schrieb:
> jetzt müsst Ihr mir nochmal helfen mit den Flanken ich habe noch nie
> Flanken Programmiert das ist mein Problem :(

Flanken erkennen ist sehr einfach.
Hast du schon tausendmal gemacht

Es geht darum festzustellen, ob sich etwas verändert hat. Dazu merkt man 
sich den jetzigen Zustand. Sieht man dann später noch einmal nach und 
ist der Zustand dann verschieden vom jetzigen Zustand, dann gab es in 
der Zwischenzeit eine Flanke

zb
warten bis eine Flanke kommt
1
  uint8_t vorher;
2
3
  vorher = Pinzustand;
4
5
  while( Pinzustand != vorher )
6
    ;

oder in der Hauptschleife etwas tun, wenn eine Flanke detektiert wird
1
  uint8_t vorher, jetzt;
2
3
  vorher = Pinzustand;
4
5
  while( 1 ) {
6
     ....
7
8
     jetzt = Pinzustand;
9
     if( vorher != jetzt ) {
10
11
        mach was;
12
        vorher = jetzt;
13
     }
14
15
     ...
16
  }

ist immer das gleiche Schema: in einer Variablen einen Zustand merken 
und etwas später vergleichen, ob er noch vorliegt. Wenn nicht, dann gab 
es eine Schaltflanke. Zb
* ein Taster wurde gedrückt
* vorher waren noch keine Schuhe im Vorzimmer -> die Flanke "Frau ist 
nach Hause gekommen" ist eingetreten
* Auto vom Sohnemann stand vorhin noch in der Garage -> die Flanke "der 
ist schon wieder zu seiner Dulcinea gefahren" ist eingetreten
* vor 10 Minuten war dein Dach noch auf dem Haus -> die Flanke 
"Wirbelsturm" ist eingetreten.
* ....

Wie gesagt: Hast du im realen Leben schon tausende male gemacht in 
unzähligen Variationen.

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.