The preloaded firmware shipped on the Medusa Icon.

Dependencies:   SoftwarePWM mbed

main.cpp

Committer:
Experiment626
Date:
2014-09-13
Revision:
0:034c0e606458
Child:
1:5d438f8b2afe

File content as of revision 0:034c0e606458:

#include "mbed.h"
#include "SoftwarePWM.h"

SPI spi(P0_21, P0_22, P1_15); // mosi, miso, sclk

//enum EYE { LEFT = 0, RIGHT = 1 };

DigitalOut Latch(P0_4);

DigitalOut PWM1(P0_13);
DigitalOut PWM2(P0_18);
DigitalOut PWM3(P0_19);
DigitalOut PWM4(P0_11);
DigitalOut PWM5(P0_16);
DigitalOut PWM6(P0_14);

//DigitalOut Eyes[] = {(P0_8), (P0_9)};// declare 2 LEDs of the eyes
SoftwarePWM LeftEye(P0_8);
SoftwarePWM RightEye(P0_9);

void WriteLED(uint64_t Shiftmap)
{
    spi.write(Shiftmap >> 40);
    spi.write(Shiftmap >> 32);
    spi.write(Shiftmap >> 24);
    spi.write(Shiftmap >> 16);
    spi.write(Shiftmap >> 8);
    spi.write(Shiftmap);
    
    Latch = true;
    Latch = false;
}

//void BlinkEye(EYE eye, bool blink)
//{
//    Eyes[eye] = blink;
//}

void Initialize()
{
    PWM1 = false;
    PWM2 = false;
    PWM3 = false;
    PWM4 = false;
    PWM5 = false;
    PWM6 = false;

    spi.format(16,0);
    spi.frequency(10 * 1000 * 1000);
}

int main()
{
    Initialize();

    uint64_t Shiftmap = 0x10101010101;
    int LED_counter = 1;

    LeftEye.Enable(25, 1000);
    RightEye.Enable(25, 1000);
    
//    bool isEyeOpen = false;

    while ( true ) {
        WriteLED(Shiftmap);
//        isEyeOpen = !isEyeOpen;
//        BlinkEye(LEFT, isEyeOpen);
//        BlinkEye(RIGHT, !isEyeOpen);

        if ( LED_counter++ < 8 ) {
            Shiftmap <<= 1;
        } else {
            Shiftmap = 0x10101010101;
            LED_counter = 1;
        }
        
        wait(.075);
    }

}