Lus programmeren
7 berichten
• Pagina 1 van 1
Lus programmeren
Beste bezoekers,
Kan iemand mij helpen bij het opstellen van een programmalus die een aantal keren herhaald, ben nieuw in de wereld van Arduino maar leer snel.
Dit stukje van een sketch wil ik 5 keer herhalen waarbij het nummer van de sensor automatisch wordt opgehoogd:
Serial.print("Sensor 1(*C): ");
Serial.print(sensors.getTempC(sensor1));
Serial.print(" Sensor 1(*F): ");
Serial.println(sensors.getTempF(sensor1));
Dus NIET door dit stukje code 5 keer te kopiëren zoals hieronder:
Serial.print("Sensor 1(*C): ");
Serial.print(sensors.getTempC(sensor1));
Serial.print(" Sensor 1(*F): ");
Serial.println(sensors.getTempF(sensor1));
Serial.print("Sensor 2(*C): ");
Serial.print(sensors.getTempC(sensor2));
Serial.print(" Sensor 2(*F): ");
Serial.println(sensors.getTempF(sensor2));
Serial.print("Sensor 3(*C): ");
Serial.print(sensors.getTempC(sensor3));
Serial.print(" Sensor 3(*F): ");
Serial.println(sensors.getTempF(sensor3));
Serial.print("Sensor 4(*C): ");
Serial.print(sensors.getTempC(sensor4));
Serial.print(" Sensor 4(*F): ");
Serial.println(sensors.getTempF(sensor4));
Serial.print("Sensor 5(*C): ");
Serial.print(sensors.getTempC(sensor5));
Serial.print(" Sensor 5(*F): ");
Serial.println(sensors.getTempF(sensor5));
Bovenstaande werkt wel, maar wil ik anders kunnen programmeren. Hoe doe je dit met een WHILE-DO of FOR-NEXT?
Alvast bedankt voor jullie suggesties.
Kan iemand mij helpen bij het opstellen van een programmalus die een aantal keren herhaald, ben nieuw in de wereld van Arduino maar leer snel.
Dit stukje van een sketch wil ik 5 keer herhalen waarbij het nummer van de sensor automatisch wordt opgehoogd:
Serial.print("Sensor 1(*C): ");
Serial.print(sensors.getTempC(sensor1));
Serial.print(" Sensor 1(*F): ");
Serial.println(sensors.getTempF(sensor1));
Dus NIET door dit stukje code 5 keer te kopiëren zoals hieronder:
Serial.print("Sensor 1(*C): ");
Serial.print(sensors.getTempC(sensor1));
Serial.print(" Sensor 1(*F): ");
Serial.println(sensors.getTempF(sensor1));
Serial.print("Sensor 2(*C): ");
Serial.print(sensors.getTempC(sensor2));
Serial.print(" Sensor 2(*F): ");
Serial.println(sensors.getTempF(sensor2));
Serial.print("Sensor 3(*C): ");
Serial.print(sensors.getTempC(sensor3));
Serial.print(" Sensor 3(*F): ");
Serial.println(sensors.getTempF(sensor3));
Serial.print("Sensor 4(*C): ");
Serial.print(sensors.getTempC(sensor4));
Serial.print(" Sensor 4(*F): ");
Serial.println(sensors.getTempF(sensor4));
Serial.print("Sensor 5(*C): ");
Serial.print(sensors.getTempC(sensor5));
Serial.print(" Sensor 5(*F): ");
Serial.println(sensors.getTempF(sensor5));
Bovenstaande werkt wel, maar wil ik anders kunnen programmeren. Hoe doe je dit met een WHILE-DO of FOR-NEXT?
Alvast bedankt voor jullie suggesties.
Advertisement
Re: Lus programmeren
dan kun je dat oplossen met een array dus tekst[0]="sensor0"
dan kun je dus bijvoorbeeld stand=0
dan kun je serial.print tekst[stand]
zo ook natuurlijk sensors.getTempC(sensor[stand])
dan wordt stand=stand+1
en dan doe je de loop gewoon nog een keer dat kan met een FOR stand = 0 ;stand<5;stand++ next lus, maar ook met een while stand<5 en als stand>5 dan wordt stand=0
dan kun je dus bijvoorbeeld stand=0
dan kun je serial.print tekst[stand]
zo ook natuurlijk sensors.getTempC(sensor[stand])
dan wordt stand=stand+1
en dan doe je de loop gewoon nog een keer dat kan met een FOR stand = 0 ;stand<5;stand++ next lus, maar ook met een while stand<5 en als stand>5 dan wordt stand=0
paul deelen
shooter@home.nl
shooter@home.nl
- Gij Kieken
- Berichten: 636
- Geregistreerd: 15 Nov 2015, 11:54
Re: Lus programmeren
Shooter was net iets rapper.
Hier een voorzetje,
Hier een voorzetje,
- Code: Alles selecteren
int Sensor[6] = {-5, 16, 18, 20, 21, 22};
void setup() {
Serial.begin(9600);
}
void loop() {
for (uint8_t thisSensor = 1; thisSensor < 6; thisSensor++) {
Serial.print("Sensor ");
Serial.print(thisSensor);
Serial.print(" ");
Serial.print(Sensor[thisSensor]);
Serial.println(" (*C): ");
delay (1500);
// Serial.println(sensors.getTempC(Sensor[thisSensor]));
}
while(1);
}
Re: Lus programmeren
Rne1972 schreef:Beste bezoekers,
Kan iemand mij helpen bij het opstellen van een programmalus die een aantal keren herhaalt, ben nieuw in de wereld van Arduino maar leer snel.
Dit stukje van een sketch wil ik 5 keer herhalen waarbij het nummer van de sensor automatisch wordt opgehoogd:
- Code: Alles selecteren
x = beginwaarde;
while (x< uiterstewaardemineen) {
function(x);
x++;
}
return();
- Code: Alles selecteren
for ( x = beginwaarde ; x < uiterstewaardemineen; x++) {
function(x);
}
return();
Maar waarom zou je dat doen?
Ik zie niets mis in jouw code.
Gecompileerd is ze waarschijnlijk nog sneller ook.
(Vooropgesteld dat je compiler niet doet aan "loop_unrolling")
Pas op het moment dat jij vindt dat het voor jouw ongemakkelijk wordt, zou ik pas gaan beginnen met while() en for() loops.
En niet voor een "esthetisch" argument.
Op dit moment is je code voor iedereen duidelijk en begrijpelijk.
(Voor de processor maakt het uiteindelijk toch niets uit, of je "mooie" code schrijft of niet.)
Veel programmeerplezier!
Re: Lus programmeren
Dan wordt het iets lastiger:ctunes schreef:zijn sensor1, sensor2, sensor3, sensor-n, verschillende sensoren?
Als jij bijvoorbeeld hebt:"
sensor1::Sensor;
sensor2::Sensor;
sensor3::Sensor;
sensor4::Sensor;
sensor5::Sensor;
Dan valt dat niet eenvoudig in een for(;;) of while() loop te vatten.
De sensoren zijn dan inviduele entiteiten.
Wellicht met &sensor, &sensor+1, &sensor+2, benaderbaar, maar dat is puur hardwareafhankelijk.
Laatst gewijzigd door ctunes op 20 Dec 2021, 01:28, in totaal 1 keer gewijzigd.
Re: Lus programmeren
- Code: Alles selecteren
#define MAXSENSOR 5
sensor[MAXSENSOR]::Sensor;
for ( int x = 0; x < 5; x++) {
char line[] = sprintf(F("Sensor %d = %d\n\r"), x, sensor[x].Value);
Serial.print(&line);
}
Mits Sensor een object is, wat ik uit:
- Code: Alles selecteren
sensors.getTempC()
wel kan opmaken.
(Let wel op, sensor1 bestaat niet meer, dat is sensor[0] geworden.)
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast