Processing 控制 8x8 点阵
在上位机上画出 8x8 点阵的图案,发送到Arduino 显示. 数字信号就是 1111000011110000.......(共64位) )连续一次发送到串口.
Arduino 代码
int R[] = {2,7,A5,5,13,A4,12,A2}; //行
int C[] = {6,11,10,3,A3,4,8,9}; //列
char command;
int mark = 0;
int numdata[8][8];
int data;
char xh;
void setup(){
Serial.begin(9600);
for(int i = 0;i<8;i++){
pinMode(R,OUTPUT);
pinMode(C,OUTPUT);
}
for(int i = 0;i<8;i++){
for(int j = 0;j<8;j++){
numdata[j]=0;
}
}
}
void loop(){
recv_data();
updateServo();
}
void recv_data(){
while(Serial.available()){
for(int i=0;i<8;i++){
numdata[0]=Serial.read();
delay(10);
numdata[1]=Serial.read();
delay(10);
numdata[2]=Serial.read();
delay(10);
numdata[3]=Serial.read();
delay(10);
numdata[4]=Serial.read();
delay(10);
numdata[5]=Serial.read();
delay(10);
numdata[6]=Serial.read();
delay(10);
numdata[7]=Serial.read();
}
delay(10);
}
mark = 1;
}
void updateServo(){
if(mark == 1){
for(int i = 0 ; i < 100 ; i++) {
for(int c = 0; c< 8;c++){
digitalWrite(C[c],LOW);//选通第c列
for(int r = 0;r< 8;r++){
digitalWrite(R[r],numdata[r][c]);
}
delay(1);
Clear(); //清空显示去除余晖
}
}
mark == 0;
}
}
void Clear(){
for(int i = 0;i<8;i++){
digitalWrite(R,LOW);
digitalWrite(C,HIGH);
}
}
问题:8x8点阵最后一个点(64点)总是不对,有没高手能找出问题所在?
|