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:
  • 2 Bewertungen - 4 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Treppenbeleuchtung
10.11.2015, 13:02
Beitrag #41
RE: Treppenbeleuchtung
Wenn der Code zur Hardware passt, funktioniert es.

Der Code muss auf LOW prüfen und der Taster/Kabel gegen GND schalten. Daher hier ein Pullup.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.11.2015, 19:58 (Dieser Beitrag wurde zuletzt bearbeitet: 11.11.2015 20:01 von Kawaci.)
Beitrag #42
RE: Treppenbeleuchtung
mit dem pulldown funktioniert es! jetzt hab ich den abwärts cod geschrieben funktioniert auch aber er reagiert wenn ich oben angekommen bin gleich als start fürs abwärts gehen also läuft er rauf wenn ich oben bin und den tastet betätige lauft er wieder runter und dann wartet er auf den tastet Befehl!
Code:
delay(speed);
      digitalWrite(led14, LOW);
      delay(speed);
      digitalWrite(led15, LOW);
      aufwaerts = LOW;
    }
    //abwärts
    if ((down == HIGH) && (up == LOW))
    {
      abwaerts = HIGH;            // geht aufwärts
      digitalWrite(led15, HIGH);
      delay(speed);
      digitalWrite(led14, HIGH);
      delay(speed);
      digitalWrite(led13, HIGH);
      delay(speed);
      digitalWrite(led12, HIGH);
      delay(speed);

in diesem abschnitt muss ich noch was einfügen ein das er erkennt das ich ihn 2 mal betätigen muss um wieder runter zu laufen und wenn er nicht betätigt wird sich nach seiner beliebigen zeit ausschaltet!
und geht es irgendwie das e den abwärts code schneller findet ohne das er den aufwärts erst durchsuchen muss?

dachte so an ein "else" oder wie?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 21:43 (Dieser Beitrag wurde zuletzt bearbeitet: 14.11.2015 21:47 von Kawaci.)
Beitrag #43
RE: Treppenbeleuchtung
so ich komm nicht weiter! ich weis nicht wonach ich noch suchen soll! habe mit else goto usw versucht aber ich krieg es einfach nicht hin!

Aufrichtung aufwärts funktioniert ja eigentlich, aber wenn ich den oberen tastet betätige läuft das licht sofort wieder runter! und unten angelangt kann ich es mit dem unteren tastet wieder ausschalten! wenn ich jetzt nach dem aufwärts befehlt ein goto begin; einfüge funktioniert alles wie ich will nur unten angekommen funktioniert der untere tastet nicht mehr!
Hier nochmal mein ganzer Sketch
Code:
/* Treppenbeleuchtung */

int warte = 10000;               // die Zeit wie lange alle Ausgänge auf "HIGH" bleiben | Default: 30 Sekunden
int speed = 500;                // die Zeit wie schnell die Ausgänge von LOW->HIGH und HIGH->LOW wechseln | Default: 1 Sekunde


int led1 = 2;                    // Pin2 bekommt den Namen "led1" zugewiesen
int led2 = 3;                    // Pin3 bekommt den Namen "led2" zugewiesen
int led3 = 4;                    // Pin4 bekommt den Namen "led3" zugewiesen
int led4 = 5;                    // Pin5 bekommt den Namen "led4" zugewiesen
int led5 = 6;                    // Pin6 bekommt den Namen "led5" zugewiesen
int led6 = 7;                    // Pin7 bekommt den Namen "led6" zugewiesen
int led7 = 8;                    // Pin8 bekommt den Namen "led7" zugewiesen
int led8 = 9;                    // Pin9 bekommt den Namen "led8" zugewiesen
int led9 = 10;                    // Pin10 bekommt den Namen "led9" zugewiesen
int led10 = 11;                    // Pin11 bekommt den Namen "led10" zugewiesen
int led11 = 12;                    // Pin12 bekommt den Namen "led11" zugewiesen
int led12 = 13;                    // Pin13 bekommt den Namen "led12" zugewiesen
int led13 = 44;                    // Pin44 bekommt den Namen "led13" zugewiesen
int led14 = 45;                    // Pin45 bekommt den Namen "led14" zugewiesen
int led15 = 46;                    // Pin46 bekommt den Namen "led15" zugewiesen
int led16 = 47;

int inpin52 = 52;                  // Pin52 bekommt den Namen "inpin52" zugewiesen
int inpin53 = 53;                  // Pin53 bekommt den Namen "inpin53" zugewiesen

int up =   0;                    // definiert die Variable 0 (LOW) zur Laufrichtung "up"
int down = 0;                    // definiert die Variable 0 (LOW) zur Laufrichtung "down"
int abwaerts =  0;             // definiert die Variable 0 (LOW) zur Laufrichtung abwärts
int aufwaerts = 0;                    // definiert die Variable 0 (LOW) zur Laufrichtung "aufwärts"


void setup()
{
  pinMode(inpin52, INPUT);       // Anschluss Pin52 als Eingang oben definieren
  pinMode(inpin53, INPUT);       // Anschluss Pin53 als Eingang unten definieren

  pinMode(led1, OUTPUT);        // Anschluss Pin 2 als Ausgang definieren
  pinMode(led2, OUTPUT);        // Anschluss Pin 3 als Ausgang definieren
  pinMode(led3, OUTPUT);        // Anschluss Pin 4 als Ausgang definieren
  pinMode(led4, OUTPUT);        // Anschluss Pin 5 als Ausgang definieren
  pinMode(led5, OUTPUT);        // Anschluss Pin 6 als Ausgang definieren
  pinMode(led6, OUTPUT);        // Anschluss Pin 7 als Ausgang definieren
  pinMode(led7, OUTPUT);        // Anschluss Pin 8 als Ausgang definieren
  pinMode(led8, OUTPUT);        // Anschluss Pin 9 als Ausgang definieren
  pinMode(led9, OUTPUT);        // Anschluss Pin 10 als Ausgang definieren
  pinMode(led10, OUTPUT);        // Anschluss Pin 11 als Ausgang definieren
  pinMode(led11, OUTPUT);        // Anschluss Pin 12 als Ausgang definieren
  pinMode(led12, OUTPUT);        // Anschluss Pin 13  als Ausgang definieren
  pinMode(led13, OUTPUT);        // Anschluss Pin 44 als Ausgang definieren
  pinMode(led14, OUTPUT);        // Anschluss Pin 45 als Ausgang definieren
  pinMode(led15, OUTPUT);        // Anschluss Pin 46 als Ausgang definieren
  pinMode(led16, OUTPUT);
}


void loop()
{
  // --------- Laufrichtung "up" -------------------------------------------------------

  up = digitalRead(inpin52);        // ermittelt den aktuellen Zustand am Eingang Pin52
  down = digitalRead(inpin53);      // ermittelt den aktuellen Zustand am Eingang Pin53

  if ((up == HIGH) && (down == LOW))  // Logik zur Laufrichtung und aktuellen Stand pruefen
  
  {
    aufwaerts = HIGH;            // geht aufwärts
    digitalWrite(led1, HIGH);
    delay(speed);
    digitalWrite(led2, HIGH);
    delay(speed);
    digitalWrite(led3, HIGH);
    delay(speed);
    digitalWrite(led4, HIGH);
    delay(speed);
    digitalWrite(led5, HIGH);
    delay(speed);
    digitalWrite(led6, HIGH);
    delay(speed);
    digitalWrite(led7, HIGH);
    delay(speed);
    digitalWrite(led8, HIGH);
    delay(speed);
    digitalWrite(led9, HIGH);
    delay(speed);
    digitalWrite(led10, HIGH);
    delay(speed);
    digitalWrite(led11, HIGH);
    delay(speed);
    digitalWrite(led12, HIGH);
    delay(speed);
    digitalWrite(led13, HIGH);
    delay(speed);
    digitalWrite(led14, HIGH);
    delay(speed);
    digitalWrite(led15, HIGH);
    delay(speed);
    digitalWrite(led16, HIGH);
  }

  if (aufwaerts == HIGH) {    // ging aufwärts

    if ((down == HIGH) && (up == LOW)) // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
      digitalWrite(led1, LOW);
      delay(speed);
      digitalWrite(led2, LOW);
      delay(speed);
      digitalWrite(led3, LOW);
      delay(speed);
      digitalWrite(led4, LOW);
      delay(speed);
      digitalWrite(led5, LOW);
      delay(speed);
      digitalWrite(led6, LOW);
      delay(speed);
      digitalWrite(led7, LOW);
      delay(speed);
      digitalWrite(led8, LOW);
      delay(speed);
      digitalWrite(led9, LOW);
      delay(speed);
      digitalWrite(led10, LOW);
      delay(speed);
      digitalWrite(led11, LOW);
      delay(speed);
      digitalWrite(led12, LOW);
      delay(speed);
      digitalWrite(led13, LOW);
      delay(speed);
      digitalWrite(led14, LOW);
      delay(speed);
      digitalWrite(led15, LOW);
      delay(speed);
      digitalWrite(led16, LOW);
      aufwaerts = LOW;
    }
  }

    //abwärts
if ((down == HIGH) && (up == LOW))
    {
      abwaerts = HIGH;            // geht aufwärts
      digitalWrite(led16, HIGH);
      delay(speed);
      digitalWrite(led15, HIGH);
      delay(speed);
      digitalWrite(led14, HIGH);
      delay(speed);
      digitalWrite(led13, HIGH);
      delay(speed);
      digitalWrite(led12, HIGH);
      delay(speed);
      digitalWrite(led11, HIGH);
      delay(speed);
      digitalWrite(led10, HIGH);
      delay(speed);
      digitalWrite(led9, HIGH);
      delay(speed);
      digitalWrite(led8, HIGH);
      delay(speed);
      digitalWrite(led7, HIGH);
      delay(speed);
      digitalWrite(led6, HIGH);
      delay(speed);
      digitalWrite(led5, HIGH);
      delay(speed);
      digitalWrite(led4, HIGH);
      delay(speed);
      digitalWrite(led3, HIGH);
      delay(speed);
      digitalWrite(led2, HIGH);
      delay(speed);
      digitalWrite(led1, HIGH);
    }
    if (abwaerts == HIGH) {    // ging abwärts

     if ((up == HIGH) && (down == LOW)) // Logik zur Laufrichtung und aktuellen Stand pruefen
      {
        digitalWrite(led16, LOW);
        delay(speed);
        digitalWrite(led15, LOW);
        delay(speed);
        digitalWrite(led14, LOW);
        delay(speed);
        digitalWrite(led13, LOW);
        delay(speed);
        digitalWrite(led12, LOW);
        delay(speed);
        digitalWrite(led11, LOW);
        delay(speed);
        digitalWrite(led10, LOW);
        delay(speed);
        digitalWrite(led9, LOW);
        delay(speed);
        digitalWrite(led8, LOW);
        delay(speed);
        digitalWrite(led7, LOW);
        delay(speed);
        digitalWrite(led6, LOW);
        delay(speed);
        digitalWrite(led5, LOW);
        delay(speed);
        digitalWrite(led4, LOW);
        delay(speed);
        digitalWrite(led3, LOW);
        delay(speed);
        digitalWrite(led2, LOW);
        delay(speed);
        digitalWrite(led1, LOW);
        abwaerts = LOW;
      }
    }
  }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 23:33
