Simon Ford
/
Scratch
main.cpp@0:6b0258d76fac, 2009-09-13 (annotated)
- Committer:
- simon
- Date:
- Sun Sep 13 08:54:10 2009 +0000
- Revision:
- 0:6b0258d76fac
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
simon | 0:6b0258d76fac | 1 | // Basic example to control scratch with mbed |
simon | 0:6b0258d76fac | 2 | // Copyright (c) 2008-2009 sford |
simon | 0:6b0258d76fac | 3 | // Released under the MIT License: http://mbed.org/license/mit |
simon | 0:6b0258d76fac | 4 | |
simon | 0:6b0258d76fac | 5 | #include "mbed.h" |
simon | 0:6b0258d76fac | 6 | |
simon | 0:6b0258d76fac | 7 | Serial pc(USBTX, USBRX); |
simon | 0:6b0258d76fac | 8 | DigitalOut led1(LED1); |
simon | 0:6b0258d76fac | 9 | |
simon | 0:6b0258d76fac | 10 | // The scratch IO |
simon | 0:6b0258d76fac | 11 | AnalogIn pin15(p15); |
simon | 0:6b0258d76fac | 12 | AnalogIn pin16(p16); |
simon | 0:6b0258d76fac | 13 | AnalogIn pin17(p17); |
simon | 0:6b0258d76fac | 14 | AnalogIn pin18(p18); |
simon | 0:6b0258d76fac | 15 | AnalogIn pin19(p19); |
simon | 0:6b0258d76fac | 16 | AnalogIn pin20(p20); |
simon | 0:6b0258d76fac | 17 | DigitalIn pin13(p13); |
simon | 0:6b0258d76fac | 18 | DigitalIn pin14(p14); |
simon | 0:6b0258d76fac | 19 | |
simon | 0:6b0258d76fac | 20 | /* The format |
simon | 0:6b0258d76fac | 21 | high byte (sent 1st) |
simon | 0:6b0258d76fac | 22 | [ 1 | c3:0 | d9:7 ] |
simon | 0:6b0258d76fac | 23 | low byte |
simon | 0:6b0258d76fac | 24 | [ 0 | d6:0 ] |
simon | 0:6b0258d76fac | 25 | */ |
simon | 0:6b0258d76fac | 26 | void send(int channel, int data) { |
simon | 0:6b0258d76fac | 27 | int high = 1 << 7 |
simon | 0:6b0258d76fac | 28 | | (channel & 0xF) << 3 |
simon | 0:6b0258d76fac | 29 | | ((data >> 7)& 0x7); |
simon | 0:6b0258d76fac | 30 | int low = data & 0x7F; |
simon | 0:6b0258d76fac | 31 | pc.putc(high); |
simon | 0:6b0258d76fac | 32 | pc.putc(low); |
simon | 0:6b0258d76fac | 33 | } |
simon | 0:6b0258d76fac | 34 | |
simon | 0:6b0258d76fac | 35 | int main() { |
simon | 0:6b0258d76fac | 36 | pc.baud(38400); |
simon | 0:6b0258d76fac | 37 | while(1) { |
simon | 0:6b0258d76fac | 38 | pc.getc(); // wait for poll |
simon | 0:6b0258d76fac | 39 | led1 = !led1; |
simon | 0:6b0258d76fac | 40 | send(15, 4); // firmware |
simon | 0:6b0258d76fac | 41 | send(0, pin20 * 1023.0); |
simon | 0:6b0258d76fac | 42 | send(1, pin19 * 1023.0); |
simon | 0:6b0258d76fac | 43 | send(2, pin18 * 1023.0); |
simon | 0:6b0258d76fac | 44 | send(3, pin14 * 1023.0); |
simon | 0:6b0258d76fac | 45 | send(4, pin17 * 1023.0); |
simon | 0:6b0258d76fac | 46 | send(5, pin16 * 1023.0); |
simon | 0:6b0258d76fac | 47 | send(6, pin13 * 1023.0); |
simon | 0:6b0258d76fac | 48 | send(7, pin15 * 1023.0); |
simon | 0:6b0258d76fac | 49 | } |
simon | 0:6b0258d76fac | 50 | } |