我的当前设置存在问题。
当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。