Beitrag #44
Wink RE: Treppenbeleuchtung
moin, nettes projekt


ich hab mir das mal kurz übersichtlicher gemacht:

Code:
/*
https://opensourcehardwaregroup.com/tutorial-13-how-to-use-arrays-with-arduino/
*/

int warte = 10000;                                                         // die Zeit wie lange alle Ausgänge auf "HIGH" bleiben | Default: 30 Sekunden
int speed = 500;                                                           // die Zeit wie schnell die Ausgänge von LOW->HIGH und HIGH->LOW wechseln | Default: 1 Sekunde

int led[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46, 47 };    // Pin2 - 13 entsprechen led0 - led11, Pin44 - 47 entsprechen led12 - led15
int anzahl = 16;                                                           // Bestimmt die Anzahl aller Pins -> Wichtig für for-schleife

int inpin52 = 52;
int inpin53 = 53;

int up = 0;                                                                // definiert die Variable 0 (LOW) zur Laufrichtung "up"
int down = 0;                                                              // definiert die Variable 0 (LOW) zur Laufrichtung "down"
int abwaerts =  0;                                                         // definiert die Variable 0 (LOW) zur Laufrichtung abwärts
int aufwaerts = 0;                                                         // definiert die Variable 0 (LOW) zur Laufrichtung "aufwärts"


