使用Arduino,Xbees和电容传感器的未知问题

时间:2013-05-02 16:35:31

标签: arduino xbee

我的当前设置存在问题。

当Arduino 2上的电容式传感器(线圈)值超过100时,我想要激活Arduino 1上的灯。当Arduino 1上的电容式传感器值超过100时,我想激活Arduino 2上的灯。想象一下,就好像线圈是一个游戏节目的蜂鸣器,它必须点亮的是其他参赛者。我已经使用serial.println来检查传感器的运行方式。

我遇到的问题是当我使用此代码时:

#include <NewSoftSerial.h>

#include <CapacitiveSensor.h>

NewSoftSerial myport(2,3);
CapacitiveSensor   cs_6_4 = CapacitiveSensor(6,4);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
int incomingByte;
void setup()                    
{
  cs_6_4.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1 - just as an example
   Serial.begin(9600); 
  myport.begin(9600);

  pinMode(9,OUTPUT);
}

void loop()                    
{
  long start = millis();
  long total1 =  cs_6_4.capacitiveSensor(30);
if (total1>100){ 
  myport.print(1,BYTE);

}
else{
    myport.print(0,BYTE);
}
delay(10);
if (myport.available()){
// set the values to the ‘incomingByte’ variable
incomingByte = myport.read();
Serial.println(incomingByte);

if (incomingByte==1){
analogWrite(9, 255);
}

else{
analogWrite(9, 0);
}
//else if (incomingByte >=110 && incomingByte <=70) {
// write the value to the pin 11
//val2 = map(incomingByte, 110, 170, 0, 255);
//analogWrite(9, int(val2));
}
//Serial.println(total1);
}

该代码在两个板上,并在一定程度上起作用。问题是,在其中一个电容式传感器被激活(有时是4秒,有时是10个)之后,电路板可以预测很短的时间,然后灯会以短毫秒的突发闪烁。在串行监视器中,它显示电路板正在为“incomingByte”拾取一个值,这个值只有在传感器超过100时才会发生。

从传感器触摸到发光的时间似乎也存在不可靠的延迟,有时在直到1秒之间变化。这不是那个问题,因为我希望最终将incomingByte的结果更改为另一个函数,而不是打开LED。

0 个答案:

没有答案