const int SSPin = 4;
const int SCKPin = 2;
const int MISOPin = 32;
const int MOSIPin = 3;
byte slaveData = 0; // for storing the value sent by the slave
int mydots[8][8];
int r=0;
int m=0;
int e=1;// e togels dsplayed type |/|=1 or|||||||=0
int s=1;
float doth=0;
float dotd=0;
float dot=0;
void setup()
{
Serial.begin(9600);
if(e==1){
for(int t=0;t<8;t++){
for(int y=0;y<8;y++){
mydots[t][y]=s;
s=s*2;
}
s=1;
}
}
pinMode(SCKPin,OUTPUT);
pinMode(MOSIPin,OUTPUT);
pinMode(SSPin,OUTPUT);
pinMode(MISOPin,INPUT);
chip_int();
}
void loop()
{
if(e==1){
for(int g=1;g<65;g=g+7){
//Serial.println(g);
arrayRead2(g);}
}
else{
oddColms();
evenColms();
}
}
float arrayRead2( float dot)
{
if(int(dot) % 8 !=0) //set the collum number
doth=dot/8; // set the collum number
else doth=dot/9; // set the collum number
dotd=(int(dot-1) % 8);//set the data to send from the mydot array
bitBangData(doth+1); // collum number
//Serial.println(doth+1);
// if(doth+1>=8||doth+1<2){
// bitBangData(255);
//}
//else
{
slaveData=bitBangData(mydots[int(doth)][int(dotd) ]); }//row data
digitalWrite(SSPin,HIGH);
digitalWrite(SSPin,LOW);// data t
delay(100);
if(doth+1<8 && doth+1>2);{
bitBangData(doth+1); //clear the dot
bitBangData(0);
digitalWrite(SSPin,HIGH);
digitalWrite(SSPin,LOW);// data t
//delay(100); //if on blinks led
//digitalWrite(SSPin,HIGH);
}
}
void evenColms()
{
int u=128;
int e=128;
for(int w=0;w<8;w++){
mydots[m][1]=u;//u=trail e=no trail
e=e/2;
u=u+e;
arrayRead();
mydots[m][1]=256;//256
delay(75);
}
//mydots[r][0]=0;
m=m+2;
if (m>7){
m=1;
}
}
void oddColms()
{
int z=1;
for(int w=0;w<8;w++){
mydots[r][1]=z;
z=(z*2+1);//+1=trail
arrayRead();
mydots[r][1]=256;//256
delay(75);
}
//mydots[r][1]=256;
r=r+2;
if (r>7){
r=0;
}
}
void arrayRead()
{
int val=0;
//int bitcnt=8;
for(int i=0;i<8;i++) {
for(int x=0;x<8;x++){
val=mydots[i][x];
if(val!=0 ){ //val!=0 val>0 && val<256
digitalWrite(SSPin,LOW);//Turn on the chip, cip slect
bitBangData(i+1); // data transmission removed slaveData = and +1
slaveData=bitBangData(mydots[i][x]); // data transmission
}
digitalWrite(SSPin,HIGH); //Turn off the chip, cip slect
}
}
}
byte bitBangData(byte _send) // This function transmit the data via bitbanging
{
byte _receive = 0;
int bitcnt=8;
//digitalWrite(SSPin,HIGH);
for(int i=0; i<8; i++) // 8 bits in a byte
{
bitcnt--;
digitalWrite(MOSIPin, bitRead(_send, bitcnt)); // Set MOSI colloum # first then row data _send
digitalWrite(SCKPin, HIGH); // SCK high
bitWrite(_receive, bitcnt, digitalRead(MISOPin)); // Capture MISO
digitalWrite(SCKPin, LOW); // SCK low
}
return _receive; // Return the received data
}
void chip_int(){
bitBangData(11); // data transmission
bitBangData(7); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(9); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(12); // data transmission
bitBangData(1); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(15); // data transmission
bitBangData(0); // data transmission}
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(1); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(2); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(3); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(4); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(5); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(6); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(7); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(8); // data transmission
bitBangData(0); // data transmission
digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(10); // data transmission
bitBangData(4); // data transmission
}