void setup()
{  
  pinMode (inpin52, INPUT);                                                   // Anschluss Pin52 als Eingang oben definieren
  pinMode (inpin53, INPUT);                                                   // Anschluss Pin53 als Eingang unten definieren

  for ( int i = 0; i < anzahl; i++ )                                         // Deklariert alle "led" als Output
    {

      pinMode ( led[i], OUTPUT );
    
      digitalWrite ( led[i], LOW );       // Setzt alle "led" auf LOW

    }

}


void loop()
{
  up = digitalRead(inpin52);                                               // ermittelt den aktuellen Zustand am Eingang Pin52
  down = digitalRead(inpin53);                                             // ermittelt den aktuellen Zustand am Eingang Pin53
  
  if ( ( up == HIGH ) && ( down == LOW ) )                                 // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
    
      for ( int i = 0; i < anzahl; i++ )
        {
        
          digitalWrite ( led[i], HIGH );
          
          delay ( speed );
        
        }
        
      aufwaerts = 1;

      delay ( warte );                                                     // WARTE IST IM ORIGINALSCRIPT NICHT VORHANDEN!!!
    
    }
    
  if ( ( down == HIGH ) && ( up == LOW ) && ( aufwaerts == 1 ) )           // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
    
      for ( int i = 0; i < anzahl; i++ )
        {
        
          digitalWrite ( led[i], LOW );
          
          delay ( speed );
        
        }
        
      aufwaerts = 0;
    
    }  

  if ( ( down == HIGH ) && ( up == LOW ) )                                 // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
    
      for ( int i = anzahl-1; i >= 0; i-- )
        {
        
          digitalWrite ( led[i], HIGH );
          
          delay ( speed );
        
        }
        
      abwaerts = 1;
      
      delay ( warte );
    
    }
    
  if ( ( up == HIGH ) && ( down == LOW ) && ( abwaerts == 1 ) )                 // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
    
      for ( int i = anzahl-1; i >= 0; i-- )
        {
        
          digitalWrite ( led[i], LOW );
          
          delay ( speed );
        
        }
        
      abwaerts = 0;
    
    }
    
}


