Megamegateam / Mbed 2 deprecated megamegaman

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "main.h"
00002  
00003 //PortOut portD(PortD, IOS);
00004 Timer timer;
00005 
00006 DigitalInOut gnds[] = {
00007     DigitalInOut(A1),
00008     DigitalInOut(D2),
00009     DigitalInOut(D3),
00010     DigitalInOut(D4),
00011     DigitalInOut(D12),
00012     DigitalInOut(D11),
00013     DigitalInOut(D10),
00014     DigitalInOut(D9)
00015 };
00016 DigitalInOut vccs[] = {
00017     DigitalInOut(D5),
00018     DigitalInOut(D6),
00019     DigitalInOut(D7),
00020     DigitalInOut(D8),
00021     DigitalInOut(A0),
00022     DigitalInOut(D15),
00023     DigitalInOut(D14),
00024     DigitalInOut(D13)
00025 };
00026 
00027 int pacman[][8] = {
00028 {
00029     binary< 100111100 >::value,
00030     binary< 101111110 >::value,
00031     binary< 111011111 >::value,
00032     binary< 111111111 >::value,
00033     binary< 111111111 >::value,
00034     binary< 111111111 >::value,
00035     binary< 101111110 >::value,
00036     binary< 100111100 >::value },
00037 {
00038     binary< 100111100 >::value,
00039     binary< 101111110 >::value,
00040     binary< 111011111 >::value,
00041     binary< 111111111 >::value,
00042     binary< 111111110 >::value,
00043     binary< 111111111 >::value,
00044     binary< 101111110 >::value,
00045     binary< 100111100 >::value },
00046 {
00047     binary< 100111100 >::value,
00048     binary< 101111110 >::value,
00049     binary< 111011111 >::value,
00050     binary< 111111111 >::value,
00051     binary< 111111100 >::value,
00052     binary< 111111111 >::value,
00053     binary< 101111110 >::value,
00054     binary< 100111100 >::value },
00055 {
00056     binary< 100111100 >::value,
00057     binary< 101111110 >::value,
00058     binary< 111011111 >::value,
00059     binary< 111111111 >::value,
00060     binary< 111111000 >::value,
00061     binary< 111111111 >::value,
00062     binary< 101111110 >::value,
00063     binary< 100111100 >::value },
00064 {
00065     binary< 100111100 >::value,
00066     binary< 101111110 >::value,
00067     binary< 111011111 >::value,
00068     binary< 111111111 >::value,
00069     binary< 111110000 >::value,
00070     binary< 111111111 >::value,
00071     binary< 101111110 >::value,
00072     binary< 100111100 >::value },
00073 };
00074 
00075 /*
00076  00111100
00077  01111110
00078  11011111
00079  11111111
00080  11110000
00081  11111111
00082  01111110
00083  00111100
00084 */
00085 
00086 // (00011000 >> (7-v) & 00000001)
00087 
00088 int main() {
00089     for ( int i = 0; i < 8; i++ ) {
00090         vccs[i].input();
00091         gnds[i].input();
00092     }
00093     int lv = 0, lg = 0;
00094     int s = 0, num = 0;
00095     timer.start();
00096     while( 1 ) {
00097         for ( int v = 0; v < 8; v++ ) {
00098             if ( v > num ) break;
00099             if ( num < 8 )
00100                 wait( 0.0003f );
00101             for ( int g = 0; g < 8; g++ ) {
00102                 vccs[lv].input();
00103                 gnds[lg].input();
00104                 if ( (pacman[s][g] >> (7-v)) & 1 ) {
00105                     vccs[v].output();
00106                     gnds[g].output();
00107                     vccs[v].write(1);
00108                     gnds[g].write(0);
00109                 }
00110                 lv = v;
00111                 lg = g;
00112                 wait( 0.0003f );
00113             }
00114         }
00115         if ( num < 8 )
00116             num++;
00117         if ( timer.read() <= 0.25f )
00118             s = 0;
00119         else if ( timer.read() <= 0.5f )
00120             s = 1;
00121         else if ( timer.read() <= 0.75f )
00122             s = 2;
00123         else if ( timer.read() <= 1.0f )
00124             s = 3;
00125         else if ( timer.read() <= 4.5f )
00126             s = 4;
00127         else if ( timer.read() <= 4.75f )
00128             s = 3;
00129         else if ( timer.read() <= 5.0f )
00130             s = 2;
00131         else if ( timer.read() <= 5.25f )
00132             s = 1;
00133         else if ( timer.read() <= 6.0f )
00134             s = 0;
00135         else
00136             timer.reset();
00137     }
00138 }
00139