Compare commits

...

2 Commits

Author SHA1 Message Date
BodgeMaster 579d28e34b removed bug notice since the issue resolved itself 2021-05-04 21:30:13 +02:00
BodgeMaster 5cc71d5ff5 finished implementation 2021-05-04 21:27:34 +02:00
1 changed files with 62 additions and 30 deletions

View File

@ -108,6 +108,7 @@ void runCommand(){
String mode;
uint8_t pin;
String state;
uint8_t pwmState;
switch ((char)command) {
case 'R': // run setup() again
Serial.print("R");
@ -194,35 +195,67 @@ void runCommand(){
Serial.print(analogRead(analogInputToDigitalPin(analogPin)));
Serial.print("s");
return;
case 'r': // read digital value
/*bug:
The following "r" (or any other text you may put there) will never get printed despite this code branch being executed. Dont ask me why or how.
Tested on Linux Mint 20.1, Arduino IDE version 2:1.0.5+dfsg2-4.1
Tested with Arduino Uno and Nano 328P
*/
Serial.print("r");
pin = waitForSerialInput(2).toInt();
if (pin >= NUM_DIGITAL_PINS) Serial.print("e");
else {
Serial.print(digitalRead(pin));
Serial.print("s");
}
return;
case 'w': // write digital pin
Serial.print("w");
pin = waitForSerialInput(2).toInt();
state = waitForSerialInput(1);
if (pin >= NUM_DIGITAL_PINS) Serial.print("e");
else if (state == "h") {
digitalWrite(pin, HIGH);
Serial.print("s");
} else if (state == "l") {
digitalWrite(pin, LOW);
Serial.print("s");
} else {
Serial.print("e");
}
return;
case 'r': // read digital value
Serial.print("r");
pin = waitForSerialInput(2).toInt();
if (pin >= NUM_DIGITAL_PINS) Serial.print("e");
else {
Serial.print(digitalRead(pin));
Serial.print("s");
}
return;
case 'w': // write digital pin
Serial.print("w");
pin = waitForSerialInput(2).toInt();
state = waitForSerialInput(1);
if (pin >= NUM_DIGITAL_PINS) Serial.print("e");
else if (state == "h") {
digitalWrite(pin, HIGH);
Serial.print("s");
} else if (state == "l") {
digitalWrite(pin, LOW);
Serial.print("s");
} else {
Serial.print("e");
}
return;
case 'p': // set a pwm pin
Serial.print("p");
pin = waitForSerialInput(2).toInt();
pwmState = waitForSerialInput(3).toInt();
if (digitalPinHasPWM(pin)) {
analogWrite(pin, pwmState);
Serial.print("s");
} else {
Serial.print("e");
}
return;
case 't': // toggle a pin
Serial.print("t");
if (toggleState(waitForSerialInput(2).toInt())==UNKNOWN_PIN) Serial.print("e");
else Serial.print("s");
return;
case 'l':
Serial.print("l");
state = waitForSerialInput(1);
if (state=="h") {
digitalWrite(LED_BUILTIN, HIGH);
Serial.print("s");
} else if (state=="l") {
digitalWrite(LED_BUILTIN, LOW);
Serial.print("s");
} else if (state=="t") {
toggleState(LED_BUILTIN);
Serial.print("s");
} else {
Serial.print("e");
}
return;
case 'q':
Serial.print("qs");
while (true) {
}
return;
default:
Serial.print("e");
}
@ -247,7 +280,6 @@ void setup(){
Serial.read();
}
Serial.print("s\r\n");
// testing
}
void loop(){