ich sehe grad nur das du oben

Code:
int abwaerts =  0;
int aufwaerts = 0;

deklarierst, unten dann aber mit

Code:
aufwaerts == HIGH

arbeitest.


dann sehe ich das du

Code:
int warte = 10000;

deklarierst, aber nicht abrufst, ist eher unwesentlich...


ich habe das wie gesagt mal umgeschrieben, getestet leider nicht, aber die array variante sollte so funktionieren.


gruss hilgi

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.11.2015, 23:58
Beitrag #45
RE: Treppenbeleuchtung
danke! ich hatte eh schon den Gedanken das ganze etwas zu komprimieren! aber mit den Arrays bin ich nicht klargekommen! aber das Problem ist nach wie vor das wenn ich von 1 nach 16 den oberen tastet drücke und es von 1-16 ausgeht gleich danach wieder von 16-1 eingeht die led! und das ist das Haupt problem an dem ganzen! Vorerst zumindest!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2015, 00:14 (Dieser Beitrag wurde zuletzt bearbeitet: 15.11.2015 00:15 von Hilgi.)
Beitrag #46
RE: Treppenbeleuchtung
so, sorry wenn ich dir in den code pfusche aber ich blick da voll nich durch so, ich habe das umbenannt und umgeschrieben, weil ich deine logik nich verstehe Big Grin

wenn du nun oben an pin 52 den pir hast, und unten an pin 53 den pir hast, sollte das gehen...

mir würde sich jedenfalls nicht erschliessen warum nicht,... falls nicht... Tongue


