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
else if
09.03.2014, 13:35
Beitrag #1
else if
Hallo Arduino gemeinde,
ich habe es gewagt und versuche der einstieg in die Arduino Welt.
meine Programierkenntnisse = 0 -also es kann nur besser werden.
Als Anfang versuche Schaltungen nachzubauen und die Codes nachvollziehen.
jetzt versuche es mit "if" und "else" und habe dazu eine Frage.
als "Button" Schaltung funktioniert es einwandfrei - dh. die Schaltung ist korrekt aufgebaut., nun wollte ich es mit einem Ultraschallsensor kombinieren. Sensor funktioniert - Knopf gedrückt - messung Stopt, Diode geht auf aber sie bleibt dann immer auf ???
Hier ist der Code: kann mir hier jemand Tips geben was ich falsch mache?
Danke

#define ECHOPIN 2 // Pin to receive echo pulse
#define TRIGPIN 3 // Pin to send trigger pulse

const int buttonPin = 4; // the number of the pushbutton pin
int buttonState = 0; // variable for reading the pushbutton status
const int ledPin = 5; // the number of the LED pin


void setup()
{
Serial.begin(115200);
pinMode(ECHOPIN, INPUT);
pinMode(TRIGPIN, OUTPUT);

pinMode(buttonPin, INPUT); // initialize the pushbutton pin as an input:
pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input:

}

void loop(){

// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH)

{
// Program Start
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
// Compute distance
float distance = pulseIn(ECHOPIN, HIGH);
distance= distance/58;
Serial.println(distance);
delay(200);
}

else
{
//turn LED on:
digitalWrite(ledPin,HIGH);
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.03.2014, 21:56
Beitrag #2
RE: else if
Hallo ross,

kann es sein, dass du die alte Parallax-Ping Library benutzt?
Die bringt zur Berechnung der Distanzen unter Umständen Zeitverzögerungen von 1000 ms. Damit werden die Zeitabläufe in dem Sketch völlig überzogen. Test mal mit der New-Ping Library von hier: http://code.google.com/p/arduino-new-ping/

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2014, 05:58
Beitrag #3
RE: else if
Hi,
ich habe "New Ping" in meine Library und mein Entfernungsmesser funktioniert tadelos - es geht nur um die LED - die soweit der Schalter gedrück wird leuchtet auf (entfernunsmesser stoppt) wenn ich der Schalter los lase leuchtet die LED weiter !? sie soll normalerweise ausgehen (entfernungsmesser läuft)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2014, 10:17
Beitrag #4
RE: else if
Ich sehe in dem if keinen Code, der die LED wieder ausschaltet.
Wenn er also einmal in den else gelaufen ist, dann bleibt die auch an.

Gruß, Alex
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2014, 13:49
Beitrag #5
RE: else if
(10.03.2014 10:17)AlexRegensburg schrieb:  Ich sehe in dem if keinen Code, der die LED wieder ausschaltet.
Wenn er also einmal in den else gelaufen ist, dann bleibt die auch an.

Gruß, Alex

bei dem beispiel "Button" funktioniert

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == LOW) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);


was ist bei "meinem" Code falsch?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2014, 14:43
Beitrag #6
RE: else if
Hallo Ross
Dein Code oben endet mit
Code:
}

else
{
//turn LED on:
digitalWrite(ledPin,HIGH);
}
}

da ist nichts, was die LED wieder ausschaltet. Sie bleibt an!!
Das ist das was Alex meint.

Beim Code von dem Button ist es anders....
Vergleich einfach mal - und Du müsstest es selber erkennen.
Greetz
Sloompie

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2014, 15:35
Beitrag #7
RE: else if
(10.03.2014 14:43)Sloompie schrieb:  Hallo Ross
Dein Code oben endet mit
Code:
}

else
{
//turn LED on:
digitalWrite(ledPin,HIGH);
}
}

da ist nichts, was die LED wieder ausschaltet. Sie bleibt an!!
Das ist das was Alex meint.

Beim Code von dem Button ist es anders....
Vergleich einfach mal - und Du müsstest es selber erkennen.
Greetz
Sloompie

Hi,
bei mir ist es umgekehrt (mein Button ist ein öffner) aber das kann nicht das problem sein?

else
{
//if (buttonState == LOW)
//turn LED on:
digitalWrite(ledPin,HIGH);
}
}

ich finde auch bei "Button" Code nichts was die LED ausschaltet
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.03.2014, 15:45
Beitrag #8
RE: else if
(10.03.2014 15:35)ross schrieb:  Hi,
bei mir ist es umgekehrt (mein Button ist ein öffner) aber das kann nicht das problem sein?

else
{
//if (buttonState == LOW)
//turn LED on:
digitalWrite(ledPin,HIGH);
}
}

ich finde auch bei "Button" Code nichts was die LED ausschaltet

Guck Dir mal den folgenden von Dir geposteten Code an:
DAS ist der BUTTON Code, den Du oben gepostet hast und der, wie Du sagst funktioniert - obwohl Du nichts findest, was in dem Code die LED ausschaltet.


Zitat:// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == LOW) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);

Das in Rot ist meiner Meinung nach, die Ansage an das Board: Mach die LED aus.
Genau das fehlt aber oben. Und somit bleibt Deine LED an.
In dem Code ist es drin - daher geht sie aus!

Greetz
Sloompie

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
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