Arduino verkürzt Ausschalten?

OP #4151633
Lesenswert?
• ▲
▼
Hey zusammen!

Ich komm gerade leider nicht bei meinem Sketch weiter, und zwar will ich 
das eine Led 50ms Sekunden aktiv ist sobald ein Taster betätigt wird, 
nun hab ich aber das Problem das er länger leuchtet wenn ich länger 
drück. Find leider keine Lösung gibt es soetwas wie eine Positive 
Flanke?
1
  buttonState = digitalRead(buttonPin);
2
  if ((buttonState == HIGH)&&(analogRead(A0)>512)) {        
3
    digitalWrite(ledPin, HIGH);  
4
    delay (0050);
5
    digitalWrite(ledPin, LOW);
6
  }


Ich hoffe ihr könnt mir helfen!

mfg
Gast #4171503
Lesenswert?
• ▲
▼
pseudocode:
1
while(1)
2
{
3
  if(gedrückt)
4
  {
5
     blink_led;
6
    wait 50ms; // warte insgesamt mindestens 50ms wegen prellen undso
7
     while(nicht_losgelassen); //warte bis losgelassen
8
    wait 50ms; // warte wegen prellen undso
9
  }
10

11
}
Gast #4171526
Lesenswert?
• ▲
▼
Oder um nicht sinnlos Rechenzeit zu verschwenden:
1
loop()
2
{
3
  static bool buton_pressed_old = false;
4
  
5
  bool buton_pressed_new = (digitalRead(buttonPin) == HIGH);
6
  if(buton_pressed_new && !buton_pressed_old)
7
  {
8
    // Do something if rising edge
9
  }
10
  buton_pressed_old = buton_pressed_new;
11
  
12
  // Do some other tasks
13
}
Gast #4171790
Lesenswert?
• ▲
▼
Weil nicht jeder "static" versteht :-)
Und weil es im konkreten Fall egal ist, ob es in- oder außerhalb loop() 
steht. Und dann stellt einer eine "Gesetzmäßigkeit" fest. So wie bei den 
Störchen und den Baby's. Ist das eigentlich schon seriös widerlegt? :-)
Gast #4172194
Lesenswert?
• ▲
▼
Ob Dirk K. ein solcher ist?
Ich glaube die nicht-Arduinos können das auch, das Halbwissenverbreiten.
BTW, hab mir selbst erst einige Nano's beim Chinesen geholt. Für 2,95 
bekomm ich keinen M328+USB-Chip auf eine Platine. Und gleich 
funktionieren tut's auch noch. Muß ja kein DigitalWrite() verwenden.
Gast #4172226
Lesenswert?
• ▲
▼
>Muß ja kein DigitalWrite() verwenden.

Wieso nicht, ich verwende es gerne und oft. Außerdem bastle ich diese 
Funktion für jede neue Prozessorarchitektur, die mir über den Weg läuft.
Dank digitalWrite kann ich meine Programme von AVR bis Arm und sonst 
überall laufen lassen. Und wenn's zu langsam ist, nehme ich halt etwas 
anderes. Rechenzeit ist aber meistens nicht das Problem.
Gast #4172298
Lesenswert?
• ▲
▼
Das war nur zur Abwehr der üblichen Vorurteile gemeint. Ich bin da 
zwiegespalten. Einerseits find ich manche Dinge nicht besonders hübsch 
gelöst, andererseits ist so eine Arduino Lib eben eine schnelle Lösung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren