sketch mit Programmteil 1 +2, aber wie?

Liebe Arduino Gemeinde,
Für mein erstes Projekt möchte ich eine Leuchtschrift steuern.
Es sollten alle Buchstaben (13 Stück, hier nur mit LED’s abgebildet) nacheinander, mit blinken, angeschaltet werden und anschliessend nach einer Haltezeit wieder einzeln abgeschaltet werden. Programmteil1 + 2 laufen unabhängig voneinander.
Jetzt soll aber Prog.teil1 zuerst vollständig abgearbeitet werden und erst dann Prog.teil2.
Wie mache ich das? Hier stehe ich auf dem Schlauch und komme einfach nicht mehr weiter. Habe schon div. Sachen mit while , do…while oder Funktionen (Unterprogramm) ausprobiert , aber immer ohne Erfolg. (Anfängerfehler!) Für eine Hilfe wäre ich sehr dankbar.

int led[]={13,12,11,10,9,8,7,6,5,4,3,2,1};
int time1 =200;
int zaelLed = 12;   //Zähler für Anz.LED 

void setup() 
{  
 for (int initPin=0; initPin<=zaelLed; initPin++)
 {     
   pinMode(led[initPin], OUTPUT);
   digitalWrite(led[initPin], LOW);
 } 
}
void loop()
{
 for (int i= 0; i<=zaelLed; i++){   //Programmteil 1
digitalWrite(led[i], HIGH);
delay (time1);
digitalWrite(led[i], LOW);
delay (time1);
  if (i==zaelLed) {
digitalWrite(led[i], HIGH);
 delay (time1);
    zaelLed = zaelLed-1;  
}
 }
 delay (time1);   // Programmteil 2  
 for (int i=12; i>=0;i=i-1){
 digitalWrite(led[i], LOW);
 delay (500);

 }
  }

Du hättest deutlich mehr Helfer, wenn du eine aussagekräftige Frage die dein Problem schildert, als Titel wählen würdest.
Und auch deinen Sketch vernünftig formatiert in Code-Tags, Schaltfläche </> oben links im Editorfenster, setzen würdest.

Für eine Leuchtschrift brauchst Du aber auch ein Display, dass Deine Buchstaben darstellen kann oder wie sollen wir uns das vorstellen?
Bisher sehe ich nur LED, die geschaltet werden.

Gruß Tommy

digitalWrite(led, HIGH);

Das wird besser durch code Tags.

Kannst du gern nachträglich ändern: More - Modify

Auch deinen Titel kannst du nachträglich ändern.
Mach das, dann findet man deine Frage besser im Web.

Hallo
Da gibt's sicher viele Wege
Mir ist aber nicht ganz klar was du willst ?

Eine Led an , dann wieder aus
Zwei Led an dann wieder aus
Drei....

Wieso Buchstaben , das sind doch 13 Led oder was

Ist das ein Uno ? Bei einem Uno ist der Gpio 0 und 1 mit der seriellen Schnittstelle verbunden kann man also nur bedingt nutzen.

Du kannst dir mit serial.print Ausgaben ausgeben lassen um den Ablauf zu kontrollieren und zu sehen was wann abgearbeitet wird.

Ein Vorschlag
Taktgenerator mit millis bauen.
Zähler bis 26 zahlen lassen
Bei jeder geraden Zahl eine Led mehr an bei jeder ungeraden Zahl alle Led aus

Wenn 26 erreicht ist geht's rückwärts bis 0
Letztlich läuft es auf eine Ablaufsteuerung , Schrittkette, State-Mashine hinaus.

Aber Möglichkeiten gibt es viele.

Heinz

Tommy:
Für eine Leuchtschrift brauchst Du aber auch ein Display, dass Deine Buchstaben darstellen kann oder wie sollen wir uns das vorstellen?
Bisher sehe ich nur LED, die geschaltet werden.

Eine LED kann einen Buchstaben beleuchten, oder unbeleuchtet lassen.

Diese Bastelarbeit dürfen wir sicher bewundern, wenn das Ansteuern der 13 Led klappt.

Hallo,

deine Pin Definition im Array ist schon einmal löblich. Der Zugriff darauf erfolgt jedoch mittels Indexnummer. Beginnend bei 0 (Null).

Für dein DigitalWrite bedeutet das bspw.

digitalWrite( led[i], LOW);

Also genauso wie du es schon mit pinMode machst.

Das led Array solltest du mit const byte definieren, und alles andere was konstant bleibt auch mit const.
Zeiten für delay sollten unsigned sein. Bei arbeiten mit millis Zeiten unbedingt unsigned long.

Um Zählfehler abzufangen oder Fehler in Codeanpassungen zu vermeiden kann man bestimmte Dinge automatisch ermitteln lassen. Zum die Anzahl der LEDs. Diese Konstante dann konsequent in deinen for Schleifen verwenden. Du hast viel Mischmasch drin.

