Go Down

Topic: Anfänger braucht hilfe bei Taster led schaltung. (Read 1 time) previous topic - next topic

michael_x

Beachte : "kannst" heisst: kannst stattdessen natürlich auch geschweifte Klammern setzen.

Eigentlich ist die if Syntax:

if (Bedingung) Anweisung

Anweisung kann eine einzelne, oder ein { Block } sein.
Die geschweiften Klammern bilden einen Block, der von aussen als Einheit gesehen werden kann, im Innern aber wieder beliebig komplex sein kann.

Rene_Merten

Erst mal recht Herzlichen Dank an alle, die mir das alles so toll erklären, auch wenn sich meine fragen "dumm" anhören.  Ich möcht nur die einzelnen "anweisungen" etc. verstehen.

Ich werd auch mal erst bei Taster / LED Schaltungen bleiben, damit kann mann noch viel machen. Mein Dad hat da auch spass dran, und wir sind heut angefangen eine Liste zu machen, mit erklärung, was die einzelnen Parameter bedeuten. Dadurch versteht mann einiges besser.

Hier mal mein fertiger Timer Code.

Code: [Select]
// Timer.

const int led1=9;
const int taster=10; 

void setup()
{
  pinMode(led1,OUTPUT);
  pinMode(taster,INPUT);
}

void loop()
{
  if (digitalRead(taster)==HIGH);
  {
  digitalWrite(led1,HIGH);
  delay(5000);
  }
  digitalWrite(led1,LOW);
}



So,

Nun habe ich in den Void Tag, eine Anweisung in einer Anweisung. Ergo, eine Anweisung ist immer zwischen { und }. Wir sagen mal, ich möchte über einen 2 Taster eine weiter LED einschlaten können, aber nur dann, wenn die die 1 LED an ist.

Das würde ja bedeuten, das hinter der zusätzlichen if Abfrage eine weitere Anweisung kommt. Da es ein Loop Tag ist, durchläuft der Atmel eh den Code andauernt, und müsste doch eine 3 Anweisung ausführen, wenn der timer noch nicht abgelaufen ist.

Abfragen könnte mann ja so.
Code: [Select]
if (digitalRead(led1)==HIGH && digitalRead(taster2)==HIGH)

Werd das morgen mal ausprobieren. Entweder funktioniert es, oder ich war aufem Holzweg. Möglichkeit 2 wäre hinter digitalWrite(led1,HIGH); eine Aabfrage zu machen. Das dürfte aber nicht gehen, weil digital Write in { } gehört, und mann somit die 3 Anweisung so wie so hätte.

Berichtigt mich rhuig, wenn ich einen denkfehler hab.

LG. Rene

uwefed

Dann kannst Du nicht mehr delay() verwenden da delay() das Programm Aufhält. Du mußt millis() verwenden.
Siehe http://arduino.cc/en/Tutorial/BlinkWithoutDelay
grüße  Uwe

Go Up