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 mbed_example

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

  1. define RED_PIN 9 RED_LED
  2. define GRN_PIN 10 GREEN_LED
  3. define BLU_PIN 11 BLUE_LED
  4. 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); } } }

main.cpp

Committer:
CSTritt
Date:
2017-03-18
Revision:
3:cbacf69dbed5
Parent:
2:f91fc3b8d8f7

File content as of revision 3:cbacf69dbed5:

#include "mbed.h"
/*
    Serial2RGB main by C. S. Tritt, Last revised 3/18/17 (v. 1.1)
    
    Toggles RGB LED junctions in response to serial input. Echos input.
    
    Suggested wiring...
    
    Common Anode LED (active low)
    
                           /-- 1 kΩ -- D9 (red)
    + 3.3 to 5.0 V ----LED<--- 680 Ω -- D10 (green)
                           \-- 680 Ω -- D11 (blue)
    
    Common Cathode LED (active high)
    
                /-- 1 kΩ -- D9 (red)
    GND ----LED<--- 680 Ω -- D10 (green)
                \-- 680 Ω -- D11 (blue)
   
*/
DigitalOut RedLED(D9); // Physically same as Arduino Digital pin 9 on Nucleos.
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(true) {
        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;
            }       
        }
    }
}