This program demonstrates serial communications and digital output. I have a similar program for the Arduino Uno. The purpose of this program is to compare mbed and Arduino code.
Fork of Serial_ex_2 by
This is the corresponding Arduino/Wiring .ino program:
/* Serial2RGB_A
Toggles RGB LED junctions based on characters received via serial connection. Echos characters sent.
Hardware Required:
Arduino (or similar board as written)
Created by Dr. C. S. Tritt
Revision History
16-07-07 v. 1.0 Initial development (on TI MSP432). 17-03-13 v. 1.1 Ported to Arduino boards. 17-03-14 v. 1.2 Added echo of read characters.
- /
Use defines for pin IDs and other constants
- define RED_PIN 9 RED_LED
- define GRN_PIN 10 GREEN_LED
- define BLU_PIN 11 BLUE_LED
- define BAUD 9600 Other settings default to 8-N-1.
char inChar; boolean redState = LOW; boolean grnState = LOW; boolean bluState = LOW;
void setup() { Initialize the pins as an output. Assumes adjacent pins. for (int led = RED_PIN; led <= BLU_PIN; led++) { pinMode(led, OUTPUT); } Initialize serial communication. Serial.begin(BAUD); Set baud rate. }
void loop() { Read serial if available. if (Serial.available() > 0) { get incoming byte: inChar = (char) Serial.read(); Read and convert a value. Serial.print(inChar); Echo what was read. Use it to toggle outputs (LED states) if (inChar == 'r') { redState = !redState; digitalWrite(RED_PIN, redState); } else if (inChar == 'g') { grnState = !grnState; digitalWrite(GRN_PIN, grnState); } else if (inChar == 'b') { bluState = !bluState; digitalWrite(BLU_PIN, bluState); } } }
Diff: main.cpp
- Revision:
- 1:fdb8ecdf954f
- Parent:
- 0:8d318218bac1
- Child:
- 2:f91fc3b8d8f7
--- a/main.cpp Thu Jan 19 14:23:37 2017 -0600 +++ b/main.cpp Wed Mar 15 01:54:31 2017 +0000 @@ -1,15 +1,35 @@ #include "mbed.h" -//K64F -Serial pc(USBTX, USBRX); // tx, rx -Serial device(MBED_CONF_APP_UART1_TX, MBED_CONF_APP_UART1_RX); // tx, rx +/* + Serial2RGB main by C. S. Tritt, Last revised 3/14/17 (v. 1.0) + Toggles RGB LED junctions in response to serial input. Uses "unbuffered" + reads (Enter, CR/LF not required). +*/ +DigitalOut RedLED(D9); // Physically same as Arduino Digital pin 9. +DigitalOut GrnLED(D10); // Physically same as Arduino Digital pin 10. +DigitalOut BluLED(D11); // Physically same as Arduino Digital pin 11. + +Serial pc(USBTX, USBRX); // Default settings are 9600 Baud, 8-N-1. int main() { + + RedLED = 0; + GrnLED = 0; + BluLED = 0; + char letter; + while(1) { - if(pc.readable()) { - device.putc(pc.getc()); - } - if(device.readable()) { - pc.putc(device.getc()); + if (pc.readable()) { + letter = pc.getc(); + pc.putc(letter); + if (letter == 'r') { + RedLED = !RedLED; + } + else if (letter == 'g') { + GrnLED = !GrnLED; + } + else if (letter == 'b') { + BluLED = !BluLED; + } } } }