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");
}
显示器没有打印任何内容。这段代码填充了我设置的一个数组,这样我就可以按字母顺序打印出已破译的莫尔斯电码。我很确定我的逻辑是正确的。
看看是否有人理解为什么第二位代码会与第一位代码冲突,或者模拟输入或串行监视器可能出现什么问题。
最佳答案
你的问题在这里偏离主题;可能属于堆栈溢出。
但是很明显你忘记调用 Serial.Begin(9600);在设置()中;注: 9600是arduino默认波特率。
关于c - 有关串行打印的帮助 (Arduino C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26907869/