Code:
int speed = 500;    // die Zeit wie schnell die Ausgänge von LOW->HIGH und HIGH->LOW wechseln | Default: 1 Sekunde
  
  int led[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46, 47 };    // Pin2 - 13 entsprechen led0 - led11, Pin44 - 47 entsprechen led12 - led15
  int anzahl = 16;    // Bestimmt die Anzahl aller Pins -> Wichtig für for-schleife
  
  int inpin52 = 52;
  int inpin53 = 53;
  
  int oben = 0;    // PIR oben
  int unten = 0;    // PIR unten
  int runter =  0;    // ich gehe runter
  int rauf = 0;    // ich gehe rauf
  
  
  void setup()
  {  
    pinMode (inpin52, INPUT);    // Anschluss Pin52 als Eingang oben definieren
    pinMode (inpin53, INPUT);    // Anschluss Pin53 als Eingang unten definieren
  
    for ( int i = 0; i < anzahl; i++ )    // Deklariert alle "led" als Output
    {
      pinMode ( led[i], OUTPUT );
      digitalWrite ( led[i], LOW );    // Setzt alle "led" auf LOW
    }
  
  }
  
  
  void loop()
  {
    oben = digitalRead(inpin52);    // ermittelt den aktuellen Zustand am Eingang Pin52
    unten = digitalRead(inpin53);    // ermittelt den aktuellen Zustand am Eingang Pin53
  
      if ( ( unten == HIGH ) && ( oben == LOW ) && ( runter == 0 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = 0; i < anzahl; i++ )
      {
        digitalWrite ( led[i], HIGH );
        delay ( speed );
      }
  
      rauf = 1;
  
    }
  
    if ( ( unten == LOW ) && ( oben == HIGH ) && ( rauf == 1 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = 0; i < anzahl; i++ )
      {
        digitalWrite ( led[i], LOW );
        delay ( speed );
      }
      
      rauf = 0;
  
    }  
  
    if ( ( unten == LOW) && ( oben == HIGH ) && ( rauf == 0 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = anzahl-1; i >= 0; i-- )
      {
        digitalWrite ( led[i], HIGH );
        delay ( speed );
      }
  
      runter = 1;
  
    }
  
    if ( ( unten == HIGH ) && ( oben == LOW ) && ( runter == 1 ) )                 // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = anzahl-1; i >= 0; i-- )
      {
        digitalWrite ( led[i], LOW );
        delay ( speed );
      }
  
      runter = 0;
  
    }
  
  }

na dann viel erfolg Tongue

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2015, 00:41
Beitrag #47
RE: Treppenbeleuchtung
Danke fürs umbenennen! Jetzt kenne ich mich auch wieder aus! ;-)
Also es läuft so, wenn ich den 53er auf high setze, geht 1-16 auch high, dann betätige ich 52, geht 1-16 auf low, aber dann ohne ein weitersmal den 52er zu betätigen läuft das ganze wieder von 16-1 auf high! ich hoffe du kannst mir folgen! Ich bräuchte irgend eine sperre oder einen Zähler das der Arduino erkennt das ich den 52er ein zweites mal betätigen muss um 16-1 zu schalten! Da stehe ich voll an! hatte das selbe Problem beim Langen code auch!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2015, 00:42 (Dieser Beitrag wurde zuletzt bearbeitet: 15.11.2015 00:47 von Hilgi.)
Beitrag #48
RE: Treppenbeleuchtung
ich hab mir das noch mal durch den kopf gehen lassen

ich denke das problem liegt hier:


Code:
if ( ( unten == LOW ) && ( oben == HIGH ) && ( rauf == 1 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = 0; i < anzahl; i++ )
      {
        digitalWrite ( led[i], LOW );
        delay ( speed );
      }
      
      rauf = 0;
  
    }  
  
    if ( ( unten == LOW) && ( oben == HIGH ) && ( rauf == 0 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = anzahl-1; i >= 0; i-- )
      {
        digitalWrite ( led[i], HIGH );
        delay ( speed );
      }
  
      runter = 1;
  
    }


in den moment wo du das zweite mal drückst ist die vorraussetzung direkt wieder erfüllt, somit hast du zwei zustände, man muss die variable zurücksetzen würde ich sagen

haha Big Grin

cool Big Grin
moment ich schreib das eben um.... Wink

ok, also ich denke
return
sollte ein aus der schleife kicken....

also dann so:


