Also ich will ne lichterkette laufen lassen, dazu will ich alle leds und die dazugehörigen pins mittels eines arrays und einer for schleife füllen
hier erstmal das bild vom steckboard
hier der erste auszug aus meinem program
int led[]={13,12,11,10,9,8};
void setup()
{
For int i=0 to led.getupperbound //getupperbound bedeutet ja gehe zum höchsten wert meines arrays led
(diesen Befehl kenn ich aus VB, weiß nicht wie er in der arduinosprache lautet)
}
void loop()
{
for (int i=1;i=6;i++)
{
digitalWrite (led*,HIGH);*
}* } also die leds sollen alle nacheinander angehen und danach wieder mit ner for-schleife ausgehen. nun meine frage, kann man die ports mittels eines arrays und einer schleife belegen??
voithian:
Achtung, in C beginnt das Array mit dem Index 0 und geht bis 5. Daher muss die erste for-Anweisung so aussehen: ...
Passiert fast jedem...
Wolfgang
Hast recht Wolfgang. :~
Entschuldige brunneu, hatte ich übersehen.
Grüße Uwe
brunneu:
jetzt nochmal zu meiner frage wie lautet das getupperbound in c?
Gibt es nicht in "C"!
Da musst du selber höllisch aufpassen, dass du nicht die Grenzen des Arrays überschreitest. Mit deinem Programmcode kannst du nämlich beliebig vor oder hinter das Array schreiben (mit Index -1 zum Beispiel oder mit Index 65000). Dann ist das Unheil vorprogrammiert.
Normalerweise facht so etwas immer die Diskussion der VB-, C#- oder Java-Programmierer an, dass "C" doch ganz großer Mist ist, aber dafür kannst du natürlich in "C" jedes einzelne Bit im Speicher persönlich begrüßen. Ich möchte bitte nicht, dass jetzt hier im Forum ein Krieg wegen der "besten" Programmiersprache ausbricht!
Du kannst die Sache ein bischen entschärfen, indem du "defines" verwendest. Das macht die Sache ein wenig übersichtlicher. Bei Größenänderungen des Arrays musst du dann nur an einer Stelle das "define" ändern.
Die Verwendung von "defines" ist übrigens nur eine Maßnahme zum "Übersichtlich machen". Der Präprozessor, der vor dem eigentlichen Compilieren aufgerufen wird, ersetzt einfach in deinem Programmcode den Text "ANZAHL_LEDS" durch die Zahl 6.
brunneu:
jetzt nochmal zu meiner frage wie lautet das getupperbound in c?
Gibt es nicht in "C"!
Da musst du selber höllisch aufpassen, dass du nicht die Grenzen des Arrays überschreitest. Mit deinem Programmcode kannst du nämlich beliebig vor oder hinter das Array schreiben (mit Index -1 zum Beispiel oder mit Index 65000). Dann ist das Unheil vorprogrammiert.
Normalerweise facht so etwas immer die Diskussion der VB-, C#- oder Java-Programmierer an, dass "C" doch ganz großer Mist ist, aber dafür kannst du natürlich in "C" jedes einzelne Bit im Speicher persönlich begrüßen. Ich möchte bitte nicht, dass jetzt hier im Forum ein Krieg wegen der "besten" Programmiersprache ausbricht!
Du kannst die Sache ein bischen entschärfen, indem du "defines" verwendest. Das macht die Sache ein wenig übersichtlicher. Bei Größenänderungen des Arrays musst du dann nur an einer Stelle das "define" ändern.
#define ANZAHL_LEDS 6
int led[ANZAHL_LEDS] = {13,12,11,10,9,8};
...
for (int i=0; i<ANZAHL_LEDS; i++)
{
digitalWrite (led[i], HIGH);
delay (500);
digitalWrite (led[i], LOW);
}
Die Verwendung von "defines" ist übrigens nur eine Maßnahme zum "Übersichtlich machen". Der Präprozessor, der vor dem eigentlichen Compilieren aufgerufen wird, ersetzt einfach in deinem Programmcode den Text "ANZAHL_LEDS" durch die Zahl 6.
versteh ich das richtig, die arduino sprache ist also reines c++ oder gibt es da noch ein paar kleine unterschiede?
brunneu:
versteh ich das richtig, die arduino sprache ist also reines c++ oder gibt es da noch ein paar kleine unterschiede?
Bravo, der Kandidat hat 100 Punkte!
Um genau zu sein, ein Mischmasch aus C und C++:
Manche der mitgelieferten Arduino-Funktionen sind in C geschrieben, manche in C++ (speziell manche zusätzliche Libraries) und andere Dateien haben zwar die Dateierweiterung .cpp wie üblicherweise C++-Dateien, enthalten aber keine C++-typischen Sprachelemente wie Klassen, Vererbung, usw. (wie main.cpp, Tone.cpp, WMath.cpp).
Und du kannst ganz normal in C programmieren (und mit Einschränkungen in C++) und tust es ja auch. Praktisch alles was in C geht, geht auch mit der Arduino-Umgebung (weil es eben C ist).