Go Down

Topic: Taster abfragen, Anzahl der Betätigungen speichern und wiedergeben (Read 204 times) previous topic - next topic

Kelvin98

Hey Leute,

bin etwas länger mit dem Arduino beschäftigt aber immer nur teilweise und nicht jeden Tag.

Würde mich freuen wenn mir jemand bei dem Programmcode helfen könnte :)

Meine Hardware / Schaltung:

4 LED's die über einen Transistor eingeschaltet werden.
1 LED als Status LED
2 Taster: Ein Taster dient als Betätigungstaster (sobald dieser Taster gedrückt wird, setzt der Arduino einen Ausgang von den 4 LED's auf HIGH. Beim loslassen wird dieser wieder auf LOW gesetzt.)
Der zweite Taster soll ein Um-/ bzw. Programmiertaster sein. Heißt, wenn ich diesen Taster innerhalb von 3 Sekunden z.B. 2x drücke, dann soll der Arduino seinen Ausgang nur für die zweite LED auf HIGH setzen.
Drücke ich den Taster 4x innerhalb von einer Sekunde, speichert der Arduino sich das ab und setzt alle LED Ausgänge auf LOW außer die vierte LED.



Hoffe mir kann dort jemand helfen. Habe viel probiert, bekomme es aber leider nicht hin :/

HotSystems

Würde mich freuen wenn mir jemand bei dem Programmcode helfen könnte :)
Welcher Programmcode ?
Ich sehe keinen.

Wenn wir dir helfen sollen, dann setze deinen Sketch hier in Code-Tags rein.
Dann sehen wir, was an deinem Sketch noch geändert werden muss.

Verwende die Code-Tags, damit der Sketch auch auf Mobilgeräten besser lesbar ist.
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Kelvin98

Genau das ist ja das Problem. Mein Programmcode ist Müll :D Es funktioniert nicht und ist nicht logisch aufgebaut. Ich muss ehrlich zugeben, ich musste einfach nur experimentieren. Trotzdessen ist nichts dabei rausgekommen, deswegen dachte ich jemand kann mir hier ein Beispielcode schreiben. Esseiden es ist sehr aufwendig :/

HotSystems

Sicher gibt es jemanden, der dir den Sketch schreibt, einfach nur lange genug warten.
Nur dann lernst du nichts.

Normal heißt es hier "Hilfe zur Selbsthilfe", also deinen Sketch zeigen und wir helfen dir.
Daraus lernst du auch etwas.

Und Beispielsketche findest du reichlich. In der IDE und im Web.
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Kelvin98

#4
Oct 13, 2017, 12:24 pm Last Edit: Oct 13, 2017, 01:26 pm by uwefed Reason: add CODE TAGS </>
Code: [Select]
int myLED[] = {10,11,12,13};
const int t1 = 6;
const int p1 = 7;
const int statusled = 9;

int ptaster = 0;
int taster = 0;

void setup(){
pinMode(myLED,OUTPUT);
pinMode(t1,INPUT);
pinMode(p1,INPUT);
pinMode(statusled,INPUT);
}


void loop(){
ptaster = digitalRead(p1);
taster = digitalRead(t1);

    // Eigentliche Programmausführung
int speicher = 10;

if (taster == HIGH)
{
 digitalWrite(myLED[1],HIGH);
}
else
{
 digitalWrite(myLED[1],LOW);
}



     // Programm für den Hochsummierer
if (ptaster == HIGH)
{
 int Wert = myLED;
 for (int myLED = 0; myLED < 10; myLED++){
   Wert[1]=myLED;
}
else

}
}





Weiter habe ich nicht gemacht. Dort habe ich schon aufgegeben :D Und das Programm läuft nicht.

HotSystems

Und warum liest du meine Beiträge nicht durch
Ich hatte von Code-Tags geschrieben.
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Kelvin98


HotSystems

Achso sorry, kann ich leider erst später machen :)
Dann mach es bitte in deinem vorherigen Post nachträglich.
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

guntherb

Versuche erstmal den Ablauf zu strukturieren.

Das hat noch gar nichts mit programmieren zu tun, sondern damit, sehr detailliert zu überlegen, was passieren soll.

Da du Zeitbedingungen hast (in 3 Sekunden 2x drücken) musst du dir auch merken, wann die tasten gedrückt wurden.

Erst wenn du dir darüber klar bist wie genau die Logik und der Ablauf funktionieren soll, dann kannst du anfangen zu programmieren.

Hilfreich dafür sind z.B. Flussdiagramme, aber vor allem Papier und Stift....
Grüße
Gunther

agmue

Hilfreich dafür sind z.B. Flussdiagramme, aber vor allem Papier und Stift....
Du bist aus dem letzten Jahrtausend, heute muß es eine App sein ;)

@Kelvin98: Wichtig bei Tasten ist es, zwischen dem Tastenzustand und seiner Veränderung (Flanke) zu unterscheiden:

Code: [Select]
if (taster == HIGH) {} // Zustand

if(!altTaster && aktTaster) {} // positiver Flanke

if(altTaster && !aktTaster) {} // negativer Flanke


Was mir noch auffällt:

Code: [Select]
pinMode(t1,INPUT); // PullUp- oder PullDown-Widerstand?
pinMode(p1,INPUT); // PullUp- oder PullDown-Widerstand?
pinMode(statusled,INPUT); // eine LED als Eingang?

Go Up