The preloaded firmware shipped on the Medusa Icon.
Dependencies: SoftwarePWM mbed
main.cpp@0:034c0e606458, 2014-09-13 (annotated)
- Committer:
- Experiment626
- Date:
- Sat Sep 13 03:23:01 2014 +0000
- Revision:
- 0:034c0e606458
- Child:
- 1:5d438f8b2afe
Official Medusa Icon Firmware 1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Experiment626 | 0:034c0e606458 | 1 | #include "mbed.h" |
Experiment626 | 0:034c0e606458 | 2 | #include "SoftwarePWM.h" |
Experiment626 | 0:034c0e606458 | 3 | |
Experiment626 | 0:034c0e606458 | 4 | SPI spi(P0_21, P0_22, P1_15); // mosi, miso, sclk |
Experiment626 | 0:034c0e606458 | 5 | |
Experiment626 | 0:034c0e606458 | 6 | //enum EYE { LEFT = 0, RIGHT = 1 }; |
Experiment626 | 0:034c0e606458 | 7 | |
Experiment626 | 0:034c0e606458 | 8 | DigitalOut Latch(P0_4); |
Experiment626 | 0:034c0e606458 | 9 | |
Experiment626 | 0:034c0e606458 | 10 | DigitalOut PWM1(P0_13); |
Experiment626 | 0:034c0e606458 | 11 | DigitalOut PWM2(P0_18); |
Experiment626 | 0:034c0e606458 | 12 | DigitalOut PWM3(P0_19); |
Experiment626 | 0:034c0e606458 | 13 | DigitalOut PWM4(P0_11); |
Experiment626 | 0:034c0e606458 | 14 | DigitalOut PWM5(P0_16); |
Experiment626 | 0:034c0e606458 | 15 | DigitalOut PWM6(P0_14); |
Experiment626 | 0:034c0e606458 | 16 | |
Experiment626 | 0:034c0e606458 | 17 | //DigitalOut Eyes[] = {(P0_8), (P0_9)};// declare 2 LEDs of the eyes |
Experiment626 | 0:034c0e606458 | 18 | SoftwarePWM LeftEye(P0_8); |
Experiment626 | 0:034c0e606458 | 19 | SoftwarePWM RightEye(P0_9); |
Experiment626 | 0:034c0e606458 | 20 | |
Experiment626 | 0:034c0e606458 | 21 | void WriteLED(uint64_t Shiftmap) |
Experiment626 | 0:034c0e606458 | 22 | { |
Experiment626 | 0:034c0e606458 | 23 | spi.write(Shiftmap >> 40); |
Experiment626 | 0:034c0e606458 | 24 | spi.write(Shiftmap >> 32); |
Experiment626 | 0:034c0e606458 | 25 | spi.write(Shiftmap >> 24); |
Experiment626 | 0:034c0e606458 | 26 | spi.write(Shiftmap >> 16); |
Experiment626 | 0:034c0e606458 | 27 | spi.write(Shiftmap >> 8); |
Experiment626 | 0:034c0e606458 | 28 | spi.write(Shiftmap); |
Experiment626 | 0:034c0e606458 | 29 | |
Experiment626 | 0:034c0e606458 | 30 | Latch = true; |
Experiment626 | 0:034c0e606458 | 31 | Latch = false; |
Experiment626 | 0:034c0e606458 | 32 | } |
Experiment626 | 0:034c0e606458 | 33 | |
Experiment626 | 0:034c0e606458 | 34 | //void BlinkEye(EYE eye, bool blink) |
Experiment626 | 0:034c0e606458 | 35 | //{ |
Experiment626 | 0:034c0e606458 | 36 | // Eyes[eye] = blink; |
Experiment626 | 0:034c0e606458 | 37 | //} |
Experiment626 | 0:034c0e606458 | 38 | |
Experiment626 | 0:034c0e606458 | 39 | void Initialize() |
Experiment626 | 0:034c0e606458 | 40 | { |
Experiment626 | 0:034c0e606458 | 41 | PWM1 = false; |
Experiment626 | 0:034c0e606458 | 42 | PWM2 = false; |
Experiment626 | 0:034c0e606458 | 43 | PWM3 = false; |
Experiment626 | 0:034c0e606458 | 44 | PWM4 = false; |
Experiment626 | 0:034c0e606458 | 45 | PWM5 = false; |
Experiment626 | 0:034c0e606458 | 46 | PWM6 = false; |
Experiment626 | 0:034c0e606458 | 47 | |
Experiment626 | 0:034c0e606458 | 48 | spi.format(16,0); |
Experiment626 | 0:034c0e606458 | 49 | spi.frequency(10 * 1000 * 1000); |
Experiment626 | 0:034c0e606458 | 50 | } |
Experiment626 | 0:034c0e606458 | 51 | |
Experiment626 | 0:034c0e606458 | 52 | int main() |
Experiment626 | 0:034c0e606458 | 53 | { |
Experiment626 | 0:034c0e606458 | 54 | Initialize(); |
Experiment626 | 0:034c0e606458 | 55 | |
Experiment626 | 0:034c0e606458 | 56 | uint64_t Shiftmap = 0x10101010101; |
Experiment626 | 0:034c0e606458 | 57 | int LED_counter = 1; |
Experiment626 | 0:034c0e606458 | 58 | |
Experiment626 | 0:034c0e606458 | 59 | LeftEye.Enable(25, 1000); |
Experiment626 | 0:034c0e606458 | 60 | RightEye.Enable(25, 1000); |
Experiment626 | 0:034c0e606458 | 61 | |
Experiment626 | 0:034c0e606458 | 62 | // bool isEyeOpen = false; |
Experiment626 | 0:034c0e606458 | 63 | |
Experiment626 | 0:034c0e606458 | 64 | while ( true ) { |
Experiment626 | 0:034c0e606458 | 65 | WriteLED(Shiftmap); |
Experiment626 | 0:034c0e606458 | 66 | // isEyeOpen = !isEyeOpen; |
Experiment626 | 0:034c0e606458 | 67 | // BlinkEye(LEFT, isEyeOpen); |
Experiment626 | 0:034c0e606458 | 68 | // BlinkEye(RIGHT, !isEyeOpen); |
Experiment626 | 0:034c0e606458 | 69 | |
Experiment626 | 0:034c0e606458 | 70 | if ( LED_counter++ < 8 ) { |
Experiment626 | 0:034c0e606458 | 71 | Shiftmap <<= 1; |
Experiment626 | 0:034c0e606458 | 72 | } else { |
Experiment626 | 0:034c0e606458 | 73 | Shiftmap = 0x10101010101; |
Experiment626 | 0:034c0e606458 | 74 | LED_counter = 1; |
Experiment626 | 0:034c0e606458 | 75 | } |
Experiment626 | 0:034c0e606458 | 76 | |
Experiment626 | 0:034c0e606458 | 77 | wait(.075); |
Experiment626 | 0:034c0e606458 | 78 | } |
Experiment626 | 0:034c0e606458 | 79 | |
Experiment626 | 0:034c0e606458 | 80 | } |