const byte led[] = {13,12,11,10,9,8,7,6,5,4,3,2,1};

const byte ANZAHL_LED = sizeof(led)/sizeof(led[0]);

void setup()
{
  
  for (byte i=0; i<ANZAHL_LED; i++)
  {
    pinMode(led[i], OUTPUT);
    digitalWrite(led[i], LOW);
  }
}


void loop()
{
  
}

und das Gegenstück vom inkrementieren i++ ist dekrementieren i-- :wink:

Doc:
Der Zugriff darauf erfolgt jedoch mittels Indexnummer

Das macht tapsi auch, wenn du den plötzlichen Übergang auf kursiv-Schrift beobachtest :slight_smile:
(Für fehlende code-Tags wurde er jetzt schon zweimal verhauen, da kann man ihn für gute Sachen durchaus loben.)

Wie er sinnvoll loop() benutzt, statt mehr und kompliziertere Schleifen zu erfinden, hat Rentner schon angedeutet.

Ich finde, jetzt soll er sich erstmal von dem Schreck erholen, was für eine Diskussion er da los getreten hat.

Hallo,

bin ich blind? In der loop wird das led Array ohne Index verwendet mit digitalWrite.
Die verschachtelten for Schleifen wo der eigentliche Indexzähler seltsam benutzt wird, ja das muss erstmal aufgeräumt werden. Ich formuliere es mal so. Es steckt viel Potential drin. :slight_smile:

Im ersten Post, ab der dritten Zeile nach void loop() {

,HIGH wird kursiv geschrieben :wink:
Klar fehlt da ein [ i ]

Doc_Arduino:
Hallo,

bin ich blind? In der loop wird das led Array ohne Index verwendet mit digitalWrite.
.....

Da der Sketch so fast nicht lesbar ist, sei dir verziehen.

Der TO sollte erstmal Energie da rein setzen, den Sketch hier richtig formatiert reinzubringen. Ebenso der Titel.

Da er selbst das nicht schafft, wird das mit dem Sketch wohl eine Jahresarbeit.

Hallo,

jetzt habe ich es gerafft. :grin: Danke für Eure Geduld.

@ TO: du siehst wie das verwirren kann.
Also entweder Code Tag Button verwenden oder manuell in

[code] und

[/code]

einbetten.

Hallo tapsi,

war unsere Hilfe nicht ausreichend ?
Oder sind unsere Fragen zu schwer ?

HotSystems:
Hallo tapsi,

war unsere Hilfe nicht ausreichend ?
Oder sind unsere Fragen zu schwer ?

Moin,

ich vermute mal der findet seinen Post nicht mehr, da das Forum standardmäßig keine Benachrichtigungen versendet, weiß er/sie nichts von Antworten. Die Einstellung um die Mailbenachrichtigung zu aktivieren ist auch ein wenig versteckt. :wink:

Gruß
Jörg

Hallo zusammen
Besten Dank für eure Hilfe, habe schon einiges in mein Projekt einfliessen können.
Das mit dem Code-Tag habe ich begriffen, wird nicht mehr vorkommen! Dann wird auch HotSystems zufrieden sein!
Richtig bemerkt, steuere ich nur LED's an, die stehen hier stellvertretend für ein Relais, MOSFET oder sonst einen Treiber.
Wie ich einen eigenen Post nachträglich änern kann ist mir noch schleierhaft, ich arbeite daran.

Tapsi:
Wie ich einen eigenen Post nachträglich änern kann ist mir noch schleierhaft, ich arbeite daran.

Dieses Thema wurde von tapsi2 begonnen, weshalb Tapsi die nicht ändern kann, ist ja logisch, geht nur bei den eigenen.

Tapsi:
Hallo zusammen
Besten Dank für eure Hilfe, habe schon einiges in mein Projekt einfliessen können.
Das mit dem Code-Tag habe ich begriffen, wird nicht mehr vorkommen! Dann wird auch HotSystems zufrieden sein!
Richtig bemerkt, steuere ich nur LED's an, die stehen hier stellvertretend für ein Relais, MOSFET oder sonst einen Treiber.
Wie ich einen eigenen Post nachträglich änern kann ist mir noch schleierhaft, ich arbeite daran.

So langsam machst du dich hier unbeliebt.

So langsam machst du dich hier unbeliebt.

Wer jetzt, Tapsi oder tapsi2?
Und warum? Immerhin nimmt er die Mühe auf sich, jedesmal einen neuen Account anzulegen, z.Teil sogar mit Bildchen. :slight_smile:

Hi

Er zählt aber falsch herum - und Das nimmt Ihm der Arduino irgend wann bestimmt übel.
Ob mit oder ohne Bildchen :slight_smile:

MfG