void loop() {
photoCell = analogRead(pin);
time = millis();
if (photoCell >= 400){
timeon = millis();
led = 1;
while (analogRead(pin) >= 400) {
timer = millis() - timeon;
//Serial.print("On");
//Serial.println(timer);
}
}
if (photoCell <= 400) {
timeoff = millis();
led = 0;
while (analogRead(pin) <= 400) {
timer2 = millis() - timeoff;
//Serial.print("Off");
//Serial.println(timer2);
}
}
if (timer >= 175 && timer <= 200 && led == 1) {
Serial.print("Char = ");
Serial.println(".");
codearray[i] = 8;
i++;
}
if (timer >= 580 && timer <= 600 && led == 1) {
Serial.print("Char = ");
Serial.println("-");
codearray[i] = 9;
i++;
}
这是我目前的代码,使用插入A0的光电管和连接到引脚9的LED工作正常。串行监视器根据时间显示我是否闪烁点或短划线,莫尔斯科德。
然而..当我添加这段代码时
if (codearray[0] == 8 && codearray[1] == 8 &&
codearray[2] == 8 && codearray[3] == 0) {
Serial.print("s");
}
显示器什么都不打印。这段代码填写了我设置的数组,因此我可以按字母顺序打印出被破译的莫尔斯代码。我非常确定我的逻辑是正确的。
想知道是否有人理解为什么第二位代码会与第一位代码冲突,或者模拟输入或串行监视器可能出现什么问题。
答案 0 :(得分:0)
你的问题不在这里;可能属于堆栈溢出。
但很明显你忘了打电话给Serial.Begin(9600);在setup();注: 9600是arduino默认波特率。