(deleted)
if you enter 5 the code will be stuck in the while
while (buttonState == HIGH) {
delay(10);
buttonState = digitalRead(buttonPin);
}
while (buttonState == LOW) {
delay(10);
buttonState = digitalRead(buttonPin);
}
so you need to act on the button at least once to exit.
Also - when x is 4 you have number = Serial.parseInt();
so you are trying to read something but you don't know if that data is available... probably risky business...
may be a better starting point would be something like this:
enum : byte {LED_ON_MODE, LED_OFF_MODE, FLASH_MODE, SQUARE_MODE, BUTTON_MODE} currentMode;
const byte buttonPin = 3;
void handleCommand()
{
int r = Serial.read(); // -1 if nothing to read
switch (r) {
case '1': currentMode = LED_ON_MODE; break;
case '2': currentMode = LED_OFF_MODE; break;
case '3': currentMode = FLASH_MODE; break;
case '4': currentMode = SQUARE_MODE; break;
case '5': currentMode = BUTTON_MODE; break;
default: break; // ignore everything else
}
}
void handleMode()
{
switch (currentMode) {
case LED_ON_MODE:
break;
case LED_OFF_MODE:
break;
case FLASH_MODE:
break;
case SQUARE_MODE:
break;
case BUTTON_MODE:
break;
default: break; // ignore everything else
}
}
void setup() {
Serial.begin(9600); // should consider going faster like 11500
pinMode(LED_BUILTIN, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // unless you have an external pulldown then inverse logic
}
void loop()
{
handleCommand();
handleMode();
}
then once a mode is selected you need to code things in a similar way so that you don't do "blocking" stuff
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.