串行打印帮助(Arduino C)

时间:2014-11-13 00:58:34

标签: c

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");
}

显示器什么都不打印。这段代码填写了我设置的数组,因此我可以按字母顺序打印出被破译的莫尔斯代码。我非常确定我的逻辑是正确的。

想知道是否有人理解为什么第二位代码会与第一位代码冲突,或者模拟输入或串行监视器可能出现什么问题。

1 个答案:

答案 0 :(得分:0)

你的问题不在这里;可能属于堆栈溢出。

但很明显你忘了打电话给Serial.Begin(9600);在setup();注: 9600是arduino默认波特率。