Ошибка "'Serial' does not name a type"

Я получаю ошибку "'Serial' does not name a type" при компиляции этой программы. Мне нужно, чтобы отображались 8 каналов напряжения. Я уверен, что это простое решение, однако я все еще изучаю программирование Arduino. Я благодарю вас за помощь.

int pin_Out_S0 = 8;
int pin_Out_S1 = 9;
int pin_Out_S2 = 10;
int pin_In_Mux1 = A0;
int Mux1_State[8] = {0};
//float Mux1_State[i] =0;
int RawValue=0;
float Voltage = 0;
void setup() {
  pinMode(pin_Out_S0, OUTPUT);
  pinMode(pin_Out_S1, OUTPUT);
  pinMode(pin_Out_S2, OUTPUT);
  pinMode(pin_In_Mux1, INPUT);
  Serial.begin(9600);
}

void loop() {
 RawValue = analogRead(pin_In_Mux1);
 Voltage = (RawValue * 5.0) / 1024; //scale the ADC
  updateMux1();
  //Serial.println(Mux1_State);
  for(int i = 0; i < 8; i ++) {
    if(i == 7) {
      Serial.println(Mux1_State[i]);
    } else {
      Serial.print(Mux1_State[i]);
      Serial.print(",");
      //vout = (value * 5.0) / 1024.0;
    }
  }
}

void updateMux1 () {
  for (int i = 0; i < 8; i++){
    digitalWrite(pin_Out_S0, HIGH && (i & B00000001));
    digitalWrite(pin_Out_S1, HIGH && (i & B00000010));
    digitalWrite(pin_Out_S2, HIGH && (i & B00000100));
    Mux1_State[i] = analogRead(pin_In_Mux1);
  }
}
Serial.print("Raw  Value = " );
Serial.print(RawValue); 

, 👍4

Обсуждение

Такие вещи, как pin_Out_S0, необходимо объявить, в противном случае они будут генерировать сообщения об ошибках., @Nick Gammon


3 ответа


10

Ваши последние две строки не находятся ни в одной функции. Это сбивает с толку компилятор. Вам нужно переместить эти два оператора внутрь функции.

Поскольку эти операторы ссылаются на RawValue, я предполагаю, что вы хотите поместить их в loop(), где RawValue обновляется.

Кроме того, помните, что IDE сообщит вам, в какой строке находится ошибка, что полезно при отладке ошибок компиляции.

,

1

Пожалуйста, поместите эти строки внутрь функционального блока loop():

Serial.print("Raw  Value = " );
Serial.print(RawValue); 

Должно выглядеть примерно так:

void loop() {
 RawValue = analogRead(pin_In_Mux1);
 Voltage = (RawValue * 5.0) / 1024; //scale the ADC
  updateMux1();
  //Serial.println(Mux1_State);
  for(int i = 0; i < 8; i ++) {
    if(i == 7) {
      Serial.println(Mux1_State[i]);
    } else {
      Serial.print(Mux1_State[i]);
      Serial.print(",");
      //vout = (value * 5.0) / 1024.0;
    }
  }
  Serial.print("Raw  Value = " );
  Serial.print(RawValue); 
}

Это должно устранить по крайней мере первую проблему с вашим кодом.

Ура!

,

1

В дополнение к хорошим ответам Микаэля и Юинта, все должно быть заключено в {фигурные скобки}, иначе IDE не будет знать, где оно находится. Если вы не хотите, чтобы последние 2 строки в вашем сегменте цикла вы можете поместить их в отдельный раздел void xxxx (), чтобы они вызывались, когда придет время (например, с помощью ISR с функцией enableinterrupt).

,