Wie kann ich das Programm erweitern?


13.04.2024, 08:06

#include <Servo.h>

Servo servo1;

Servo servo2;

Servo servo3;

int x;

int servo;

void setup () {

randomSeed ( analogRead (A1));

servo1.attach(6);

servo2.attach(7);

servo3.attach(8);

}

void loop() {

x= random ( 1, 4) ;

switch (x) {

case 1:

servo1.write (95);

delay (1000);

break;

case 2:

servo2.write (95);

delay (1000);

break;

case 3:

servo3.write(95);

delay (1000);

break;

}

servo1.write(0);

while( servo1=95) {

delay;

}

servo2.write(0);

while( servo2=95) {

delay;

}

servo3.write(0);

while( servo3=95) {

delay;

}

}

Suiram1  12.04.2024, 14:20

Könntest du den Quellcode des Programms als Text ergänzen?

mihawkonepiece 
Fragesteller
 13.04.2024, 08:08

Hallo ich hoffe ich hab die Frage richtig verstanden .

Ich habe nun die Frage ergänzt.

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Legt euch eine Variable an, die die verbleibende Zeit (in Sekunden) speichert. Immer wenn das Programm eine Sekunde wartet, muss auch die Variable um 1 verringert werden. Des Weiteren wäre es günstig, sich die aktuelle Zielscheibe sowie die Menge aller verfügbaren Zielscheiben global zu speichern.

Anschließend braucht es nur zwei Abfragen:

  1. Ist die Zeit abgelaufen? Wenn ja, wird eine neue Zielscheibe gesucht und angezeigt. Um zu verhindern, dass zweimal nacheinander dieselbe Zielschreibe ausgewählt wird, könnte man das Fisher-Yates-Verfahren nutzen. Des Weiteren muss die Zeitvariable zurückgesetzt werden
  2. Wurde die Zielscheibe getroffen? Wenn ja, wird die Zeitvariable auf 0 gesetzt (Zeitablauf).

In dem Fall, dass weder die erste, noch die zweite Bedingung erfüllt wurden, wird eine Sekunde lang gewartet, bis das Programm weiterläuft.

Erstellt euch dazu ein Struktogramm oder einen Programmablaufplan. Aktionen wie die Auswahl einer neuen Zielscheibe oder die Prüfung, ob die aktuelle Zielscheibe getroffen wurde, werden in eigenen Struktogrammen/Programmablaufplänen skizziert.