关于2台arduino 主机通过i2c接收从机连接多个压力FSR406信号的问题
我用了2块arduino 一块做主机 一块做从机,从机上连接了6个FSR406传感器,想通过i2c方式传给主机但主机接受到的信号只有从机里6个FSR406中一个,如何更改能达到全部都接收,请帮帮忙看看,现在我把主机和从机的程序都写上。
连线大致是这个样子
这个是主机的:
#include <Wire.h>
char c;
void setup()
{
Serial.begin(9600);
Wire.begin();
delay(1000);
}
void loop()
{
Wire.requestFrom(2, 7);
while(Wire.available())
{
for(int i=0;i<7;i++){
c = Wire.read();
}
c = '\0';
Serial.println(c);
}
delay(500);
}
这个是从机的
#include <Wire.h>
int i =0;
int a =0;
int b =0;
int c =0;
int d =0;
int e =0;
int f =0;
void setup()
{
Serial.begin(9600);
Wire.begin(2);
Wire.onRequest(requestEvent);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
}
void loop()
{
delay(100);
}
void requestEvent()
{
a =analogRead(A0);
Serial.print(A0);
Serial.print(",");
if (a > 500){
Wire.write("S1_A0=0");
}
else{
Wire.write("S1_A0=1");
}
b =analogRead(A1);
Serial.print(A1);
Serial.print(",");
if (b > 500){
Wire.write("S1_A1=0");
}
else{
Wire.write("S1_A1=1");
}
c = digitalRead(2);
Serial.print(c);
Serial.print(",");
if (c == 1){
Wire.write("S1_D2=0");
}
else{
Wire.write("S1_D2=1");
}
d = digitalRead(3);
Serial.print(d);
Serial.println(",");
if (d == 1){
Wire.write("S1_D3=0");
}
else{
Wire.write("S1_D3=1");
e = digitalRead(4);
Serial.print(d);
Serial.println(",");
if (e == 1){
Wire.write("S1_D4=0");
}
else{
Wire.write("S1_D4=1");
}
f = digitalRead(5);
Serial.print(d);
Serial.println(",");
if (f == 1){
Wire.write("S1_D5=0");
}
else{
Wire.write("S1_D5=1");
}
}
}
难道真的是我写的程序的乱搞的吗:L:L:L:L:L 只想一个主机通过无线,控制多个从机,有哪种无线模块可以使用??? 把delay(500)拿掉试试?
你主机停止的时候,从机会继续发送数据。
delay导致后面的数据丢失? 学慧放弃 发表于 2014-1-20 19:42 static/image/common/back.gif
只想一个主机通过无线,控制多个从机,有哪种无线模块可以使用???
nrf24l01可以通过更换地址来对不同从机进行操作。 [email protected] 发表于 2014-1-21 19:23 static/image/common/back.gif
把delay(500)拿掉试试?
你主机停止的时候,从机会继续发送数据。
delay导致后面的数据丢失?
好的 我去试试 学慧放弃 发表于 2014-1-20 19:42 static/image/common/back.gif
只想一个主机通过无线,控制多个从机,有哪种无线模块可以使用???
我刚接触arduino没多久 无线还没怎么接触过 [email protected] 发表于 2014-1-21 19:23 static/image/common/back.gif
把delay(500)拿掉试试?
你主机停止的时候,从机会继续发送数据。
delay导致后面的数据丢失?
master 那边的delay(500)拿掉后 试验结果还是那样 主机接收的数据只有最后的”S1_D5=0“ 用的是那一版本的Arduino IDE?以下這段能成功編譯嗎?
char c;
......
......
{
for(int i=0;i<7;i++){
c = Wire.read();
}
eddiewwm 发表于 2014-1-22 20:52 static/image/common/back.gif
用的是那一版本的Arduino IDE?以下這段能成功編譯嗎?
char c;
Arduino 1.0.5-r2
检测的时候没出现问题,显示的结果也和想的一样~ 问题已解决,谢谢各位:D 能用一个arduino测4个压力吗 baishan07 发表于 2014-2-1 15:42 static/image/common/back.gif
问题已解决,谢谢各位
请楼主不要私藏,分享解决方法。让我等小白学习一下
页:
[1]