极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15748|回复: 1

Processing 控制 8x8 点阵

[复制链接]
发表于 2019-4-4 20:20:47 | 显示全部楼层 |阅读模式
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点)总是不对,有没高手能找出问题所在?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2019-4-4 20:58:22 | 显示全部楼层



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 01:07 , Processed in 0.045438 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表