ESC Brazil 2012 Demo
This prototype that shows the ease of interfacing a range of different sensors to an mbed microcontroller using the mbed libraries.

Schematic¶
![]() | ![]() |
Components¶
| mbed NXP LPC1768 | LCD Display | USB B connector | Potentiometer | Ultrasonic Ranger | RGB LED |
|---|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| mbed NXP LPC1768 | Nokia 130x130 LCD | RFID Reader | Ultrasonic Ranger | BlinkM RGB LED | Potentiometers |
Software¶
#include "mbed.h"
#include "NokiaLCD.h"
#include "ID12RFID.h"
#include "SRF08.h"
ID12RFID rfid(p10); // UART RX
NokiaLCD lcd(p5, p7, p8, p9); // mosi, sclk, cs, rst, type
SRF08 srf08(p28, p27, 0xE0); // SDA, SCL pin and I2C address
I2C i2c (p28,p27); // Setup the I2C interface: sda, scl
Serial pc (USBTX,USBRX);
AnalogIn pot1(p15); // Pot1
AnalogIn pot2(p16); // Pot2
AnalogIn pot3(p20); // Pot3
int main() {
int i = 0;
int id = 0;
char stop_led[1] = {'o'}; // BlinkM LED stop command
char led_data[4] = {'c', 0x00, 0x00, 0x00};
// set up the LCD, and draw some bands of colour
lcd.foreground(0x000000);
lcd.background(0xFFFFFF);
lcd.cls();
lcd.fill(2, 11, 128, 10, 0xFF0000);
lcd.fill(2, 41, 128, 10, 0x00FF00);
lcd.fill(2, 61, 128, 10, 0x0000FF);
// A friendly welcome message
lcd.locate(0,3);
lcd.printf("ESC Brazil 2012");
pc.printf("Welcome to ESC Brazil 2012\n\r");
i2c.write(0x00, stop_led, 1); // Stop previous BlinkM script
// forever....
while (1) {
// Plot the three potentiometers
lcd.pixel(i, 80 + int(pot1.read() * 50), 0xFF0000);
lcd.pixel(i, 80 + int(pot2.read() * 50), 0x00FF00);
lcd.pixel(i, 80 + int(pot3.read() * 50), 0x0000FF);
//Update LED
led_data[1] = char(pot1.read()*255);
led_data[2] = char(pot2.read()*255);
led_data[3] = char(pot3.read()*255);
i2c.write(0x00, led_data, 4);
// Blank the canvas when we wrap
if (i==130) {
lcd.fill(0, 80, 130, 50, 0xFFFFFF);
i=0;
} else {
i++;
}
// Check for ID tag, and Process
if (rfid.readable()) {
id = rfid.read();
lcd.locate(0,0);
lcd.printf("RFID:%d", id );
pc.printf("Tag ID = %d\n\r",id);
}
// Take and RFIF Reading
lcd.locate(0,4);
lcd.printf("SRF:%dcm",int(srf08.read()));
// give the loop a slower tick
wait(0.05);
}
}
Import programESCBrazil2012
ESC Brazil 2012 Demo
Useful Links¶
- mbed Microcontrollers - Specification of the mbed Microcontrollers
- Handbook - Documentation and peripheral libraries
- Cookbook - Published developer projects
- Compiler - Getting started with the mbed Compiler
To find out more, and get news and updates from mbed - sign up to our mailing list








