started reworking sketch to incooperate a loop feature
parent
8827530a3b
commit
266e27072a
|
@ -101,25 +101,106 @@ String waitForSerialInput(uint8_t bytes){
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
void runCommand(char command, String argument){
|
void runCommand1Arg(char command, uint8_t argument0){
|
||||||
|
switch (command) {
|
||||||
|
case 'h':
|
||||||
|
Serial.print("\n\rDid you mean 'H'?");
|
||||||
|
return;
|
||||||
|
case 'x': // toggle pin mode
|
||||||
|
if (toggleMode(argument0) == UNKNOWN_PIN) Serial.print("e");
|
||||||
|
else Serial.print("s");
|
||||||
|
return;
|
||||||
|
case 'a': // read analog pin
|
||||||
|
if (argument0>=NUM_ANALOG_INPUTS || analogInputToDigitalPin(argument0)<0){
|
||||||
|
Serial.print("e");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Serial.print(analogRead(analogInputToDigitalPin(argument0)));
|
||||||
|
Serial.print("s");
|
||||||
|
return;
|
||||||
|
case 'r': // read digital value
|
||||||
|
if (argument0 >= NUM_DIGITAL_PINS) Serial.print("e");
|
||||||
|
else {
|
||||||
|
Serial.print(digitalRead(argument0));
|
||||||
|
Serial.print("s");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 't': // toggle a pin
|
||||||
|
if (toggleState(argument0)==UNKNOWN_PIN) Serial.print("e");
|
||||||
|
else Serial.print("s");
|
||||||
|
return;
|
||||||
|
case 'l':
|
||||||
|
if (argument0=='h') {
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
Serial.print("s");
|
||||||
|
} else if (argument0=='l') {
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
Serial.print("s");
|
||||||
|
} else if (argument0=='t') {
|
||||||
|
toggleState(LED_BUILTIN);
|
||||||
|
Serial.print("s");
|
||||||
|
} else {
|
||||||
|
Serial.print("e");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void runCommand2Arg(char command, uint8_t argument0, uint8_t argument1){
|
||||||
|
switch (command) {
|
||||||
|
case 'm': // set pin mode
|
||||||
|
Serial.print(argument0);
|
||||||
|
Serial.print(argument1);
|
||||||
|
if (argument0 >= NUM_DIGITAL_PINS) Serial.print("e");
|
||||||
|
else if ((char)argument1=='i') {
|
||||||
|
pinMode(argument0, INPUT);
|
||||||
|
Serial.print("s");
|
||||||
|
} else if ((char)argument1=='o') {
|
||||||
|
pinMode(argument0, OUTPUT);
|
||||||
|
Serial.print("s");
|
||||||
|
} else {
|
||||||
|
Serial.print("e");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 'w': // write digital pin
|
||||||
|
if (argument0 >= NUM_DIGITAL_PINS) Serial.print("e");
|
||||||
|
else if ((char)argument1 == 'h') {
|
||||||
|
digitalWrite(argument0, HIGH);
|
||||||
|
Serial.print("s");
|
||||||
|
} else if ((char)argument1 == 'l') {
|
||||||
|
digitalWrite(argument0, LOW);
|
||||||
|
Serial.print("s");
|
||||||
|
} else {
|
||||||
|
Serial.print("e");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 'p': // set a pwm pin
|
||||||
|
if (digitalPinHasPWM(argument0)) {
|
||||||
|
analogWrite(argument0, argument1);
|
||||||
|
Serial.print("s");
|
||||||
|
} else {
|
||||||
|
Serial.print("e");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void getAndRunCommand(){
|
void getAndRunCommand(){
|
||||||
uint8_t command = Serial.read();
|
uint8_t command = Serial.read();
|
||||||
int analogPin;
|
uint8_t argument0;
|
||||||
String mode;
|
uint8_t argument1;
|
||||||
uint8_t pin;
|
|
||||||
String state;
|
|
||||||
uint8_t pwmState;
|
|
||||||
switch ((char)command) {
|
switch ((char)command) {
|
||||||
case 'R': // run setup() again
|
case 'R': // run setup() again
|
||||||
Serial.print("R");
|
Serial.print((char)command);
|
||||||
Serial.end();
|
Serial.end();
|
||||||
setup();
|
setup();
|
||||||
return;
|
return;
|
||||||
case 'h': // print help information
|
case 'H': // print help information
|
||||||
Serial.print("h");
|
Serial.print((char)command);
|
||||||
Serial.print(F("\n\r"
|
Serial.print(F("\n\r"
|
||||||
"status (output from serial line)\n\r"
|
"status (output from serial line)\n\r"
|
||||||
" <letter of command> command acknowledgement\n\r"
|
" <letter of command> command acknowledgement\n\r"
|
||||||
|
@ -132,7 +213,9 @@ void getAndRunCommand(){
|
||||||
"commands (input to serial line)\n\r"
|
"commands (input to serial line)\n\r"
|
||||||
" R pseudo-reset\n\r"
|
" R pseudo-reset\n\r"
|
||||||
" run setup again\n\r"
|
" run setup again\n\r"
|
||||||
" h show help\n\r"
|
" H show help\n\r"
|
||||||
|
" Q lock\n\r"
|
||||||
|
" lock the Arduino's state by running an infinite loop\n\r"
|
||||||
" m set mode\n\r"
|
" m set mode\n\r"
|
||||||
" usage: followed by two digit pin number and o or i\n\r"
|
" usage: followed by two digit pin number and o or i\n\r"
|
||||||
" set a pin to input or output mode\n\r"
|
" set a pin to input or output mode\n\r"
|
||||||
|
@ -165,103 +248,39 @@ void getAndRunCommand(){
|
||||||
" l change led state\n\r"
|
" l change led state\n\r"
|
||||||
" usage: followed by h (high), l (low) or t (toggle)\n\r"
|
" usage: followed by h (high), l (low) or t (toggle)\n\r"
|
||||||
" sets or toggles the state of LED_BUILTIN\n\r"
|
" sets or toggles the state of LED_BUILTIN\n\r"
|
||||||
" q lock\n\r"
|
|
||||||
" lock the Arduino's state by running an infinite loop\n\r"
|
|
||||||
"\n\rs"));
|
"\n\rs"));
|
||||||
return;
|
return;
|
||||||
case 'm': // set pin mode
|
case 'Q':
|
||||||
Serial.print("m");
|
Serial.print((char)command);
|
||||||
pin = waitForSerialInput(2).toInt();
|
|
||||||
mode = waitForSerialInput(1);
|
|
||||||
if (pin >= NUM_DIGITAL_PINS) Serial.print("e");
|
|
||||||
else if (mode=="i") {
|
|
||||||
pinMode(pin, INPUT);
|
|
||||||
Serial.print("s");
|
|
||||||
} else if (mode=="o") {
|
|
||||||
pinMode(pin, OUTPUT);
|
|
||||||
Serial.print("s");
|
|
||||||
} else {
|
|
||||||
Serial.print("e");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
case 'x': // toggle pin mode
|
|
||||||
Serial.print("x");
|
|
||||||
if (toggleMode((uint8_t)waitForSerialInput(2).toInt()) == UNKNOWN_PIN) Serial.print("e");
|
|
||||||
else Serial.print("s");
|
|
||||||
return;
|
|
||||||
case 'a': // read analog pin
|
|
||||||
Serial.print("a");
|
|
||||||
analogPin = waitForSerialInput(2).toInt();
|
|
||||||
if (analogPin>=NUM_ANALOG_INPUTS || analogInputToDigitalPin(analogPin)<0){
|
|
||||||
Serial.print("e");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Serial.print(analogRead(analogInputToDigitalPin(analogPin)));
|
|
||||||
Serial.print("s");
|
Serial.print("s");
|
||||||
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) {
|
while (true) {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
case 'h':
|
||||||
|
Serial.print((char)command);
|
||||||
|
runCommand1Arg((char)command, 0);
|
||||||
|
return;
|
||||||
|
case 'm':
|
||||||
|
Serial.print((char)command);
|
||||||
|
argument0 = waitForSerialInput(2).toInt();
|
||||||
|
argument1 = waitForSerialInput(1).charAt(0);
|
||||||
|
runCommand2Arg('m', argument0, argument1);
|
||||||
|
return;
|
||||||
|
case 'x':
|
||||||
|
Serial.print((char)command);
|
||||||
|
argument0 = waitForSerialInput(2).toInt();
|
||||||
|
runCommand1Arg((char)command, argument0);
|
||||||
|
return;
|
||||||
|
case 'l':
|
||||||
|
Serial.print((char)command);
|
||||||
|
argument0 = waitForSerialInput(1).charAt(0);
|
||||||
|
runCommand1Arg((char)command, argument0);
|
||||||
|
return;
|
||||||
default:
|
default:
|
||||||
|
Serial.print((char)command);
|
||||||
|
Serial.print("\n\rCommand not found.\n\r");
|
||||||
Serial.print("e");
|
Serial.print("e");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue