FTDuino Schleife Ausgänge Eingänge
Forumsregeln
Bitte beachte die Forumsregeln!
Bitte beachte die Forumsregeln!
FTDuino Schleife Ausgänge Eingänge
Hllo,
wie kann ich die Ausgänge oder Eingäng in einer Schleife verarbeiten.
for (i = 0; i < 5; i = i + 1)
{
ftduino.output_set (Ftduino ::Oi , Ftduino :: LO ); // Oi = O1,O2..
}
Gruß Grau
wie kann ich die Ausgänge oder Eingäng in einer Schleife verarbeiten.
for (i = 0; i < 5; i = i + 1)
{
ftduino.output_set (Ftduino ::Oi , Ftduino :: LO ); // Oi = O1,O2..
}
Gruß Grau
Re: FTDuino Schleife Ausgänge Eingänge
Hm, Ftduino::O0 gibt es nicht, oder?
Ftduino::O1 ist, solange MoG das nicht ändert, eine uint8_t-Konstante mit Wert 0. Darum sollte aktuell und etwas unsauber
for (uint8_t i = 0; i < 4; i++) ftduino.output_set(i, Ftduino::LO);
die Ausgänge O1, O2, O3 und O4 auf LO setzen.
Ftduino::O1 ist, solange MoG das nicht ändert, eine uint8_t-Konstante mit Wert 0. Darum sollte aktuell und etwas unsauber
for (uint8_t i = 0; i < 4; i++) ftduino.output_set(i, Ftduino::LO);
die Ausgänge O1, O2, O3 und O4 auf LO setzen.
-
- Administrator
- Beiträge: 583
- Registriert: 26 Dez 2015, 23:49
- Wohnort: Rhein-Main-Gebiet
Re: FTDuino Schleife Ausgänge Eingänge
Sauber, aber verschwendet eventuell (wenn der Compiler nicht erkennt dass das eh alles statisch ist, die ganze Schleife wegoptimiert und nur vier ftduino.output_set(...)-Aufrufe stehen lässt ) Speicher (für das Array und die Größenangabe) und Rechenzeit (für die Indirektion beim Array-Lookup) und ist hier eher etwas überkandidelt: (aber nützlich wenn man z.B. die Ports in der Reihenfolge O1, O3, O4, O2 durchlaufen wollte - dann muss man nur die Reihenfolge im Array passend setzen)
Theoretisch etwas unsauberer (weil es sich blind darauf verlässt dass Ftduino::O1 bis Ftduino::O4 jeweils mit Abstand 1 aufeinanderfolgen) aber deutlich besser lesbar und daher hier meine Empfehlung:
Code: Alles auswählen
static const uint8_t PORTS[] = { Ftduino::O1, Ftduino::O2, Ftduino::O3, Ftduino::O4 };
static const size_t PORTS_LENGTH = sizeof(PORTS) / sizeof(uint8_t);
for (size_t i = 0; i<PORTS_LENGTH; i++) {
ftduino.output_set(PORTS[i], Ftduino::LO );
}
Code: Alles auswählen
for (uint8_t port = Ftduino::O1; port <= Ftduino::O4; port++) {
ftduino.output_set(port, Ftduino::LO );
}
Re: FTDuino Schleife Ausgänge Eingänge
Ich habe gefühlt null Ahnung von C/C++, aber wäre es nicht sinnvoll diese Konstanten in der Bibliothek als enum zu definieren?
Raphaek
Raphaek
Re: FTDuino Schleife Ausgänge Eingänge
Nein. In C belegt man mit enum letztendlich Konstanten vom Typ signed int mit Namen. Das ist nicht sinnvoll, um Ausgänge abzuzählen. Ein anderer für Grau wesentlicher Grund wäre, dass man Aufzählungstypen nicht direkt in for-Schleifen benutzen kann.ski7777 hat geschrieben:Ich habe gefühlt null Ahnung von C/C++, aber wäre es nicht sinnvoll diese Konstanten in der Bibliothek als enum zu definieren?
- MasterOfGizmo
- Beiträge: 2722
- Registriert: 30 Nov 2014, 07:44
Re: FTDuino Schleife Ausgänge Eingänge
Ja, so sieht die einfachste Lösung aus. Alternativ kann man auch ähnlich Graus Ansatz von 0 bis 3 zählen und dann im output_set als Port Ftduino::O1+i schreiben. Darauf dass die Werte aufeinander folgen könnt ihr euch verlassen.richard.kunze hat geschrieben:Theoretisch etwas unsauberer (weil es sich blind darauf verlässt dass Ftduino::O1 bis Ftduino::O4 jeweils mit Abstand 1 aufeinanderfolgen) aber deutlich besser lesbar und daher hier meine Empfehlung:Code: Alles auswählen
for (uint8_t port = Ftduino::O1; port <= Ftduino::O4; port++) { ftduino.output_set(port, Ftduino::LO ); }
Enums sind in der Tat keine Option, da man mit ihnen nicht zählen oder rechnen kann ohne sie etwas unschön in Integer zu verwandeln.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32
Re: FTDuino Schleife Ausgänge Eingänge
Hallo,
danke für die vielen Vorschläge.
@MoG vielleicht kannst du das in die Anleitung übernehmen.
Gruß Grau
danke für die vielen Vorschläge.
@MoG vielleicht kannst du das in die Anleitung übernehmen.
Gruß Grau
- MasterOfGizmo
- Beiträge: 2722
- Registriert: 30 Nov 2014, 07:44
Re: FTDuino Schleife Ausgänge Eingänge
Ja, der Hinweis, das man die Ein- und Aushänge abzählen kann gehört sicher ins Handbuch.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32