#include uint16_t lpcnt = 0; uint8_t dspframe = 0; Peggy2 frame1; Peggy2 frame2; Peggy2 frame3; Peggy2 frame4; uint32_t ddata1[] = { 0x00000000, 0x00000000, 0x000e00f0, 0x000ffff0, 0x000ffff0, 0x000e00f0, 0x000e00f0, 0x000ffff0, 0x006ffff6, 0x00fe00ff, 0x003ffffe, 0x001ffff8, 0x000f80f0, 0x007ffffe, 0x007ffffe, 0x0000e780, 0x0000f700, 0x003ffff8, 0x003ffff8, 0x00007800, 0x003ffffc, 0x003ffffc, 0x00003c00, 0x00003c00, 0x00000000 }; uint32_t ddata2[] = { 0x00000000, 0x00000000, 0x00000000, 0x003fc07f, 0x003fffff, 0x00007fc0, 0x0031f3e0, 0x003fc0f0, 0x001ffff8, 0x0007fff8, 0x0001e000, 0x000ffffc, 0x000e001c, 0x000e001c, 0x000ffffc, 0x000e001c, 0x000ffffc, 0x000e001c, 0x000e001c, 0x000ffffc, 0x00003c00, 0x003fffff, 0x003fffff, 0x00000000, 0x00000000, 0x00000000 }; uint32_t ddata3[] = { 0x00000000, 0x00000000, 0x00072002, 0x00077807, 0x00073c0f, 0x00071e1e, 0x00270f3c, 0x00770738, 0x003f47f0, 0x003fe3f0, 0x001fc3e0, 0x000f99ec, 0x000fb9fc, 0x00071dee, 0x00071dce, 0x003ffdce, 0x003ffdce, 0x00071dcf, 0x00071dc7, 0x003f0dc7, 0x003f81c0, 0x0007e1c0, 0x000041c0, 0x00000000, 0x00000000, 0x00000000 }; uint32_t ddata4[] = { 0x00000000, 0x00000000, 0x00000060, 0x000003f0, 0x00003fc0, 0x0003fe00, 0x000fe000, 0x00060100, 0x00000780, 0x00603f0e, 0x007efe7f, 0x003ff9fc, 0x0007e7e0, 0x0001ff80, 0x00007f00, 0x00307f00, 0x0078ff80, 0x003fe7c0, 0x001fc3e0, 0x000f81e0, 0x0007fff0, 0x0003ffe0, 0x0001e000, 0x0000c000, 0x00000000 }; void setup() { uint8_t xpos,ypos,nypos; uint32_t maskpat; uint32_t tmp_data; uint16_t datapos; frame1.HardwareInit(); datapos=0; for(ypos=25;ypos>0;ypos--){ nypos = ypos - 1; tmp_data = ddata1[datapos]; maskpat = 0x00800000; for(xpos=0;xpos<25;xpos++){ if((tmp_data & maskpat) != 0 ){ frame1.SetPoint(xpos, nypos); }else{ frame1.ClearPoint(xpos, nypos); } maskpat = maskpat>>1; } datapos++; } datapos=0; for(ypos=25;ypos>0;ypos--){ nypos = ypos - 1; tmp_data = ddata2[datapos]; maskpat = 0x00800000; for(xpos=0;xpos<25;xpos++){ if((tmp_data & maskpat) != 0 ){ frame2.SetPoint(xpos, nypos); }else{ frame2.ClearPoint(xpos, nypos); } maskpat = maskpat>>1; } datapos++; } datapos=0; for(ypos=25;ypos>0;ypos--){ nypos = ypos - 1; tmp_data = ddata3[datapos]; maskpat = 0x00800000; for(xpos=0;xpos<25;xpos++){ if((tmp_data & maskpat) != 0 ){ frame3.SetPoint(xpos, nypos); }else{ frame3.ClearPoint(xpos, nypos); } maskpat = maskpat>>1; } datapos++; } datapos=0; for(ypos=25;ypos>0;ypos--){ nypos = ypos - 1; tmp_data = ddata4[datapos]; maskpat = 0x00800000; for(xpos=0;xpos<25;xpos++){ if((tmp_data & maskpat) != 0 ){ frame4.SetPoint(xpos, nypos); }else{ frame4.ClearPoint(xpos, nypos); } maskpat = maskpat>>1; } datapos++; } } void loop() { lpcnt++; if(lpcnt == 1024){ lpcnt = 0; dspframe++; dspframe = dspframe & 0x03; } switch(dspframe){ case 0: frame1.RefreshAll(1); break; case 1: frame2.RefreshAll(1); break; case 2: frame3.RefreshAll(1); break; case 3: frame4.RefreshAll(1); } }