1042 lines
31 KiB
C++
1042 lines
31 KiB
C++
#include "image.h"
|
|
|
|
|
|
|
|
Image::Image()
|
|
{
|
|
|
|
|
|
}
|
|
|
|
void Image::serialPrintInt(uint16_t source)
|
|
{
|
|
for(uint8_t i = 0; i < 16; i++)
|
|
Serial.print((source & (1 << i)) > 0);
|
|
}
|
|
|
|
void Image::init()
|
|
{
|
|
flipdot.init(); //sets pin modes etc.
|
|
|
|
flag_updating=false;
|
|
update_counter=0;
|
|
updateDelay=10;
|
|
|
|
resetOrder(true);
|
|
}
|
|
|
|
uint8_t Image::getW() {
|
|
return COLUMNS;
|
|
}
|
|
|
|
uint8_t Image::getH() {
|
|
return ROWS;
|
|
}
|
|
|
|
void Image::setBuffer_solid(bool set)
|
|
{
|
|
for (uint8_t x=0;x<getW();x++) {
|
|
if (set) {
|
|
backBuffer[x]=0xffff; //all white
|
|
}else{
|
|
backBuffer[x]=0x0; //all black
|
|
}
|
|
}
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
void Image::setBuffer_Image1() //Bumblebee
|
|
{
|
|
backBuffer[0]=0b0000000000000111;
|
|
backBuffer[1]=0b0000000000000000;
|
|
backBuffer[2]=0b0000000000000000;
|
|
backBuffer[3]=0b0000000000000010;
|
|
backBuffer[4]=0b0000000000000001;
|
|
backBuffer[5]=0b0000000001100000;
|
|
backBuffer[6]=0b0000000001110000;
|
|
backBuffer[7]=0b0000000000111000;
|
|
backBuffer[8]=0b0000000000001111;
|
|
backBuffer[9]=0b0000110000011111;
|
|
backBuffer[10]=0b0000111001110000;
|
|
backBuffer[11]=0b0000011110000001;
|
|
backBuffer[12]=0b0000111000000010;
|
|
backBuffer[13]=0b0000110000000000;
|
|
backBuffer[14]=0b0000000000000000;
|
|
backBuffer[15]=0b0000000000000111;
|
|
backBuffer[16]=0b0000000000001000;
|
|
backBuffer[17]=0b0000000000000000;
|
|
backBuffer[18]=0b0000000000000000;
|
|
backBuffer[19]=0b0000000000000011;
|
|
backBuffer[20]=0b0000000000000000;
|
|
backBuffer[21]=0b0000000000000011;
|
|
backBuffer[22]=0b0000000000000000;
|
|
backBuffer[23]=0b1100000000000000;
|
|
backBuffer[24]=0b1110000000000111;
|
|
backBuffer[25]=0b1111000000000000;
|
|
backBuffer[26]=0b1111100000000000;
|
|
backBuffer[27]=0b1111100000000010;
|
|
backBuffer[28]=0b1111000000000001;
|
|
backBuffer[29]=0b1110000000000000;
|
|
backBuffer[30]=0b1110000000000001;
|
|
backBuffer[31]=0b1111000000000000;
|
|
backBuffer[32]=0b1111000000000000;
|
|
backBuffer[33]=0b1111100000000001;
|
|
backBuffer[34]=0b1111100000000000;
|
|
backBuffer[35]=0b1111100000000001;
|
|
backBuffer[36]=0b1111000000000000;
|
|
backBuffer[37]=0b1110000000000000;
|
|
backBuffer[38]=0b1110000000000000;
|
|
backBuffer[39]=0b1111000000000000;
|
|
backBuffer[40]=0b1111000000000011;
|
|
backBuffer[41]=0b1110000000000000;
|
|
backBuffer[42]=0b1100000000000000;
|
|
backBuffer[43]=0b1000000000000000;
|
|
backBuffer[44]=0b0000000000000010;
|
|
backBuffer[45]=0b0000000000000001;
|
|
backBuffer[46]=0b0000000000000000;
|
|
backBuffer[47]=0b0000000000000000;
|
|
backBuffer[48]=0b0000000000000111;
|
|
backBuffer[49]=0b0000000000000000;
|
|
backBuffer[50]=0b0000000000000000;
|
|
backBuffer[51]=0b0000000000000011;
|
|
backBuffer[52]=0b0000000000000000;
|
|
backBuffer[53]=0b0000000000000000;
|
|
backBuffer[54]=0b0000000000000110;
|
|
backBuffer[55]=0b0000000000000001;
|
|
backBuffer[56]=0b0000110000000000;
|
|
backBuffer[57]=0b0001111000000000;
|
|
backBuffer[58]=0b0011110000000000;
|
|
backBuffer[59]=0b0011111000000011;
|
|
backBuffer[60]=0b0001110000000100;
|
|
backBuffer[61]=0b0000000000000000;
|
|
backBuffer[62]=0b0000000000000000;
|
|
backBuffer[63]=0b0000000000000000;
|
|
backBuffer[64]=0b0000000111000000;
|
|
backBuffer[65]=0b0000000111000011;
|
|
backBuffer[66]=0b0000000111100000;
|
|
backBuffer[67]=0b0000000011110000;
|
|
backBuffer[68]=0b0000000001111111;
|
|
backBuffer[69]=0b0011000001110110;
|
|
backBuffer[70]=0b0011100111000100;
|
|
backBuffer[71]=0b0011111100001000;
|
|
backBuffer[72]=0b0011111000000000;
|
|
backBuffer[73]=0b0111100000000001;
|
|
backBuffer[74]=0b0000000000000000;
|
|
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
void Image::setBuffer_Image2() //CTDO
|
|
{
|
|
backBuffer[0]=0b0000000000000000;
|
|
backBuffer[1]=0b0000000000000000;
|
|
backBuffer[2]=0b0000000000000000;
|
|
backBuffer[3]=0b0000000000000000;
|
|
backBuffer[4]=0b0000000000000000;
|
|
backBuffer[5]=0b0000000000000000;
|
|
backBuffer[6]=0b0000000000000000;
|
|
backBuffer[7]=0b0000011110000000;
|
|
backBuffer[8]=0b0011111111000000;
|
|
backBuffer[9]=0b0111111111100000;
|
|
backBuffer[10]=0b1111110111110000;
|
|
backBuffer[11]=0b1110000000111000;
|
|
backBuffer[12]=0b1110000000111100;
|
|
backBuffer[13]=0b1110000000111100;
|
|
backBuffer[14]=0b1110000001111000;
|
|
backBuffer[15]=0b1111000000110000;
|
|
backBuffer[16]=0b0110000000000000;
|
|
backBuffer[17]=0b0000000000000000;
|
|
backBuffer[18]=0b0000000000000000;
|
|
backBuffer[19]=0b0000000000000000;
|
|
backBuffer[20]=0b0000000000000000;
|
|
backBuffer[21]=0b0110000000000000;
|
|
backBuffer[22]=0b1111000000000000;
|
|
backBuffer[23]=0b1110000000000000;
|
|
backBuffer[24]=0b1110000000001100;
|
|
backBuffer[25]=0b1110000011111110;
|
|
backBuffer[26]=0b1111111111111110;
|
|
backBuffer[27]=0b1111111111111100;
|
|
backBuffer[28]=0b1111111111000000;
|
|
backBuffer[29]=0b1110000000000000;
|
|
backBuffer[30]=0b1110000000000000;
|
|
backBuffer[31]=0b1110000000000000;
|
|
backBuffer[32]=0b1111000000000000;
|
|
backBuffer[33]=0b0110000000000000;
|
|
backBuffer[34]=0b0000000000000000;
|
|
backBuffer[35]=0b0000000000000000;
|
|
backBuffer[36]=0b0000000000000000;
|
|
backBuffer[37]=0b0000000000000000;
|
|
backBuffer[38]=0b0000000000000000;
|
|
backBuffer[39]=0b0110000000000000;
|
|
backBuffer[40]=0b1111000000011000;
|
|
backBuffer[41]=0b1111111111111100;
|
|
backBuffer[42]=0b1111111111111110;
|
|
backBuffer[43]=0b1111111111111110;
|
|
backBuffer[44]=0b1111000011111111;
|
|
backBuffer[45]=0b1111000000000111;
|
|
backBuffer[46]=0b1111000000000111;
|
|
backBuffer[47]=0b0111000000000111;
|
|
backBuffer[48]=0b0111000000000011;
|
|
backBuffer[49]=0b0111100000000111;
|
|
backBuffer[50]=0b0011100000011111;
|
|
backBuffer[51]=0b0001111111111110;
|
|
backBuffer[52]=0b0000111111111100;
|
|
backBuffer[53]=0b0000011111110000;
|
|
backBuffer[54]=0b0000001110000000;
|
|
backBuffer[55]=0b0000000000000000;
|
|
backBuffer[56]=0b0000000000000000;
|
|
backBuffer[57]=0b0000000000000000;
|
|
backBuffer[58]=0b0000000000000000;
|
|
backBuffer[59]=0b0000000000000000;
|
|
backBuffer[60]=0b0000000000000000;
|
|
backBuffer[61]=0b0000001111000000;
|
|
backBuffer[62]=0b0000111111100000;
|
|
backBuffer[63]=0b0001111111110000;
|
|
backBuffer[64]=0b0001111111111000;
|
|
backBuffer[65]=0b0011110000111100;
|
|
backBuffer[66]=0b0011100000011100;
|
|
backBuffer[67]=0b0111110000011100;
|
|
backBuffer[68]=0b0111100000011110;
|
|
backBuffer[69]=0b0011111001111100;
|
|
backBuffer[70]=0b0001111111111000;
|
|
backBuffer[71]=0b0000111111110000;
|
|
backBuffer[72]=0b0000011111100000;
|
|
backBuffer[73]=0b0000000000000000;
|
|
backBuffer[74]=0b0000000000000000;
|
|
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
void Image::setBuffer_Image3() //23:24
|
|
{
|
|
backBuffer[0]=0b1111111111111111;
|
|
backBuffer[1]=0b1111111111111111;
|
|
backBuffer[2]=0b1111111111111111;
|
|
backBuffer[3]=0b1111111111111111;
|
|
backBuffer[4]=0b1111111111111111;
|
|
backBuffer[5]=0b1111111111111111;
|
|
backBuffer[6]=0b1111111111111111;
|
|
backBuffer[7]=0b1111111111111111;
|
|
backBuffer[8]=0b1111111111111111;
|
|
backBuffer[9]=0b1111111111111111;
|
|
backBuffer[10]=0b1111111111111111;
|
|
backBuffer[11]=0b1111111111111111;
|
|
backBuffer[12]=0b1111111111111111;
|
|
backBuffer[13]=0b1111111111111111;
|
|
backBuffer[14]=0b1101111111000111;
|
|
backBuffer[15]=0b1101111110000111;
|
|
backBuffer[16]=0b1001111100000111;
|
|
backBuffer[17]=0b1001111000100111;
|
|
backBuffer[18]=0b1000110001100111;
|
|
backBuffer[19]=0b1100000011100111;
|
|
backBuffer[20]=0b1100000111100111;
|
|
backBuffer[21]=0b1111111111111111;
|
|
backBuffer[22]=0b1111111111111111;
|
|
backBuffer[23]=0b1111111111111111;
|
|
backBuffer[24]=0b1111111111101111;
|
|
backBuffer[25]=0b1101111111101111;
|
|
backBuffer[26]=0b1101100111100111;
|
|
backBuffer[27]=0b1001100111100111;
|
|
backBuffer[28]=0b1001100111100111;
|
|
backBuffer[29]=0b1001100011000111;
|
|
backBuffer[30]=0b1100000000001111;
|
|
backBuffer[31]=0b1100011000001111;
|
|
backBuffer[32]=0b1111111100111111;
|
|
backBuffer[33]=0b1111111111111111;
|
|
backBuffer[34]=0b1111111111111111;
|
|
backBuffer[35]=0b1111111111111111;
|
|
backBuffer[36]=0b1111000111000111;
|
|
backBuffer[37]=0b1111000111000111;
|
|
backBuffer[38]=0b1111111111111111;
|
|
backBuffer[39]=0b1111111111111111;
|
|
backBuffer[40]=0b1111111111111111;
|
|
backBuffer[41]=0b1111111111111111;
|
|
backBuffer[42]=0b1101111111000111;
|
|
backBuffer[43]=0b1101111110000111;
|
|
backBuffer[44]=0b1001111100000111;
|
|
backBuffer[45]=0b1001111000100111;
|
|
backBuffer[46]=0b1000110001100111;
|
|
backBuffer[47]=0b1100000011100111;
|
|
backBuffer[48]=0b1100000111100111;
|
|
backBuffer[49]=0b1111111111111111;
|
|
backBuffer[50]=0b1111111111111111;
|
|
backBuffer[51]=0b1111111111111111;
|
|
backBuffer[52]=0b1111111100011111;
|
|
backBuffer[53]=0b1111110000011111;
|
|
backBuffer[54]=0b1111000110011111;
|
|
backBuffer[55]=0b1110011110011111;
|
|
backBuffer[56]=0b1000111110011111;
|
|
backBuffer[57]=0b1000000000000111;
|
|
backBuffer[58]=0b1000000000000111;
|
|
backBuffer[59]=0b1111111110011111;
|
|
backBuffer[60]=0b1111111110011111;
|
|
backBuffer[61]=0b1111111111111111;
|
|
backBuffer[62]=0b1111111111111111;
|
|
backBuffer[63]=0b1111111111111111;
|
|
backBuffer[64]=0b1111111111111111;
|
|
backBuffer[65]=0b1111111111111111;
|
|
backBuffer[66]=0b1111111111111111;
|
|
backBuffer[67]=0b1111111111111111;
|
|
backBuffer[68]=0b1111111111111111;
|
|
backBuffer[69]=0b1111111111111111;
|
|
backBuffer[70]=0b1111111111111111;
|
|
backBuffer[71]=0b1111111111111111;
|
|
backBuffer[72]=0b1111111111111111;
|
|
backBuffer[73]=0b1111111111111111;
|
|
backBuffer[74]=0b1111111111111111;
|
|
|
|
|
|
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
|
|
void Image::setBuffer_Image4() //Linux
|
|
{
|
|
|
|
backBuffer[0]=0b0000000000000000;
|
|
backBuffer[1]=0b0000000000000000;
|
|
backBuffer[2]=0b0000000000000000;
|
|
backBuffer[3]=0b0000000000000000;
|
|
backBuffer[4]=0b0000000000000000;
|
|
backBuffer[5]=0b0000000000000000;
|
|
backBuffer[6]=0b0000000011000000;
|
|
backBuffer[7]=0b0000011111100000;
|
|
backBuffer[8]=0b0011111111110000;
|
|
backBuffer[9]=0b0111111111110000;
|
|
backBuffer[10]=0b0111110011110000;
|
|
backBuffer[11]=0b0011000011110000;
|
|
backBuffer[12]=0b0000000011110000;
|
|
backBuffer[13]=0b0000000011110000;
|
|
backBuffer[14]=0b0000000001110000;
|
|
backBuffer[15]=0b0000000000100000;
|
|
backBuffer[16]=0b0000000000000000;
|
|
backBuffer[17]=0b0000000000000000;
|
|
backBuffer[18]=0b0000000000000000;
|
|
backBuffer[19]=0b0000000000011000;
|
|
backBuffer[20]=0b0000000001111100;
|
|
backBuffer[21]=0b0001000011111000;
|
|
backBuffer[22]=0b0011100111110000;
|
|
backBuffer[23]=0b0011100011000000;
|
|
backBuffer[24]=0b0001000000000000;
|
|
backBuffer[25]=0b0000000000000000;
|
|
backBuffer[26]=0b0000000000000000;
|
|
backBuffer[27]=0b0000000000000000;
|
|
backBuffer[28]=0b0000000000011100;
|
|
backBuffer[29]=0b0000000111111110;
|
|
backBuffer[30]=0b0000001111111110;
|
|
backBuffer[31]=0b0000000111111100;
|
|
backBuffer[32]=0b0000000111100000;
|
|
backBuffer[33]=0b0000000111000000;
|
|
backBuffer[34]=0b0000000111000000;
|
|
backBuffer[35]=0b0000000111000000;
|
|
backBuffer[36]=0b0000000111111000;
|
|
backBuffer[37]=0b0000000011111100;
|
|
backBuffer[38]=0b0000000001111110;
|
|
backBuffer[39]=0b0000000000011100;
|
|
backBuffer[40]=0b0000000000000000;
|
|
backBuffer[41]=0b0000000000000000;
|
|
backBuffer[42]=0b0000000000000000;
|
|
backBuffer[43]=0b0000001111110000;
|
|
backBuffer[44]=0b0000011111111000;
|
|
backBuffer[45]=0b0000011111111100;
|
|
backBuffer[46]=0b0000001100111100;
|
|
backBuffer[47]=0b0000000000111000;
|
|
backBuffer[48]=0b0000000000111000;
|
|
backBuffer[49]=0b0000000000111000;
|
|
backBuffer[50]=0b0000000001110000;
|
|
backBuffer[51]=0b0000000011110000;
|
|
backBuffer[52]=0b0000001111100000;
|
|
backBuffer[53]=0b0000011111000000;
|
|
backBuffer[54]=0b0000001100000000;
|
|
backBuffer[55]=0b0000000000001000;
|
|
backBuffer[56]=0b0000011000011100;
|
|
backBuffer[57]=0b0000111100011100;
|
|
backBuffer[58]=0b0000111100011100;
|
|
backBuffer[59]=0b0000011110111000;
|
|
backBuffer[60]=0b0000001111111000;
|
|
backBuffer[61]=0b0000000011110000;
|
|
backBuffer[62]=0b0000000011110000;
|
|
backBuffer[63]=0b0000000111110000;
|
|
backBuffer[64]=0b0000001111111000;
|
|
backBuffer[65]=0b0000011110111100;
|
|
backBuffer[66]=0b0000011100011110;
|
|
backBuffer[67]=0b0000001000001110;
|
|
backBuffer[68]=0b0000000000000100;
|
|
backBuffer[69]=0b0000000000000000;
|
|
backBuffer[70]=0b0000000000000000;
|
|
backBuffer[71]=0b0000000000000000;
|
|
backBuffer[72]=0b0000000000000000;
|
|
backBuffer[73]=0b0000000000000000;
|
|
backBuffer[74]=0b0000000000000000;
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
|
|
|
|
void Image::setBuffer_Image5() //Datamatrix ctdo.de
|
|
{
|
|
|
|
backBuffer[0]=0b1111111111111111;
|
|
backBuffer[1]=0b1111111111111111;
|
|
backBuffer[2]=0b1111111111111111;
|
|
backBuffer[3]=0b1111111111111111;
|
|
backBuffer[4]=0b1111111111111111;
|
|
backBuffer[5]=0b1111111111111111;
|
|
backBuffer[6]=0b1111111111111111;
|
|
backBuffer[7]=0b1111111111111111;
|
|
backBuffer[8]=0b1111111111111111;
|
|
backBuffer[9]=0b1111111111111111;
|
|
backBuffer[10]=0b1111111111111111;
|
|
backBuffer[11]=0b1111111111111111;
|
|
backBuffer[12]=0b1111111111111111;
|
|
backBuffer[13]=0b1111111111111111;
|
|
backBuffer[14]=0b1111111111111111;
|
|
backBuffer[15]=0b1111111111111111;
|
|
backBuffer[16]=0b1111111111111111;
|
|
backBuffer[17]=0b1111111111111111;
|
|
backBuffer[18]=0b1111111111111111;
|
|
backBuffer[19]=0b1111111111111111;
|
|
backBuffer[20]=0b1111111111111111;
|
|
backBuffer[21]=0b1111111111111111;
|
|
backBuffer[22]=0b1111111111111111;
|
|
backBuffer[23]=0b1111111111111111;
|
|
backBuffer[24]=0b1111111111111111;
|
|
backBuffer[25]=0b1111111111111111;
|
|
backBuffer[26]=0b1111111111111111;
|
|
backBuffer[27]=0b1111111111111111;
|
|
backBuffer[28]=0b1111111111111111;
|
|
backBuffer[29]=0b1111111111111111;
|
|
backBuffer[30]=0b1111111111111111;
|
|
backBuffer[31]=0b1000000000000001;
|
|
backBuffer[32]=0b1110011010010001;
|
|
backBuffer[33]=0b1000110011111101;
|
|
backBuffer[34]=0b1101001100110101;
|
|
backBuffer[35]=0b1011001000101101;
|
|
backBuffer[36]=0b1101101000000001;
|
|
backBuffer[37]=0b1001000110111001;
|
|
backBuffer[38]=0b1101101011011001;
|
|
backBuffer[39]=0b1011100011100101;
|
|
backBuffer[40]=0b1111001111110101;
|
|
backBuffer[41]=0b1000111010110101;
|
|
backBuffer[42]=0b1110110110011001;
|
|
backBuffer[43]=0b1011100101110001;
|
|
backBuffer[44]=0b1101010101010101;
|
|
backBuffer[45]=0b1111111111111111;
|
|
backBuffer[46]=0b1111111111111111;
|
|
backBuffer[47]=0b1111111111111111;
|
|
backBuffer[48]=0b1111111111111111;
|
|
backBuffer[49]=0b1111111111111111;
|
|
backBuffer[50]=0b1111111111111111;
|
|
backBuffer[51]=0b1111111111111111;
|
|
backBuffer[52]=0b1111111111111111;
|
|
backBuffer[53]=0b1111111111111111;
|
|
backBuffer[54]=0b1111111111111111;
|
|
backBuffer[55]=0b1111111111111111;
|
|
backBuffer[56]=0b1111111111111111;
|
|
backBuffer[57]=0b1111111111111111;
|
|
backBuffer[58]=0b1111111111111111;
|
|
backBuffer[59]=0b1111111111111111;
|
|
backBuffer[60]=0b1111111111111111;
|
|
backBuffer[61]=0b1111111111111111;
|
|
backBuffer[62]=0b1111111111111111;
|
|
backBuffer[63]=0b1111111111111111;
|
|
backBuffer[64]=0b1111111111111111;
|
|
backBuffer[65]=0b1111111111111111;
|
|
backBuffer[66]=0b1111111111111111;
|
|
backBuffer[67]=0b1111111111111111;
|
|
backBuffer[68]=0b1111111111111111;
|
|
backBuffer[69]=0b1111111111111111;
|
|
backBuffer[70]=0b1111111111111111;
|
|
backBuffer[71]=0b1111111111111111;
|
|
backBuffer[72]=0b1111111111111111;
|
|
backBuffer[73]=0b1111111111111111;
|
|
backBuffer[74]=0b1111111111111111;
|
|
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
|
|
void Image::setBuffer_Image6() //13:37
|
|
{
|
|
backBuffer[0]=0b1111111111111111;
|
|
backBuffer[1]=0b1111111111111111;
|
|
backBuffer[2]=0b1111111111111111;
|
|
backBuffer[3]=0b1111111111111111;
|
|
backBuffer[4]=0b1111111111111111;
|
|
backBuffer[5]=0b1111111111111111;
|
|
backBuffer[6]=0b1111111111111111;
|
|
backBuffer[7]=0b1111111111111111;
|
|
backBuffer[8]=0b1111111111111111;
|
|
backBuffer[9]=0b1111111111111111;
|
|
backBuffer[10]=0b1111111111111111;
|
|
backBuffer[11]=0b1111111111111111;
|
|
backBuffer[12]=0b1110011111110011;
|
|
backBuffer[13]=0b1110111111110011;
|
|
backBuffer[14]=0b1100111111110011;
|
|
backBuffer[15]=0b1100000000000011;
|
|
backBuffer[16]=0b1100000000000011;
|
|
backBuffer[17]=0b1100000000000011;
|
|
backBuffer[18]=0b1111111111110011;
|
|
backBuffer[19]=0b1111111111110011;
|
|
backBuffer[20]=0b1111111111111111;
|
|
backBuffer[21]=0b1111111111111111;
|
|
backBuffer[22]=0b1111111111111111;
|
|
backBuffer[23]=0b1111111111110111;
|
|
backBuffer[24]=0b1110111111110111;
|
|
backBuffer[25]=0b1110111111110011;
|
|
backBuffer[26]=0b1100111001110011;
|
|
backBuffer[27]=0b1100111001110011;
|
|
backBuffer[28]=0b1100111001110011;
|
|
backBuffer[29]=0b1110000000000111;
|
|
backBuffer[30]=0b1110000100000111;
|
|
backBuffer[31]=0b1111001110001111;
|
|
backBuffer[32]=0b1111111111111111;
|
|
backBuffer[33]=0b1111111111111111;
|
|
backBuffer[34]=0b1111111111111111;
|
|
backBuffer[35]=0b1111111111111111;
|
|
backBuffer[36]=0b1111100011100011;
|
|
backBuffer[37]=0b1111100011100011;
|
|
backBuffer[38]=0b1111100011100011;
|
|
backBuffer[39]=0b1111111111111111;
|
|
backBuffer[40]=0b1111111111111111;
|
|
backBuffer[41]=0b1111111111111111;
|
|
backBuffer[42]=0b1111111111110111;
|
|
backBuffer[43]=0b1110111111110111;
|
|
backBuffer[44]=0b1110111111110011;
|
|
backBuffer[45]=0b1100111001110011;
|
|
backBuffer[46]=0b1100111001110011;
|
|
backBuffer[47]=0b1100111001110011;
|
|
backBuffer[48]=0b1110000000000111;
|
|
backBuffer[49]=0b1110000100000111;
|
|
backBuffer[50]=0b1111001110001111;
|
|
backBuffer[51]=0b1111111111111111;
|
|
backBuffer[52]=0b1111111111111111;
|
|
backBuffer[53]=0b1111111111111111;
|
|
backBuffer[54]=0b1100111111111111;
|
|
backBuffer[55]=0b1100111111111111;
|
|
backBuffer[56]=0b1100111111111011;
|
|
backBuffer[57]=0b1100111111000011;
|
|
backBuffer[58]=0b1100111100000011;
|
|
backBuffer[59]=0b1100110000001111;
|
|
backBuffer[60]=0b1100000001111111;
|
|
backBuffer[61]=0b1100000111111111;
|
|
backBuffer[62]=0b1100011111111111;
|
|
backBuffer[63]=0b1111111111111111;
|
|
backBuffer[64]=0b1111111111111111;
|
|
backBuffer[65]=0b1111111111111111;
|
|
backBuffer[66]=0b1111111111111111;
|
|
backBuffer[67]=0b1111111111111111;
|
|
backBuffer[68]=0b1111111111111111;
|
|
backBuffer[69]=0b1111111111111111;
|
|
backBuffer[70]=0b1111111111111111;
|
|
backBuffer[71]=0b1111111111111111;
|
|
backBuffer[72]=0b1111111111111111;
|
|
backBuffer[73]=0b1111111111111111;
|
|
backBuffer[74]=0b1111111111111111;
|
|
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
void Image::setBuffer_Image7() //13:59
|
|
{
|
|
backBuffer[0]=0b1111111111111111;
|
|
backBuffer[1]=0b1111111111111111;
|
|
backBuffer[2]=0b1111111111111111;
|
|
backBuffer[3]=0b1111111111111111;
|
|
backBuffer[4]=0b1111111111111111;
|
|
backBuffer[5]=0b1111111111111111;
|
|
backBuffer[6]=0b1111111111111111;
|
|
backBuffer[7]=0b1111111111111111;
|
|
backBuffer[8]=0b1111111111111111;
|
|
backBuffer[9]=0b1111111111111111;
|
|
backBuffer[10]=0b1111111111111111;
|
|
backBuffer[11]=0b1111111111111111;
|
|
backBuffer[12]=0b1110011111110011;
|
|
backBuffer[13]=0b1110111111110011;
|
|
backBuffer[14]=0b1100111111110011;
|
|
backBuffer[15]=0b1100000000000011;
|
|
backBuffer[16]=0b1100000000000011;
|
|
backBuffer[17]=0b1100000000000011;
|
|
backBuffer[18]=0b1111111111110011;
|
|
backBuffer[19]=0b1111111111110011;
|
|
backBuffer[20]=0b1111111111111111;
|
|
backBuffer[21]=0b1111111111111111;
|
|
backBuffer[22]=0b1111111111111111;
|
|
backBuffer[23]=0b1111111111110111;
|
|
backBuffer[24]=0b1110111111110111;
|
|
backBuffer[25]=0b1110111111110011;
|
|
backBuffer[26]=0b1100111001110011;
|
|
backBuffer[27]=0b1100111001110011;
|
|
backBuffer[28]=0b1100111001110011;
|
|
backBuffer[29]=0b1110000000000111;
|
|
backBuffer[30]=0b1110000100000111;
|
|
backBuffer[31]=0b1111001110001111;
|
|
backBuffer[32]=0b1111111111111111;
|
|
backBuffer[33]=0b1111111111111111;
|
|
backBuffer[34]=0b1111111111111111;
|
|
backBuffer[35]=0b1111111111111111;
|
|
backBuffer[36]=0b1111100011100011;
|
|
backBuffer[37]=0b1111100011100011;
|
|
backBuffer[38]=0b1111100011100011;
|
|
backBuffer[39]=0b1111111111111111;
|
|
backBuffer[40]=0b1111111111111111;
|
|
backBuffer[41]=0b1111111111111111;
|
|
backBuffer[42]=0b1111111111111111;
|
|
backBuffer[43]=0b1100000011110111;
|
|
backBuffer[44]=0b1100000011110111;
|
|
backBuffer[45]=0b1100110011110011;
|
|
backBuffer[46]=0b1100110011110011;
|
|
backBuffer[47]=0b1100110011110011;
|
|
backBuffer[48]=0b1100110001100111;
|
|
backBuffer[49]=0b1100111000000111;
|
|
backBuffer[50]=0b1111111100001111;
|
|
backBuffer[51]=0b1111111111111111;
|
|
backBuffer[52]=0b1111111111111111;
|
|
backBuffer[53]=0b1111111111111111;
|
|
backBuffer[54]=0b1111100011111111;
|
|
backBuffer[55]=0b1110000001110111;
|
|
backBuffer[56]=0b1110000001110111;
|
|
backBuffer[57]=0b1100111100110011;
|
|
backBuffer[58]=0b1100111100110011;
|
|
backBuffer[59]=0b1100111101110011;
|
|
backBuffer[60]=0b1110011001100111;
|
|
backBuffer[61]=0b1110000000000111;
|
|
backBuffer[62]=0b1111000000001111;
|
|
backBuffer[63]=0b1111111111111111;
|
|
backBuffer[64]=0b1111111111111111;
|
|
backBuffer[65]=0b1111111111111111;
|
|
backBuffer[66]=0b1111111111111111;
|
|
backBuffer[67]=0b1111111111111111;
|
|
backBuffer[68]=0b1111111111111111;
|
|
backBuffer[69]=0b1111111111111111;
|
|
backBuffer[70]=0b1111111111111111;
|
|
backBuffer[71]=0b1111111111111111;
|
|
backBuffer[72]=0b1111111111111111;
|
|
backBuffer[73]=0b1111111111111111;
|
|
backBuffer[74]=0b1111111111111111;
|
|
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
void Image::setBuffer_Image8() //14:00
|
|
{
|
|
backBuffer[0]=0b1111111111111111;
|
|
backBuffer[1]=0b1111111111111111;
|
|
backBuffer[2]=0b1111111111111111;
|
|
backBuffer[3]=0b1111111111111111;
|
|
backBuffer[4]=0b1111111111111111;
|
|
backBuffer[5]=0b1111111111111111;
|
|
backBuffer[6]=0b1111111111111111;
|
|
backBuffer[7]=0b1111111111111111;
|
|
backBuffer[8]=0b1111111111111111;
|
|
backBuffer[9]=0b1111111111111111;
|
|
backBuffer[10]=0b1111111111111111;
|
|
backBuffer[11]=0b1111111111111111;
|
|
backBuffer[12]=0b1110011111110011;
|
|
backBuffer[13]=0b1110111111110011;
|
|
backBuffer[14]=0b1100111111110011;
|
|
backBuffer[15]=0b1100000000000011;
|
|
backBuffer[16]=0b1100000000000011;
|
|
backBuffer[17]=0b1100000000000011;
|
|
backBuffer[18]=0b1111111111110011;
|
|
backBuffer[19]=0b1111111111110011;
|
|
backBuffer[20]=0b1111111111111111;
|
|
backBuffer[21]=0b1111111111111111;
|
|
backBuffer[22]=0b1111111111111111;
|
|
backBuffer[23]=0b1111111100011111;
|
|
backBuffer[24]=0b1111111000011111;
|
|
backBuffer[25]=0b1111100010011111;
|
|
backBuffer[26]=0b1111001110011111;
|
|
backBuffer[27]=0b1110011110011111;
|
|
backBuffer[28]=0b1100011110011111;
|
|
backBuffer[29]=0b1100000000000011;
|
|
backBuffer[30]=0b1100000000000011;
|
|
backBuffer[31]=0b1111111110011111;
|
|
backBuffer[32]=0b1111111110011111;
|
|
backBuffer[33]=0b1111111111111111;
|
|
backBuffer[34]=0b1111111111111111;
|
|
backBuffer[35]=0b1111111111111111;
|
|
backBuffer[36]=0b1111100011100011;
|
|
backBuffer[37]=0b1111100011100011;
|
|
backBuffer[38]=0b1111100011100011;
|
|
backBuffer[39]=0b1111111111111111;
|
|
backBuffer[40]=0b1111111111111111;
|
|
backBuffer[41]=0b1111111111111111;
|
|
backBuffer[42]=0b1111100000011111;
|
|
backBuffer[43]=0b1111000000001111;
|
|
backBuffer[44]=0b1110000000000111;
|
|
backBuffer[45]=0b1100111111110011;
|
|
backBuffer[46]=0b1100111111110011;
|
|
backBuffer[47]=0b1100111111110011;
|
|
backBuffer[48]=0b1110011111100111;
|
|
backBuffer[49]=0b1110000000000111;
|
|
backBuffer[50]=0b1111000000001111;
|
|
backBuffer[51]=0b1111110000111111;
|
|
backBuffer[52]=0b1111111111111111;
|
|
backBuffer[53]=0b1111111111111111;
|
|
backBuffer[54]=0b1111100000011111;
|
|
backBuffer[55]=0b1111000000001111;
|
|
backBuffer[56]=0b1110000000000111;
|
|
backBuffer[57]=0b1100111111110011;
|
|
backBuffer[58]=0b1100111111110011;
|
|
backBuffer[59]=0b1100111111110011;
|
|
backBuffer[60]=0b1110011111100111;
|
|
backBuffer[61]=0b1110000000000111;
|
|
backBuffer[62]=0b1111000000001111;
|
|
backBuffer[63]=0b1111110000111111;
|
|
backBuffer[64]=0b1111111111111111;
|
|
backBuffer[65]=0b1111111111111111;
|
|
backBuffer[66]=0b1111111111111111;
|
|
backBuffer[67]=0b1111111111111111;
|
|
backBuffer[68]=0b1111111111111111;
|
|
backBuffer[69]=0b1111111111111111;
|
|
backBuffer[70]=0b1111111111111111;
|
|
backBuffer[71]=0b1111111111111111;
|
|
backBuffer[72]=0b1111111111111111;
|
|
backBuffer[73]=0b1111111111111111;
|
|
backBuffer[74]=0b1111111111111111;
|
|
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
void Image::setBufferColumn(uint8_t _colnum, uint16_t _rowdata)
|
|
{
|
|
if (_colnum>=COLUMNS) {
|
|
Serial.println("colnum too high");
|
|
}else{
|
|
backBuffer[_colnum]=_rowdata; //all white
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
}
|
|
|
|
void Image::setBuffer_random(uint8_t brightness)
|
|
{
|
|
for (uint8_t x=0;x<getW();x++) {
|
|
uint16_t randomnumber=0;
|
|
for (uint8_t y=0;y<getH();y++) {
|
|
if (random(256)<brightness) { //the higher the parameter the more white
|
|
randomnumber+=pow(2, y);
|
|
}
|
|
}
|
|
backBuffer[x]=randomnumber;
|
|
//backBuffer[x]=(uint16_t)random(0x10000);
|
|
}
|
|
|
|
flag_updating=true; //make update run
|
|
|
|
}
|
|
|
|
|
|
void Image::setBuffer_byString(String data,String& error)
|
|
{
|
|
//first check size
|
|
if (data.length()!=getW()*getH()) { //if characters matches pixels then its likely binary
|
|
error="setBuffer_byString: size mismatch";
|
|
}
|
|
|
|
for (uint8_t x=0;x<getW();x++) {
|
|
uint16_t columnnumber=0;
|
|
for (uint8_t y=0;y<getH();y++) {
|
|
char currentChar = data.charAt(x*getH()+y);
|
|
if (currentChar!='0' && currentChar!=' ' && currentChar!='_') { //0, Space or "_" are black pixels.
|
|
columnnumber+=pow(2, y); //if not one of the above, then make white
|
|
}
|
|
}
|
|
backBuffer[x]=columnnumber;
|
|
}
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
void Image::setBuffer_byInt(String data,String& error)
|
|
{
|
|
int str_len = data.length() + 1;
|
|
char char_array[str_len];
|
|
data.toCharArray(char_array, str_len);
|
|
|
|
char *token = strtok(char_array, ",");
|
|
|
|
uint8_t x=0;
|
|
while (token != NULL && x<getW()) {
|
|
String tokenString(token);
|
|
|
|
uint16_t tokenInt=tokenString.toInt();
|
|
|
|
backBuffer[x]=tokenInt;
|
|
|
|
token = strtok(NULL, ","); //get next token
|
|
x++;
|
|
}
|
|
if (x!=getW()) { //x reached exaclty the end
|
|
Serial.println("Warning: Not Enough Data!");
|
|
error="setBuffer_byInt: not enough data. x="+x;
|
|
}
|
|
if (token!= NULL) { //exited loop but there was another valid token
|
|
Serial.println("Warning: too much data");
|
|
error="setBuffer_byInt: too much data";
|
|
}
|
|
|
|
flag_updating=true; //make update run
|
|
}
|
|
|
|
|
|
void Image::resetOrder(bool ascending) {
|
|
for (uint8_t i=0;i<getW();i++) { //fill with ascending numbers
|
|
if (ascending) {
|
|
orderArray[i]=i;
|
|
}else{
|
|
orderArray[i]=(getW()-1) - i;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Image::shuffleOrder(uint8_t iterations) {
|
|
|
|
|
|
for (uint8_t s=0;s<iterations;s++) { //shuffle iterations
|
|
uint8_t _r1=random(getW());
|
|
uint8_t _r2=random(getW());
|
|
uint8_t _backup=orderArray[_r1];
|
|
//swap numbers
|
|
orderArray[_r1]=orderArray[_r2];
|
|
orderArray[_r2]=_backup;
|
|
}
|
|
|
|
for (uint8_t i=0;i<getW();i++) { //fill with ascending numbers
|
|
Serial.print(orderArray[i]); Serial.print(" ");
|
|
}
|
|
Serial.println();
|
|
}
|
|
|
|
UpdateReturn Image::updateByColumn(bool clearFirst, bool optimizeClear, bool optimizeSet)
|
|
{
|
|
/*
|
|
clearFirst : if True, go through all columns and clear them (by set order). Then go through same order and set dots.
|
|
optimizeClear : if True, do not clear columns where dots need to be set or no change is happening. if False, clear every column
|
|
optimizeSet : if True, do not set already set dots again.
|
|
*/
|
|
|
|
if (!flag_updating) {
|
|
return nochange; //finished
|
|
}
|
|
|
|
if (millis()-lastUpdateMillis<updateDelay){ //too early
|
|
return wait; //not finished
|
|
}
|
|
|
|
unsigned long functionStartMillis=millis();
|
|
|
|
|
|
uint8_t x=update_counter/2;
|
|
bool setDot = (update_counter%2==1);
|
|
|
|
if (clearFirst) {
|
|
x=update_counter%getW();
|
|
setDot = !(update_counter/getW() == 0);
|
|
}
|
|
|
|
x = orderArray[x]; //use custom order
|
|
|
|
if (!setDot) { //even counter numbers are for clearing
|
|
uint16_t _colClear=frontBuffer[x]& ~backBuffer[x]; //Front & ~Back = Which bits have to be cleared
|
|
|
|
if (!optimizeClear || _colClear>0) { //at least on dot has to be cleared in this column
|
|
flipdot.setRow(0);
|
|
flipdot.selectColumnClear(x);
|
|
|
|
if (!flipdot.clearSelectedColumn()) {
|
|
Serial.println("Error clearing column!");
|
|
}
|
|
lastUpdateMillis=millis();
|
|
frontBuffer[x]=0;
|
|
}
|
|
|
|
}else{ //odd counter numbers are for setting
|
|
uint16_t _colSet=backBuffer[x]& ~frontBuffer[x];
|
|
if (!optimizeSet || _colSet>0) { //at least on dot has to be set in this column (if optimize is enabled)
|
|
flipdot.selectColumnSet(x); //lower column number is on the left
|
|
if (!optimizeSet) {
|
|
flipdot.setRow(backBuffer[x]); //flip all set dots in this column
|
|
}else{
|
|
flipdot.setRow(_colSet); //flip only currently not set dots in this column that have to be set
|
|
}
|
|
|
|
if (!flipdot.setSelectedDot()) {
|
|
Serial.println("Error setting dots!");
|
|
}
|
|
lastUpdateMillis=millis();
|
|
|
|
frontBuffer[x]=backBuffer[x]; //flip current column in buffer
|
|
}
|
|
}
|
|
|
|
update_counter++; //next column
|
|
|
|
unsigned long _duration=millis()-functionStartMillis; //how long it took to shift data and flip dots in this update
|
|
updateDuration=max(updateDuration,_duration); //store maximum value
|
|
|
|
|
|
if (update_counter/2>=getW()) { //reached last column
|
|
flag_updating=false;
|
|
update_counter=0;
|
|
return finished; //finished
|
|
}
|
|
return updating; //not finished
|
|
}
|
|
|
|
|
|
void Image::loop_testDots() {
|
|
|
|
static bool init=false;
|
|
if (!init) {
|
|
flipdot.setRow(0);
|
|
Serial.println("Clearing Display");
|
|
for (int l=0;l<COLUMNS;l++) {
|
|
flipdot.selectColumnClear(l%COLUMNS);
|
|
|
|
|
|
if (!flipdot.clearSelectedColumn()) {
|
|
Serial.println("Error clearing column!");
|
|
}else{
|
|
Serial.println("Cleared");
|
|
}
|
|
|
|
delay(50);
|
|
}
|
|
init=true;
|
|
Serial.println("Finished Clearing");
|
|
delay(1000);
|
|
}
|
|
|
|
|
|
|
|
|
|
Serial.println("Clearing");
|
|
flipdot.setRow(0);
|
|
flipdot.selectColumnClear(23);
|
|
if (!flipdot.clearSelectedColumn()) {
|
|
Serial.println("Error clearing column!");
|
|
}
|
|
delay(50);
|
|
|
|
flipdot.setRow(0);
|
|
flipdot.selectColumnClear(24);
|
|
if (!flipdot.clearSelectedColumn()) {
|
|
Serial.println("Error clearing column!");
|
|
}
|
|
delay(100);
|
|
|
|
|
|
Serial.println("Setting");
|
|
for (int i=23;i<25;i++) {
|
|
flipdot.selectColumnSet(i); //lower column number is on the left
|
|
|
|
flipdot.setRow(0);
|
|
flipdot.setRow(flipdot.getRow()+pow(2, 4));//low significant bits are lower rows (when connector at top)
|
|
flipdot.setRow(flipdot.getRow()+pow(2, 5));//low significant bits are lower rows (when connector at top)
|
|
flipdot.setSelectedDot();
|
|
delay(50);
|
|
}
|
|
|
|
delay(100);
|
|
|
|
countz++;
|
|
countz%=14;
|
|
|
|
//init=false;
|
|
}
|
|
|
|
|
|
void Image::loop_drawClearTest() {
|
|
|
|
static bool init=false;
|
|
if (!init) {
|
|
flipdot.setRow(0);
|
|
Serial.println("Clearing Display");
|
|
for (int l=0;l<COLUMNS;l++) {
|
|
flipdot.selectColumnClear(l%COLUMNS);
|
|
|
|
if (!flipdot.clearSelectedColumn()) {
|
|
Serial.println("Error clearing column!");
|
|
}else{
|
|
Serial.println("Cleared");
|
|
}
|
|
|
|
delay(20);
|
|
}
|
|
init=true;
|
|
delay(1000);
|
|
}
|
|
|
|
|
|
|
|
|
|
Serial.print("count=");
|
|
Serial.print(countz);Serial.print(": ");
|
|
|
|
//setting colX to 128, 32, 8,2 (or a combination of), then appling 12V to driver and GND to Clear, clears these colums
|
|
// this applies +12v to selected columns
|
|
//setting colX to 64,16,4,1 (or a combination of), then setting row shift registers to some setting sets the selected dots
|
|
// this applies GND to selected columns
|
|
//reset pin on annax board input should be used (not pulled to gnd for a short time) after dots have been flipped (to disable potentially activated transistors)
|
|
|
|
|
|
//cycle testing set dots
|
|
flipdot.selectColumnSet(countz/ROWS); //lower column number is on the left
|
|
flipdot.setRow(pow(2, (countz)%ROWS));//low significant bits are lower rows (when connector at top)
|
|
|
|
|
|
|
|
|
|
/*Serial.print("Row="); Serial.print(row); Serial.print(" Col=");
|
|
for (uint8_t i=0;i<7;i++) {
|
|
Serial.print(","); Serial.print(col[i]);
|
|
}
|
|
Serial.println();*/
|
|
//reset pin on ribbon cable high (12Vpullup/open), then low (via Transistor)
|
|
|
|
unsigned long starttime=micros();
|
|
|
|
flipdot.setSelectedDot();
|
|
|
|
|
|
unsigned long shiftduration=micros()-starttime;
|
|
Serial.println("");
|
|
Serial.print("Duration="); Serial.println(shiftduration);
|
|
|
|
|
|
|
|
countz++;
|
|
|
|
if (countz>=ROWS*COLUMNS) {
|
|
countz=0;
|
|
init=false;
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|