void herhalen tot status veranderd
10 berichten
• Pagina 1 van 1
void herhalen tot status veranderd
Beste,
Is er een mogelijkheid om een void te herhalen tot de serial.read een andere waarde binnenkrijgt?
void rgbBlink zou moeten blijven herhalen tot state een andere waarde heeft (zie code)
Alvast bedankt!
cpp code
Is er een mogelijkheid om een void te herhalen tot de serial.read een andere waarde binnenkrijgt?
void rgbBlink zou moeten blijven herhalen tot state een andere waarde heeft (zie code)
Alvast bedankt!
cpp code
const int redPin = 6;
const int greenPin = 5;
const int bluePin = 3;
void setup()
{
// Start up serial connection
Serial.begin(9600); // baud rate
Serial.flush();
setColor (0, 0, 0); // red
}
void setColor(int red, int green, int blue) {
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
void rgbBlink() {
setColor(255, 0, 0); // red
delay(200);
setColor(0, 255, 0); // green
delay(200);
setColor(0, 0, 255); // blue
delay(200);
}
void loop() {
// Read any serial input
while (Serial.available() > 0) {
char state = Serial.read();
switch (state) {
case '1' :
rgbBlink();
break;
case '2' :
setColor(255, 0, 0);// red
break;
case '3' :
setColor(0, 255, 0);//green
break;
case '4' :
setColor(0, 0, 255);//blue
break;
}
}
}
Advertisement
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: void herhalen tot status veranderd
Misschien met een case default ---> setColor(x,y,z)
Re: void herhalen tot status veranderd
Helaas... deze erbij gezet maar geen suc6.
het is gewoon de bedoeling dat de void rgbBlink in een loop zit die blijft herhalen tot er een andere waarde in state komt.
het is gewoon de bedoeling dat de void rgbBlink in een loop zit die blijft herhalen tot er een andere waarde in state komt.
Re: void herhalen tot status veranderd
Maak een globale boolean variabele: bool blinking;
Zet die op true bij "1" en op false bij alle andere waarden.
In de loop(), buiten de "while (Serial.available() > 0) {" kijk je naar die variabele.
Omdat de loop() steeds herhaalt wordt, heb je een globale variabele nodig om de code een bepaalde richting op te sturen.
De rgbBlink() duurt 600 ms. Tijdens die 600 ms kun je geen andere code uitvoeren. Dat is er uit te halen, maar dan is het nodig om er een heel stuk code bij te schrijven en millis() te gaan gebruiken.
Hieronder een Tinkercad simulatie. Ha ha, dat werkt Maar echte ledjes zien knipperen is veel leuker. Een bord met boerenkool en rookworst is toch iets anders dan een plaatje van een bord met boerenkool en rookworst.
Zet die op true bij "1" en op false bij alle andere waarden.
In de loop(), buiten de "while (Serial.available() > 0) {" kijk je naar die variabele.
- Code: Alles selecteren
if( blinking)
{
rgbBlink();
}
Omdat de loop() steeds herhaalt wordt, heb je een globale variabele nodig om de code een bepaalde richting op te sturen.
De rgbBlink() duurt 600 ms. Tijdens die 600 ms kun je geen andere code uitvoeren. Dat is er uit te halen, maar dan is het nodig om er een heel stuk code bij te schrijven en millis() te gaan gebruiken.
Hieronder een Tinkercad simulatie. Ha ha, dat werkt Maar echte ledjes zien knipperen is veel leuker. Een bord met boerenkool en rookworst is toch iets anders dan een plaatje van een bord met boerenkool en rookworst.
- Bijlagen
-
- tinkercad.png (13.41 KiB) 7166 keer bekeken
Laatst gewijzigd door Koepel op 29 Mrt 2018, 23:00, in totaal 3 keer gewijzigd.
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: void herhalen tot status veranderd
Aja is juist Koepel heeft mij verbetert, het moet buiten de while staan anders wordt er alsnog gewacht op input.
Re: void herhalen tot status veranderd
Bedankt!!! dit werkt zoals het zou moeten
Hij loopt wel eerst de volledige void door voor hij stopt als er een ander nummer binnenkomt, maar dat is het minste.
Hij loopt wel eerst de volledige void door voor hij stopt als er een ander nummer binnenkomt, maar dat is het minste.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: void herhalen tot status veranderd
Hij loopt altijd de loop() door omdat ie eindeloos wordt aangeroepen. als de terminal zodanig is ingesteld dat er ook een CR/LF of LF wordt meegegeven staan er tekens in de buffer. Gevolg is dat hij de switch case afloopt.
Loop() kun je immers nooit stoppen tenzij je in de code van main.cpp gaat rotzooien.
daar staat o.a. het volgende in:
cpp code
Hierin worden setup() en loop() aangeroepen en nog wat noodzakelijke toeters en bellen.
Loop() kun je immers nooit stoppen tenzij je in de code van main.cpp gaat rotzooien.
daar staat o.a. het volgende in:
cpp code
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
Hierin worden setup() en loop() aangeroepen en nog wat noodzakelijke toeters en bellen.
Re: void herhalen tot status veranderd
Kan de seriële verbinding vervangen worden door een nrf24l01 module?
De bedoeling is dat er een centrale arduino opdrachten krijgt via een vb.net programma en dat deze dan met de nrf24l01 verzend naar 12 ontvangers.
met andere woorden, 1 zender en 12 ontvangers die op hetzelfde moment dezelfde codes binnen krijgen
De bedoeling is dat er een centrale arduino opdrachten krijgt via een vb.net programma en dat deze dan met de nrf24l01 verzend naar 12 ontvangers.
met andere woorden, 1 zender en 12 ontvangers die op hetzelfde moment dezelfde codes binnen krijgen
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: void herhalen tot status veranderd
Kan kijk maar eens naar de voorbeelden van de nRF24L01 in de library. De master en slave dezelfde pipes laten gebruiken. Je kan dus niet (vlgs mij) direct Serial vervangen voor een nRF protocol. Er is dus enig huiswerk voor noodzakelijk.
Wil je individuele reponsders maken van de slaves (lijkt mij handig omdat je anders nooit weet of elke slave het bericht heeft ontvangen), zal je een dialoog moeten maken hoe de communicatie plaats gaat vinden tussen de verschillende devices.
ik heb dit ooit gedaan waarbij een App praat met een Mega over WiFi en die vervolgens communiceerde met verschillende Arduinos.
Dit was een jaar of 5 terug. Inmiddels zullen die libraries ook wel veranderd zijn.
Wil je individuele reponsders maken van de slaves (lijkt mij handig omdat je anders nooit weet of elke slave het bericht heeft ontvangen), zal je een dialoog moeten maken hoe de communicatie plaats gaat vinden tussen de verschillende devices.
ik heb dit ooit gedaan waarbij een App praat met een Mega over WiFi en die vervolgens communiceerde met verschillende Arduinos.
Dit was een jaar of 5 terug. Inmiddels zullen die libraries ook wel veranderd zijn.
10 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: eyixoqo en 19 gasten