In this manipulation we will see Serial communication and will use it for controlling Arduino. when will a specific character over the serial monitor to the Arduino it will switch/trigger an Action behaviour preprogramed in the Arduino board.
Hardware
- Arduino Uno board
- LED (or the LED built-in into the Arduino which is connected to the pin #13).
- Serial medium: USB cable connected to a serial monitor or Pin#0(RX), Pin#1(TX) for Arduino Uno.
Controlling the Arduino over serial:
The purpose of this manipulation is to control the on-boar algorithm on the Arduino over the serial communicatoin
/*Serial_LED_02.ino Arduining 4 May 2015 Controlling the LED in pin 13 with the Serial Monitor. --- Command list: --- ? -> Print this HELP a -> LED On "activate" d -> LED Off "deactivate" s -> LED "status" Example using the switch statement. */ #define LED 13 // Pin 13 is connected to the LED char rxChar= 0; // RXcHAR holds the received command. //=== function to print the command list: =========================== void printHelp(void){ Serial.println("--- Command list: ---"); Serial.println("? -> Print this HELP"); Serial.println("a -> LED On "activate""); Serial.println("d -> LED Off "deactivate""); Serial.println("s -> LED "status""); } //---------------- setup --------------------------------------------- void setup(){ Serial.begin(9600); // Open serial port (9600 bauds). pinMode(LED, OUTPUT); // Sets pin 13 as OUTPUT. Serial.flush(); // Clear receive buffer. printHelp(); // Print the command list. } //--------------- loop ----------------------------------------------- void loop(){ if (Serial.available() >0){ // Check receive buffer. rxChar = Serial.read(); // Save character received. Serial.flush(); // Clear receive buffer. switch (rxChar) { case 'a': case 'A': // If received 'a' or 'A': if (digitalRead(LED) == LOW){ // If LED is Off: digitalWrite(LED,HIGH); // Turn On the LED. Serial.println("LED turned On"); } else Serial.println("LED already On!"); break; case 'd': case 'D': // If received 'd' or 'D': if (digitalRead(LED) == HIGH){ // If LED is On: digitalWrite(LED,LOW); // Turn Off the LED. Serial.println("LED turned Off"); } else Serial.println("LED already Off!"); break; case 's': case 'S': // If received 's' or 'S': if (digitalRead(LED) == HIGH) // Read LED status. Serial.println("LED status: On"); else Serial.println("LED status: Off"); break; case '?': // If received a ?: printHelp(); // print the command list. break; default: Serial.print("'"); Serial.print((char)rxChar); Serial.println("' is not a command!"); } } } // End of the Sketch.