Wire library和softwareSerial导致重置

时间:2015-06-30 08:09:49

标签: arduino

我们现在有3天这个问题,我们有3个arduino文件:

main.ino  
module1.ino  //module 1 is using software serial on pins 5,6  
module2.ino //2 is using Wire library

每个模块都由它自己工作,但当我们尝试与它们一起工作时,#34;从主文件中我们得到无休止的重置:

主要

setup(); // 0 ( Wire connection setup)
clearAcInt(); //1  ( Wire connection)
connect(USER_SSID,USER_PASS); //2  ( software serial)

因此,仅使用0 + 1效果很好,也只使用2个作品,但在0 + 1之后使用2会导致重置(设置功能已提交)

// 0+ 1线连接模块

 #include <Wire.h>

   #define DEVICE (0x53) //ADXL345 device address
   #define TO_READ (6) 
   byte buff[TO_READ] ; 
   byte buffReg[8];  
   char str[512];    




void setup()
{
 Wire.begin(); 
}



 char *clearAcInt()
 {

         //**the cause of the problem:
         readFrom(DEVICE, 0x30, 8, buff); //0x30

         return "non";


 }
void readFrom(int device, byte address, int num, byte buff[]) 
{
  Wire.beginTransmission(device); //start transmission to device 
  Wire.write(address);        //sends address to read from
  Wire.endTransmission(); //end transmission

  //Wire.beginTransmission(device); //start transmission to device (initiate again)
  Wire.requestFrom(device, num);    // request 6 bytes from device

  int i = 0;
  while(Wire.available())    //device may send less than requested (abnormal)
  { 
    buff[i] = Wire.read(); // receive a byte
    i++;
  }
 // Wire.endTransmission(); //end transmission

}

// 2软件序列

 #include <SoftwareSerial.h>
   SoftwareSerial softSerial(5,6); 
   void setupCon()
{
 softSerial.begin(9600);
}
boolean connect(USER_SSID,USER_PASS)
{

    softSerial.println( ".sta.config(\""); 
   softSerial.println( ssid); 
    softSerial.println( "\""); 
    softSerial.println( ","); 
    softSerial.println( "\""); 
   softSerial.println(pass); 
    softSerial.println("\")");


}

删除1可以解决问题,同时删除2会解决问题。 因此,看起来Wire模块上的读取功能会导致以后您无法再连接软件序列。

我们真的输了,所以任何方向都会很棒。 谢谢。

0 个答案:

没有答案