errors

Dependencies:   mbed

main.cpp

Committer:
bagbag
Date:
2014-03-15
Revision:
0:ed91de6e3a1b

File content as of revision 0:ed91de6e3a1b:

#include "mbed.h"
#include "animations.h"

DigitalOut ledy0(PC_0);
DigitalOut ledy1(PC_1);
DigitalOut ledy2(PC_2);
DigitalOut ledx0(PC_13);
DigitalOut ledx1(PC_14);
DigitalOut ledx2(PC_15);

AnalogIn poti(A0);

void turnOn(short x, short y)
{
    switch(x) {
        case 0:
            ledx0 = 0;
            break;
        case 1:
            ledx1 = 0;
            break;
        case 2:
            ledx2 = 0;
            break;
    }

    switch(y) {
        case 0:
            ledy0 = 1;
            break;
        case 1:
            ledy1 = 1;
            break;
        case 2:
            ledy2 = 1;
            break;
    }
}

void turnOff(short x, short y)
{
    switch(x) {
        case 0:
            ledx0 = 1;
            break;
        case 1:
            ledx1 = 1;
            break;
        case 2:
            ledx2 = 1;
            break;
    }

    switch(y) {
        case 0:
            ledy0 = 0;
            break;
        case 1:
            ledy1 = 0;
            break;
        case 2:
            ledy2 = 0;
            break;
    }
}

void setPixel(int x, int y, bool on)
{
    if (on)
        turnOn(x,y);
    else
        turnOff(x,y);
}

int delay = 100;

void updateDelay()
{
    delay = 1000 + pow(poti * 4, 4) * 1000;
}

int leds[9][2] = {
    { 0, 0 },
    { 1, 0 },
    { 2, 0 },
    { 0, 1 },
    { 1, 1 },
    { 2, 1 },
    { 0, 2 },
    { 1, 2 },
    { 2, 2 },
};

void animate(int animation[][10] animation, int cycles, bool inverted = false)
{
    int frames = sizeof(animation) / 320;

    for (int frame = 0; frame < frames; frame++) {
        int frameTime = animation[frame][9];

        Timer timer;

        while (timer.read_ms() < frameTime) {
            for (int pixel = 0; pixel < 9; pixel++) {
                bool state = (bool)animation[frame][pixel] ^ inverted;
                setPixel(leds[pixel][0], leds[pixel][1], state);
                wait_us(delay);
                setPixel(leds[pixel][0], leds[pixel][1], !state);
            }
        }
    }
}

void init()
{
    for (int x = 0; x<3; x++)
        for (int y = 0; y<3; y++)
            turnOff(x,y);
}

int main()
{
    init();
    Ticker ticker;
    ticker.attach(&updateDelay, 0.05);

    while(true) {
        animate(animation1, 8);
        animate(animation2, 2);
        animate(animation3, 1);
        animate(animation4, 2);
        animate(animation5, 2);
        animate(transition6, 1);
        animate(animation6, 3);
        animate(end6, 1);
    }
}