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 s=1;
float doth=0;
float dotd=0;
float dot=0;
void setup()
{
Serial.begin(9600);
for(int t=0;t<8;t++){
for(int y=0;y<8;y++){
mydots[t][y]=s;
/* Serial.print(t);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.println(mydots[t][y]);
*/
s=s*2;
}
s=1;
}
pinMode(SCKPin,OUTPUT);
pinMode(MOSIPin,OUTPUT);
pinMode(SSPin,OUTPUT);
pinMode(MISOPin,INPUT);
//digitalWrite(SSPin, HIGH);
//delayMicroseconds(6);
//digitalWrite(SSPin, LOW);
chip_int();
//digitalWrite(SSPin, HIGH);
}
void loop()
{
oddColms();
evenColms();
//for(int g=1;g<65;g=g+7)
//arrayRead2(g);
//arrayRead2(g+1);}
}
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
//Serial.println( int(doth+1));
//Serial.println(int(dotd));
bitBangData(doth+1); // collum number
slaveData=bitBangData(mydots[int(doth)][int(dotd) ]); //row data
digitalWrite(SSPin,HIGH);
digitalWrite(SSPin,LOW);// data t
delay(100);
bitBangData(doth+1); //clear the dot
bitBangData(0);
digitalWrite(SSPin,HIGH);
digitalWrite(SSPin,LOW);// data t
//delay(100);
}
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;
//Serial.print("data sent= ");
//Serial.println(mydots[m][1]);
arrayRead();
mydots[m][1]=256;//256
delay(75);
}
//mydots[r][0]=0;
m=m+2;
if (m>7){
m=1;
}
// Serial.println(m);
}
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;
}
//Serial.println(r);
}
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){
//digitalWrite(SSPin,HIGH);
delayMicroseconds(3);
digitalWrite(SSPin,LOW);
bitBangData(i+1); // data transmission removed slaveData = and +1
slaveData=bitBangData(mydots[i][x]); // data transmission
//Serial.println(slaveData);
}
digitalWrite(SSPin,HIGH);
}
}
}
byte bitBangData(byte _send) // This function transmit the data via bitbanging
{
// Serial.print("send= ");
// Serial.println( _send);
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
}
//Serial.print(" receive= ");
//Serial.println(_receive);
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
}