Code:
int speed = 500;    // die Zeit wie schnell die Ausgänge von LOW->HIGH und HIGH->LOW wechseln | Default: 1 Sekunde
  
  int led[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46, 47 };    // Pin2 - 13 entsprechen led0 - led11, Pin44 - 47 entsprechen led12 - led15
  int anzahl = 16;    // Bestimmt die Anzahl aller Pins -> Wichtig für for-schleife
  
  int inpin52 = 52;
  int inpin53 = 53;
  
  int oben = 0;    // PIR oben
  int unten = 0;    // PIR unten
  int runter =  0;    // ich gehe runter
  int rauf = 0;    // ich gehe rauf
  
  
  void setup()
  {  
    pinMode (inpin52, INPUT);    // Anschluss Pin52 als Eingang oben definieren
    pinMode (inpin53, INPUT);    // Anschluss Pin53 als Eingang unten definieren
  
    for ( int i = 0; i < anzahl; i++ )    // Deklariert alle "led" als Output
    {
      pinMode ( led[i], OUTPUT );
      digitalWrite ( led[i], LOW );    // Setzt alle "led" auf LOW
    }
  
  }
  
  
  void loop()
  {
    oben = digitalRead(inpin52);    // ermittelt den aktuellen Zustand am Eingang Pin52
    unten = digitalRead(inpin53);    // ermittelt den aktuellen Zustand am Eingang Pin53
  
      if ( ( unten == HIGH ) && ( oben == LOW ) && ( runter == 0 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = 0; i < anzahl; i++ )
      {
        digitalWrite ( led[i], HIGH );
        delay ( speed );
      }
  
      rauf = 1;
      return;
  
    }
  
    if ( ( unten == LOW ) && ( oben == HIGH ) && ( rauf == 1 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = 0; i < anzahl; i++ )
      {
        digitalWrite ( led[i], LOW );
        delay ( speed );
      }
      
      rauf = 0;
      return;
  
    }  
  
    if ( ( unten == LOW) && ( oben == HIGH ) && ( rauf == 0 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = anzahl-1; i >= 0; i-- )
      {
        digitalWrite ( led[i], HIGH );
        delay ( speed );
      }
  
      runter = 1;
      return;
  
    }
  
    if ( ( unten == HIGH ) && ( oben == LOW ) && ( runter == 1 ) )                 // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = anzahl-1; i >= 0; i-- )
      {
        digitalWrite ( led[i], LOW );
        delay ( speed );
      }
  
      runter = 0;
      return;
  
    }
  
  }


falls das hier nicht klappt, !!!MUSS!!! (theoretisch Wink ) das hier gehen:


Code:
int speed = 500;    // die Zeit wie schnell die Ausgänge von LOW->HIGH und HIGH->LOW wechseln | Default: 1 Sekunde
  
  int led[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46, 47 };    // Pin2 - 13 entsprechen led0 - led11, Pin44 - 47 entsprechen led12 - led15
  int anzahl = 16;    // Bestimmt die Anzahl aller Pins -> Wichtig für for-schleife
  
  int inpin52 = 52;
  int inpin53 = 53;
  
  int oben = 0;    // PIR oben
  int unten = 0;    // PIR unten
  int runter =  0;    // ich gehe runter
  int rauf = 0;    // ich gehe rauf
  
  
  void setup()
  {  
    pinMode (inpin52, INPUT);    // Anschluss Pin52 als Eingang oben definieren
    pinMode (inpin53, INPUT);    // Anschluss Pin53 als Eingang unten definieren
  
    for ( int i = 0; i < anzahl; i++ )    // Deklariert alle "led" als Output
    {
      pinMode ( led[i], OUTPUT );
      digitalWrite ( led[i], LOW );    // Setzt alle "led" auf LOW
    }
  
  }
  
  
  void loop()
  {
    oben = digitalRead(inpin52);    // ermittelt den aktuellen Zustand am Eingang Pin52
    unten = digitalRead(inpin53);    // ermittelt den aktuellen Zustand am Eingang Pin53
  
      if ( ( unten == HIGH ) && ( oben == LOW ) && ( runter == 0 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = 0; i < anzahl; i++ )
      {
        digitalWrite ( led[i], HIGH );
        delay ( speed );
      }
  
      rauf = 1;
  
    }
  
    if ( ( unten == LOW ) && ( oben == HIGH ) && ( rauf == 1 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = 0; i < anzahl; i++ )
      {
        digitalWrite ( led[i], LOW );
        delay ( speed );
      }
      
      rauf = 0;
      oben = LOW;
  
    }  
  
    if ( ( unten == LOW) && ( oben == HIGH ) && ( rauf == 0 ) )    // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = anzahl-1; i >= 0; i-- )
      {
        digitalWrite ( led[i], HIGH );
        delay ( speed );
      }
  
      runter = 1;
  
    }
  
    if ( ( unten == HIGH ) && ( oben == LOW ) && ( runter == 1 ) )                 // Logik zur Laufrichtung und aktuellen Stand pruefen
    {
  
      for ( int i = anzahl-1; i >= 0; i-- )
      {
        digitalWrite ( led[i], LOW );
        delay ( speed );
      }
  
      runter = 0;
  
    }
  
  }


finde ich aber... naja,.. unschön?

return sollte gehen, ist dann auch der normale weg behaupte ich jetzt mal Smile


sag ma ob's geklappt hat Tongue

gruss

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
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