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
Taster abfragen
25.02.2016, 12:41 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016 12:44 von Rudi.)
Beitrag #1
Taster abfragen
Hallo

Ich habe ein Programm zur Erfassung einer Regelstrecke geschrieben, welches bei der Betätigung eines Tasters und einer Distanz von >=200 cm losfahren und bei <= 100 cm anhalten. Die Werte lese ich über den Serial Monitor aus und Werte Sie in Excel aus.

Doch leider kommt der Startbefehl immer wieder und der PIN, an welchem der Taster sitzt, gibt auch dann eine 1 wenn ich nur den Draht einstecke.... ich habe deshalb beinahe immer eine 1 bei Start, unabhängig von der tatsächlichen Distanz... Der Fehler ist bestimmt klein oder offensichtlich aber irgendwie sehe ich den Wald vor lauter Bäumen nicht....Huh

Code:
[code]
#include <Servo.h>
#include <LiquidCrystal.h>

//init:
Servo power;
int Distanz = 0;
int Taster = 41;
int Start =0;

LiquidCrystal lcd (48, 49, 50, 51, 52, 53);

void setup() {
  // put your setup code here, to run once:
Serial.begin (9600);
pinMode (Taster, INPUT);
power.attach (13);
lcd.begin (16, 2);
power.writeMicroseconds (1520);
}

void loop() {
  // put your main code here, to run repeatedly:
Distanz = Distanzsensor (46); //Distanzwert aus Unterprogramm
Start = digitalRead (Taster);
delay (10); //debouncing

if ((Distanz >= 200) && (Start == HIGH)) //Losfahren bei Start 1 und Distanz >= 200
{
power.writeMicroseconds (2000); //Vollgas
digitalWrite (Start, HIGH);
}

if (Distanz <= 100)
{
power.writeMicroseconds (1520); //Stillstand Motor
digitalWrite (Start, LOW);
}

lcd.setCursor (0,1);
lcd.print ("Istwert : ");
lcd.print (Distanz);
lcd.print (" cm  ");

Serial.print (Distanz);
Serial.print (" ");
Serial.print (Start);
Serial.println ();
delay (1000);
}

long Distanzsensor(int Signalpin){

  long duration = 0.0;
  long cm = 0.0;
  
  pinMode (Signalpin, OUTPUT);
  digitalWrite (Signalpin, LOW);
  delayMicroseconds (2);
  digitalWrite (Signalpin, HIGH);
  delayMicroseconds (5);
  digitalWrite (Signalpin, LOW);

  pinMode (Signalpin, INPUT);
  duration = pulseIn(Signalpin, HIGH);

  cm = duration / 29 / 2; 

  return cm;
}
[/code]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 12:50 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2016 12:51 von hotsystems.)
Beitrag #2
RE: Taster abfragen
Vermutlich hast du keinen Pulldown-Widerstand eingesetzt.
Einfacher ist es, wenn du den Taster auf LOW abfragst und einen internen Pullup-Widerstand einsetzt.

Offene Eingänge am Arduino sind sehr störanfällig.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 13:42
Beitrag #3
RE: Taster abfragen
(25.02.2016 12:50)hotsystems schrieb:  Vermutlich hast du keinen Pulldown-Widerstand eingesetzt.
Einfacher ist es, wenn du den Taster auf LOW abfragst und einen internen Pullup-Widerstand einsetzt.

Offene Eingänge am Arduino sind sehr störanfällig.

Danke für deine schnelle Antwort Cool ein 10 KOhm Widerstand gegen Masse sorgt nun für ein sauberes Signal Sleepy konnte jetzt alles beheben :3
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2016, 14:03
Beitrag #4
RE: Taster abfragen
(25.02.2016 13:42)Rudi schrieb:  
(25.02.2016 12:50)hotsystems schrieb:  Vermutlich hast du keinen Pulldown-Widerstand eingesetzt.
Einfacher ist es, wenn du den Taster auf LOW abfragst und einen internen Pullup-Widerstand einsetzt.

Offene Eingänge am Arduino sind sehr störanfällig.

Danke für deine schnelle Antwort Cool ein 10 KOhm Widerstand gegen Masse sorgt nun für ein sauberes Signal Sleepy konnte jetzt alles beheben :3

Ja, prima, das freut mich.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Neuling kommt nicht weiter, ws2812 If abfragen Tabata 8 442 19.04.2018 14:07
Letzter Beitrag: Tommy56
  Taster schalten LEDs mit Schieberegister Sonne 3 259 26.03.2018 20:08
Letzter Beitrag: hotsystems
  LCD Menü per taster Herberto 3 324 21.02.2018 17:56
Letzter Beitrag: Herberto
  LCD Menü per taster Luppi 5 3.430 18.02.2018 12:44
Letzter Beitrag: ardu_arne
  Temperatur mit Taster um +1 erhöhen T100 7 464 09.02.2018 04:58
Letzter Beitrag: T100
  Siemens TC35 Empfangspegel abfragen? Franz54 3 409 30.01.2018 19:08
Letzter Beitrag: Franz54
Tongue Testen und Abfragen von I2C devices LoroLoco 10 733 28.01.2018 02:46
Letzter Beitrag: LoroLoco
  Ein- u. Ausgänge abfragen magifix 9 2.198 07.01.2018 05:38
Letzter Beitrag: ArduTux
  led mit taster moankopf 11 801 25.12.2017 23:34
Letzter Beitrag: Chopp
  Wie Programmiere ich mehrere if-Abfragen? Mr.Purz 7 787 12.12.2017 21:25
Letzter Beitrag: Tommy56

Gehe zu:


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