INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
digitalRead unerwartetes Verhalten
03.01.2015, 20:39
Beitrag #9
RE: digitalRead unerwartetes Verhalten
So, habs mal getestet und gefixt. Hatte den Code wirklich nicht getestet, aber wollte auch nur damit sagen dass solche logischen Sachen nicht das Problem sind bei mir. Habe den Code komplett neu geschrieben, aber ich glaube der einzige Fehler war, dass status != status nicht funzt weils nen int und kein boolean ist.

Code:
int led = 13;
int input = 7;
int value = 0;
int lastVal = 0;

void setup()
{
  pinMode(led, OUTPUT);
  pinMode(input, INPUT);
  digitalWrite(input, HIGH);
}

void loop()
{
  int val = !digitalRead(input);
  if (lastVal != val) {
    if (val == 1) {
      if (value == 1) {
        value = 0;
      } else {
        value = 1;
      }
    }
  }
  
  digitalWrite(led, value);
  lastVal = val;
}

Über die Variablenbenamung reden wir jetzt mal nicht Big Grin sollte halt schnell gehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.01.2015, 23:05
Beitrag #10
RE: digitalRead unerwartetes Verhalten
(03.01.2015 20:39)MeRo113 schrieb:  So, habs mal getestet und gefixt. Hatte den Code wirklich nicht getestet, aber wollte auch nur damit sagen dass solche logischen Sachen nicht das Problem sind bei mir. Habe den Code komplett neu geschrieben, aber ich glaube der einzige Fehler war, dass status != status nicht funzt weils nen int und kein boolean ist.

Code:
int led = 13;
int input = 7;
int value = 0;
int lastVal = 0;

void setup()
{
  pinMode(led, OUTPUT);
  pinMode(input, INPUT);
  digitalWrite(input, HIGH);
}

void loop()
{
  int val = !digitalRead(input);
  if (lastVal != val) {
    if (val == 1) {
      if (value == 1) {
        value = 0;
      } else {
        value = 1;
      }
    }
  }
  
  digitalWrite(led, value);
  lastVal = val;
}

Über die Variablenbenamung reden wir jetzt mal nicht Big Grin sollte halt schnell gehen.

GUT....braver Schüler...Wink
aber so ab und zu prellt die Taste immer noch...Big Grin ..ich habs getestet.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.01.2015, 10:40
Beitrag #11
RE: digitalRead unerwartetes Verhalten
Hmm das Verhalten kann ich jetzt leider nicht reproduzieren. Würdest du denn etwas anders machen als ich?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.01.2015, 11:09
Beitrag #12
RE: digitalRead unerwartetes Verhalten
(04.01.2015 10:40)MeRo113 schrieb:  Hmm das Verhalten kann ich jetzt leider nicht reproduzieren. Würdest du denn etwas anders machen als ich?

Nun was da noch fehlt ist ein entprellen der Taste. Dazu gibt es Librarys die was mit Debounce im Namen führen...oder man macht sich darüber selber Gedanken. Kommt auch darauf an wie gut der Taster ist...die einen prellen mehr...die anderen weniger...und ein gewisses prellen wird ja auch schon durch die Ablaufzeit des Einleseprogrammes weggebügelt. Und zum sauber entprellen gehört immer wo eine Zeitschleife dazu wo die Zeit wo der Kontakt noch nicht sauber zu ist überbrückt. Ich mach das auch immer nur wennn Bedarf besteht weil des öfteren reicht es ja schon aus nach dem erkennen der Taste einfach die folgenden Programmteile auszuführen.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.01.2015, 15:25
Beitrag #13
RE: digitalRead unerwartetes Verhalten
Aber das ist dann ein wenig zu viel des guten. Der Taster war ja nur dafür da ein wenig den Anfang mit dem Arduino zu machen, hatte bisher nur mit dem Raspberry rumgespielt.
Jetzt kann ich mit der Kommunikation von 2 Arduinos weitermachen mit z.B. Virtual Wire. Aber leider fehlt mir dafür noch ein 2. TLL Adapter um das ganze debuggen zu können.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2015, 13:48 (Dieser Beitrag wurde zuletzt bearbeitet: 05.01.2015 13:50 von Thorsten Pferdekämper.)
Beitrag #14
RE: digitalRead unerwartetes Verhalten
(04.01.2015 10:40)MeRo113 schrieb:  Hmm das Verhalten kann ich jetzt leider nicht reproduzieren. Würdest du denn etwas anders machen als ich?
Hi,
ich glaube, dass ihr zwei unterschiedliche Taster habt. Nicht jeder Taster prellt gleichermaßen.
Gruß,
Thorsten

(03.01.2015 20:39)MeRo113 schrieb:  
Code:
pinMode(input, INPUT);
  digitalWrite(input, HIGH);
Inzwischen schreibt man das etwas einfacher und logischer so:
Code:
pinMode(input, INPUT_PULLUP);
...das Schreiben auf Eingänge ist mir suspekt, auch wenn ich weiß, dass es intern genau dasselbe macht.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste