Anfänger fragt: Wie gehen "5 auf einen Streich"

Hallo Gemeinde,

kann man auf 5 Ausgänge gleichzeitig schreiben um nicht immer 5 Zeilen zu verbrauchen?

Beispiel: alt

digitalWrite(11, HIGH); digitalWrite(10, HIGH); digitalWrite(9, HIGH); digitalWrite(6, HIGH); digitalWrite(5, HIGH);

Lieber wäre mir so oder eben "richtig"

digitalWrite(5,6,9,10,und 11, HIGH)?????????

.......hab nix gefunden wie dazu die Syntax ist.

:confused:

wichtiger NACHTRAG: es sind die Pins 5,6,9,10,und 11

const byte pins[] = { 9, 10, 11, 12, 13 };

...

for (int i = 0; i < sizeof(pins); i++)
  digitalWrite(pins[i], HIGH);
for (byte i=9; i<14; i++) { digitalWrite(i, HIGH); }

Helmuth:

for (byte i=9; i<14; i++) { digitalWrite(i, HIGH); }

die Idee ist cool…
aber

wichtiger NACHTRAG!
es sind die Pins 5,6,9,10,und 11

Dann nehm die Variante von Serenfly. Was spielt es für eine Rolle, ob der ein Funktionsabschnitt 5 oder 1 Zeile hat? Scrollbar sind die meisten Projekte auf dauer eh nicht mehr, wenn alles in der Hauptino geschrieben wird. Lieber ein paar Zeilen mehr und dafür nachvollziehbar.

Dann das hier so von Serenifly:

const byte pins[] = { 5, 6, 9, 10, 11 };

...

for (int i = 0; i < sizeof(pins); i++)
  digitalWrite(pins[i], HIGH);

in das pins array kannst du soviele Pins eintragen, wie du willst. Und wenn es zeitkritisch “gleichzeitig” sein muss, gibt es noch andere Möglichkeiten über den direkten Zugriff auf die Ports.

sschultewolter: Scrollbar sind die meisten Projekte auf dauer eh nicht mehr, ........ Lieber ein paar Zeilen mehr und dafür nachvollziehbar.

stimmt, es ist sowieso ein Berg von Zeilen......ob ich nun 587 oder 239 Zeilen habe, es passt sowieso nicht auf den Schirm.......

Danke

Dumpfbacke: .....ob ich nun 587 oder 239 Zeilen habe, es passt sowieso nicht auf den Schirm.......

Bei Windows kann ma mehrere Monitore anschliessen um den Desktop zu vergrössern. Und die nicht nur nebeneinander, sondern auch übereinander ;)

Dumpfbacke: stimmt, es ist sowieso ein Berg von Zeilen......ob ich nun 587 oder 239 Zeilen habe, es passt sowieso nicht auf den Schirm.......

Danke

Du gibst ja schnell auf!

Ich hätte da noch einen Tipp: Wenn du die Pins geschickt verteilst, könntest du bis zu 8 Pins gleichzeitig, in einem Prozessortakt, setzen.

ElEspanol:
Bei Windows kann ma mehrere Monitore anschliessen um den Desktop zu vergrössern. Und die nicht nur nebeneinander, sondern auch übereinander :wink:

Das hilft aber auch nur kurz! :confused:

Habe zwischenzeitlich schon mal 3 FullHD Bildschirme nebeneinander gestellt und die Fenster auch noch gesplittet. Das wird einfach katastrophal unübersichtlich :smiley:

Das direkte setzen von Registern wollte ich vorher anfangs vorschlagen, hab es dann aber verworfen, als ich sah, dass seine DOs sich über min. 2 Ports erstrecken.

da sind ja alle Ideen besser als meine:

Ich hab z.Z. Einen Matrixprinter mit Endlospapier an der Tischkante stehen. ......

sschultewolter: Das direkte setzen von Registern wollte ich vorher anfangs vorschlagen, hab es dann aber verworfen, als ich sah, dass seine DOs sich über min. 2 Ports erstrecken.

Man könnte das ja in eine Funktion auslagern, wenn es immer die gleichen Pins sind und es aus Zeitgründen notwendig wäre. Aber über den Einsatzzweck ist ja noch nichts bekannt. Ob sich allerdings der Aufwand lohnt, ist fraglich. Weil die Schleife braucht auch nur 36 uS für die 5 Pins.

Das auslagern bringt da erst einmal garnichts.

PORTD |= 0b01100000; PORTB |= 0b00001110;

kann nicht schneller sein, als PORTB |= 0b1111100;

Das zeitliche spielt für den TE hier vermutlich keine übergeordnete Rolle. Ob die Led nun nach 36µs leuchtet, oder erst nach ~1ms. Interessant wird das ganze erst bei timingintensiven Ansteuerung ala WS2812b im Bitbanging Verfahren.

ElEspanol: ..... Aber über den Einsatzzweck ist ja noch nichts bekannt..

/* Blinklicht mit rx Signalauswertung */

also an einem Kanal des RX das PWM Signal auswerten , somit kann ich verschiedene Pulslängen jeweils einer Funktion zuordnen.

Na,,, bin ich nun ein kleiner Zuse ?

Dumpfbacke: also an einem Kanal des RX das PWM Signal auswerten , somit kann ich verschiedene Pulslängen jeweils einer Funktion zuordnen.

Dafür gibt es fertige Libs. Aber warum sollen die 5 Pins gleichzeitig auf HIGH gehen?

ElEspanol:
Dafür gibt es fertige Libs.
Aber warum sollen die 5 Pins gleichzeitig auf HIGH gehen?

Hi Spanier

Ja ich weis es gibt Lib´s dafür.
Nur ist die Anwendung zu simpel um da noch weitere Lib´s zu gebauchen.
Es ist nur ein Blinklicht in verschiedenen Sequenzen für den HexaX.

Und weil die TX9 (ungefläscht) nur einen Schalter hat den man einfach(!) zuordnen kann, nehme ich eines von den drei freien Pot´s. So bleiben noch zwei für das Gimbal übrig.

Ich verwende die ca.320Grad (Weg) am Pot um sie in Segmente zu teilen …ergibt viele viele Schalterstellungen.
Aber nur 5-6 sind Winkel-Stellungen “ertastbar” ,am Regler, wenn man fliegt.

Das ist schon klar, aber warum müssen die Ausgänge gleichzeitig schalten? Doch nicht etwa delays geplant?