Pages: 1 [2]   Go Down
Author Topic: Programm mit Schalter und LED  (Read 1988 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also Leute ich komme nicht drauf weil ich in while und so nicht so geübt bin. Diesen Sketch habe ich mit hilfe von Jemand anderem gemacht aber das Funktioniert nicht. Könntet ihr mir einfach den Sketch sagen daraus kann ich dann lernen.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 252
Posts: 21283
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hallo ardi
Code:
boolean schalter = false;
while ( schalter == false)
so geschrieben entspricht das einem
Code:
while(1)
weil durch die Deklaration in der vorhergehenden Zeile die Variable "schalter" immer false ist und die while-Bedingung immer wahr ist.

Code:
zaehler++;
liegt außerhalb der while Schleife und wird deshalb bei jedem Durchlauf des Loop erhöht unabhängig von der Tasterbetätigung.

Sieh Dir mal dieses Beispiel an wie dort ein LEd durch Tasterdruck ein bzw Ausgeschaltet wird.
http://danthompsonsblog.blogspot.it/2011/12/arduino-push-button-onoff-example.html

Grüße Uwe
« Last Edit: January 13, 2013, 06:28:38 am by uwefed » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das weiß ich schon und ich kann auch schon die grunddinge mit if und so aber mir ist der syntax dann nicht klar
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 252
Posts: 21283
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das weiß ich schon und ich kann auch schon die grunddinge mit if und so aber mir ist der syntax dann nicht klar
Welche Syntax?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja wie man das genau schreibt, klingt einbischen doof smiley aber ich meine das geanue Komma und wann man was einsetzt
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 252
Posts: 21283
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du meinst die syntax des IF?
http://arduino.cc/en/Reference/If
Grüße Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hy,

also die Reference ist super. Ich habe die neben den Programm immer offen. Ich fange auch gerade erst damit an. Mach erst mal wie ich mit einfachen Programme, ohne was rein zu kopiren. Wenn man dann von sein eigenes Programm den Ablauf verstanden hat, erweitere es nach und nach. Dann verstehst Du auch die Zusammenhänge.

Ich saß heut mit meinem Dad auch nen halben Tag an einem simplen Timer. Und egal. Funktioniert nun.

Nicht bös gemeint, aber die anderen haben Recht, learning by doing. Und nicht by copying.

LG.

PS: Finde den Link von uwefed garnicht verkehrt für dein Vorhaben. smiley
« Last Edit: January 14, 2013, 03:29:14 am by Rene_Merten » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nicht if, while macht mir schwierigkeiten und dann das zusammenfügen mit den anderen Programmteilen und wegenb dem Lernen:
Ich lerne indem ich einen Code sehe und ihn durch gehe. Und das mit dem Taster ist nur ein Stück in einem Größerem Programm das ich schreibe
werde. ICh kann es jetzt nicht einfach so machen denn Ich habe den "nerv" nicht dazu smiley
Könnte mir einfach jemand den Code bzw. einen leichten Anhaltspunkt (sehr leichten) zeigen, bitte smiley-sad-blue
Logged

Germany
Offline Offline
Sr. Member
****
Karma: 2
Posts: 285
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo ardi,

also eigentlich ist while gar nicht so schwer! Klar anfangs ist alles immer mal etwas "kompliziert".
Jetzt zu while:
Code:
while(solange irgendetwas bestimmtes passiert oder gleich ist, Bsp. wenn ein boolean true liefert)
{
       tue etwas bestimmtes solange die Angabe zutrifft.
}
Ist jetzt nicht gut erklärt, aber hoffe du kannst damit was anfangen !
Zu dem Sketch habe ich leider jetzt keine Zeit!
Aber ich kann dir schon zustimmen, dass man wirklich oft gut durch Beispiele lernt.
Aber bei so einer mittelschweren Aufgabe für Anfänger solte man das eventuell auch selber hinbekommen. Einfach mal alles durchgehen, was genau passieren muss !

Grüße
Lorenz
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 252
Posts: 21283
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Nicht if, while macht mir schwierigkeiten
Dann sag es doch einfach.  smiley-cool smiley-cool

"While" heißt "solange"

Solange die Bedingung hinter while wahr ist wird der Anweisungsblock durchgeführt.
Beispiel
while (a<5)
{
Anweisungen;
}
also solange die Variable a kleiner als 5 ist werden die "Anweisungen;" ausgeführt.

Sonderformen:
while(1) ist eine unendliche Schleife.

do while
Ist ähnlich wie While nur wird die Bedingung am Ende kontrolliert und somit die "Anweisungen;" mindestens 1 mal durchgeabeitet:

do{
Anweisungen;
} while (a<5)

In der while-Bedingung kann alles das stehen, was auch als Bedingung in einer if-Anweisung stehen kann.

Bei while gibt es kein else.

http://arduino.cc/en/Reference/While
http://arduino.cc/en/Reference/DoWhile

Grüße Uwe
Logged

Germany
Offline Offline
Sr. Member
****
Karma: 2
Posts: 285
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Uwe hat natürlich da eine super Beschreibung abgeliefert.
Ach...wollt noch kurz was hinzufügen, diese Funktio mit einer while Schleife und do nennt man auch kopfgesteuerte Schleife/ Funktion! Den Rest hat Uwe ja dazu erläutert!
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Nicht if, while macht mir schwierigkeiten
Dann sag es doch einfach.  smiley-cool smiley-cool

"While" heißt "solange"

Solange die Bedingung hinter while wahr ist wird der Anweisungsblock durchgeführt.
Beispiel
while (a<5)
{
Anweisungen;
}
also solange die Variable a kleiner als 5 ist werden die "Anweisungen;" ausgeführt.

Sonderformen:
while(1) ist eine unendliche Schleife.

do while
Ist ähnlich wie While nur wird die Bedingung am Ende kontrolliert und somit die "Anweisungen;" mindestens 1 mal durchgeabeitet:

do{
Anweisungen;
} while (a<5)

In der while-Bedingung kann alles das stehen, was auch als Bedingung in einer if-Anweisung stehen kann.

Bei while gibt es kein else.

http://arduino.cc/en/Reference/While
http://arduino.cc/en/Reference/DoWhile

Grüße Uwe


Wo ist der gefällt mir Button.?

Der Uwe hat da ein Händchen für, sowas zu erklären.  smiley-twist

Und genau das mag ich an diesen Forum. Man bekommt es verständlich erklärt. Ich finde so eine Erklärung besser, als wenn mir jemand den passenden Code gibt, weil ich es so verstehe, was das bedeutet, und versuch es selbser umzusetzen.
« Last Edit: January 14, 2013, 04:53:50 pm by Rene_Merten » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Da ihr gerade von Schleifen redet, könnte mir wer vielleicht den Unterschied erklären, beziehungsweise, wofür es denn gleich 3 Schleichen braucht? Ich mein, wofür while/do while, wenns auch for gibt(oder umgekehrt halt)

Ich weiss nicht warum, hatte früher immer Mühe mit dem while, dabei ist es noch simpler als for.
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

FOR ist eine "zählende" Schleife mit einer in der Regel definierten Anzahl von Durchläufen bei der Du einen Zählindex verwendest der erhöht oder verringert wird bei jedem Durchlauf.

Code:
//zählt von 0 bis 9
for (int i=0;i<10;i++) {
  Serial.println(i,DEC);
}

WHILE ist eine "kopfgesteuerte" Schleife, die nur an eine (oder auch mehrere) Bedingung geknüpft ist, welche die Schleife steuern. Man verwendet diese Schleife wenn z.B. die Anzahl der Durchläufe nicht vorher klar ist.
Code:
while(Serial.available()) {
  int data = Serial.read();
  //mach irgendwas mit data
}

DO WHILE ist eine "nicht abweisende" Schleife, da der auszuführende Block zuerst steht, wird die Schleife IMMER mind. einmal durchlaufen, weil erst am Ende geprüft wird ob die Abbruchbedingung erfüllt ist. Im Gegensatz um WHILE, wo schon am Anfang geprüft wird und ggf. die Schleife gar nicht durchlaufen wird.

Code:
do {
 Serial.println("Ich werde immer ausgegeben!!");
} while (false);
« Last Edit: January 16, 2013, 08:47:53 am by mkl0815 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

FOR ist eine "zählende" Schleife mit einer in der Regel definierten Anzahl von Durchläufen bei der Du einen Zählindex verwendest der erhöht oder verringert wird bei jedem Durchlauf.

Code:
//zählt von 0 bis 9
for (int i=0;i<10;i++) {
  Serial.println(i,DEC);
}

WHILE ist eine "kopfgesteuerte" Schleife, die nur an eine (oder auch mehrere) Bedingung geknüpft ist, welche die Schleife steuern. Man verwendet diese Schleife wenn z.B. die Anzahl der Durchläufe nicht vorher klar ist.
Code:
while(Serial.available()) {
  int data = Serial.read();
  //mach irgendwas mit data
}

DO WHILE ist eine "nicht abweisende" Schleife, da der auszuführende Block zuerst steht, wird die Schleife IMMER mind. einmal durchlaufen, weil erst am Ende geprüft wird ob die Abbruchbedingung erfüllt ist. Im Gegensatz um WHILE, wo schon am Anfang geprüft wird und ggf. die Schleife gar nicht durchlaufen wird.

Code:
do {
 Serial.println("Ich werde immer ausgegeben!!");
} while (false);

Ach so, vielen Dank für die Aufklärung  smiley
Logged

Pages: 1 [2]   Go Up
Jump to: