baishan07 发表于 2014-1-20 05:46:42

关于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");
    }
}
}




baishan07 发表于 2014-1-20 19:00:35

难道真的是我写的程序的乱搞的吗:L:L:L:L:L

学慧放弃 发表于 2014-1-20 19:42:32

只想一个主机通过无线,控制多个从机,有哪种无线模块可以使用???

[email protected] 发表于 2014-1-21 19:23:01

把delay(500)拿掉试试?
你主机停止的时候,从机会继续发送数据。
delay导致后面的数据丢失?

[email protected] 发表于 2014-1-21 19:25:11

学慧放弃 发表于 2014-1-20 19:42 static/image/common/back.gif
只想一个主机通过无线,控制多个从机,有哪种无线模块可以使用???

nrf24l01可以通过更换地址来对不同从机进行操作。

baishan07 发表于 2014-1-22 07:38:17

[email protected] 发表于 2014-1-21 19:23 static/image/common/back.gif
把delay(500)拿掉试试?
你主机停止的时候,从机会继续发送数据。
delay导致后面的数据丢失?

好的 我去试试

baishan07 发表于 2014-1-22 07:49:42

学慧放弃 发表于 2014-1-20 19:42 static/image/common/back.gif
只想一个主机通过无线,控制多个从机,有哪种无线模块可以使用???

我刚接触arduino没多久 无线还没怎么接触过

baishan07 发表于 2014-1-22 07:52:30

[email protected] 发表于 2014-1-21 19:23 static/image/common/back.gif
把delay(500)拿掉试试?
你主机停止的时候,从机会继续发送数据。
delay导致后面的数据丢失?

master 那边的delay(500)拿掉后 试验结果还是那样 主机接收的数据只有最后的”S1_D5=0“

eddiewwm 发表于 2014-1-22 20:52:32

用的是那一版本的Arduino IDE?以下這段能成功編譯嗎?

char c;
......
......
{
    for(int i=0;i<7;i++){
      c = Wire.read();
    }

baishan07 发表于 2014-1-25 16:01:58

eddiewwm 发表于 2014-1-22 20:52 static/image/common/back.gif
用的是那一版本的Arduino IDE?以下這段能成功編譯嗎?

char c;


Arduino 1.0.5-r2

检测的时候没出现问题,显示的结果也和想的一样~

baishan07 发表于 2014-2-1 15:42:08

问题已解决,谢谢各位:D

hhydeng 发表于 2014-4-24 08:19:55

能用一个arduino测4个压力吗

玥牙湾 发表于 2014-7-13 14:55:32

baishan07 发表于 2014-2-1 15:42 static/image/common/back.gif
问题已解决,谢谢各位

请楼主不要私藏,分享解决方法。让我等小白学习一下
页: [1]
查看完整版本: 关于2台arduino 主机通过i2c接收从机连接多个压力FSR406信号的问题