ESC Brazil 2012 Demo
Dependencies: mbed ID12RFID NokiaLCD
Revision 0:4fe41724cceb, committed 2012-06-20
- Comitter:
- anaran
- Date:
- Wed Jun 20 15:35:12 2012 +0000
- Commit message:
Changed in this revision
diff -r 000000000000 -r 4fe41724cceb ID12RFID.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ID12RFID.lib Wed Jun 20 15:35:12 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/ID12RFID/#f04afa911cf5
diff -r 000000000000 -r 4fe41724cceb NokiaLCD.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NokiaLCD.lib Wed Jun 20 15:35:12 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/NokiaLCD/#2d1b23692cbb
diff -r 000000000000 -r 4fe41724cceb SRF08.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SRF08.cpp Wed Jun 20 15:35:12 2012 +0000 @@ -0,0 +1,67 @@ + +/* +Copyright (c) 2010 Chris Styles ( chris dot styles at mbed dot org ) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include "SRF08.h" + + +SRF08::SRF08(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) { + char cmd[2]; + +// Set up SRF08 max range and receiver sensitivity over I2C bus + cmd[0] = 0x02; // Range register + cmd[1] = 0x1C; // Set max range about 100cm + m_i2c.write(m_addr, cmd, 2); + cmd[0] = 0x01; // Receiver gain register + cmd[1] = 0x1B; // Set max receiver gain + m_i2c.write(m_addr, cmd, 2); + +} + +SRF08::~SRF08() { + +} + +float SRF08::read() { + + char cmd[2]; + char echo[2]; + + +// Get range data from SRF08 +// Send Tx burst command over I2C bus + cmd[0] = 0x00; // Command register + cmd[1] = 0x51; // Ranging results in cm + m_i2c.write(m_addr, cmd, 2); // Send ranging burst + + wait(0.07); // Wait for return echo + +// Read back range over I2C bus + cmd[0] = 0x02; // Address of first echo + m_i2c.write(m_addr, cmd, 1, 1); // Send address of first echo + m_i2c.read(m_addr, echo, 2); // Read two-byte echo result + +// Generate PWM mark/space ratio from range data + float range = (echo[0]<<8)+echo[1]; + + return range; +}
diff -r 000000000000 -r 4fe41724cceb SRF08.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SRF08.h Wed Jun 20 15:35:12 2012 +0000 @@ -0,0 +1,60 @@ + +/* +Copyright (c) 2010 Chris Styles (chris dot styles at mbed dot org) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef SRF08_H +#define SRF08_H + +#include "mbed.h" + +//!Library for the SRF08 Ultrasonic Ranger +/*! +The SRF08 is an Ultrasonic range finder, with an I2C interface that allows the measurement to be read directly in centimetres +*/ +class SRF08 +{ +public: + //!Creates an instance of the class. + /*! + Connect module at I2C address addr using I2C port pins sda and scl. + SRF08 + */ + SRF08(PinName sda, PinName scl, int addr); + + /*! + Destroys instance. + */ + ~SRF08(); + + //!Reads the current temperature. + /*! + Reads the temperature register of the TMP102 and converts it to a useable value. + */ + float read(); + +private: + I2C m_i2c; + int m_addr; + +}; + +#endif
diff -r 000000000000 -r 4fe41724cceb main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jun 20 15:35:12 2012 +0000 @@ -0,0 +1,80 @@ +#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); + + } + +}
diff -r 000000000000 -r 4fe41724cceb mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Jun 20 15:35:12 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/737756e0b479