【求助】如何读取图片中的数据
手头上有一块数显百分表,想用Ardunio将其数据读取出来,但研究了半天,不知道该怎么去写读取程序,也试下了,发现读取不了,现将数据格式和时顺图发出来给各位看看。这是我的程序,个人觉得不对,但不知道如何修改。int data = 0;
int ck = 3;
int req = 4;
void setup() {
pinMode (2,INPUT);
pinMode (ck,OUTPUT);
pinMode (req,OUTPUT);
Serial.begin(9600);
digitalWrite(ck,HIGH);
}
void loop() {
digitalWrite(req,LOW);
delay(10);
for(int x = 0;x<52;x++){
digitalWrite(req,HIGH);
digitalWrite(ck,LOW);
data = +digitalRead(2);
digitalWrite(ck,HIGH);
}
Serial.print("DATA=");
Serial.println (data,BIN);
delay(1000);
}
个人理解:是否需要用SPI或I2C总线方式读取?另外就是一个位一个位地读取并转换,如先读取d1并转换存入data,再读取d2并转换,存入data+,依次类推,是否可行,该如何做? 这是图片 他CK是output的,你要在他时钟信号上升沿的时候读data,然后移位进自己的变量里,而不是你给他时钟信号。 用spi的话,你的spi要作为slave模式。 pathletboy 发表于 2013-12-15 17:33 static/image/common/back.gif
用spi的话,你的spi要作为slave模式。
哦,这样啊,我还以为是需要我给时钟信号,我再试试,非常感谢! pathletboy 发表于 2013-12-15 17:33 static/image/common/back.gif
用spi的话,你的spi要作为slave模式。
经您这一提,我发现其输入输出口还不能直接连接Arduino板子,需要用CMOS和中间电路转换,唉,看来很麻烦,手头上也没这样的东西,看来得找到东西才能再试了。 coms无关,只要两边工作电压一致就可以了。从图上看这个设备是数据输出,单片可以做被动输入,也即在收到req后每次时钟变化一次读一位数,连续4个字节全1为数据包开始,第五字节为符号位,6-11字节为数值,第12字节为小数数值,13字节显示单位 林定祥 发表于 2013-12-16 14:27 static/image/common/back.gif
coms无关,只要两边工作电压一致就可以了。从图上看这个设备是数据输出,单片可以做被动输入,也即在收到re ...
在接口定义边上有INPUT和OUTPUT的输入输出电路方式,INPUT为一个跟随器加1.55V和55K-22K的电阻,OUTPUT端为-0.3-+7V外加一个CMOS管组成的,其中DATA和CK为OUTPUT,REQ非为INPUT,从这情况来看,电压基本上还在Ardunio板之内,但我试着接了线和修改程序后还是无法读出。另数据格式这里:D1为四位二进制即0000-1111,其他也一样,即为一个十六进制数,而我们能读取出来的数应该是二进制一个一个地读取的,直接读取一个十六进制数应该是不行的,除非用串口或SPI和I2C总线方式。试过用串口RX和TX读取,也无法读出。而SPI和I2C现在我还不知道怎么用,没试过,正在研究中…… 建议clk接中断脚,req给出低电平后,开启终端,clk下降触发中断,然后读数,再次中断再读数,以此循环。 这是iic通信 准备哪天去找个逻辑分析仪来测下波形再来弄了。
页:
[1]