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.

ESC Brazil Demo

Schematic

Schematicmbed NXP LPC1768

Components

mbed NXP LPC1768LCD DisplayUSB B connectorPotentiometerUltrasonic RangerRGB LED
mbed NXP LPC1768LCD DisplayRFID ReaderPotentiometers108108
mbed NXP LPC1768Nokia 130x130 LCDRFID ReaderUltrasonic RangerBlinkM RGB LEDPotentiometers

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


To find out more, and get news and updates from mbed - sign up to our mailing list


All wikipages