Ошибка компиляции кода: 'Serial' does not name a type

int LDR_deger = 0;

int Ledpin1 = 12;
int Ledpin2 = 11;
int Ledpin3 = 10;
int Ledpin4 = 9;
int Ledpin5 = 8;

int LDR_pin = 0;

void setup()
{

  Serial.begin(9600);
  pinMode(Ledpin1, OUTPUT);
  pinMode(Ledpin2, OUTPUT);
  pinMode(Ledpin3, OUTPUT);
  pinMode(Ledpin4, OUTPUT);
  pinMode(Ledpin5, OUTPUT);
}
void loop()

{
  LDR_deger = analogRead(LDR_pin);
digitalWrite(Ledpin1,HIGH);
digitalWrite(Ledpin2,HIGH);
digitalWrite(Ledpin3,HIGH);
digitalWrite(Ledpin4,HIGH);
digitalWrite(Ledpin5,HIGH);

if (LDR_deger <= 80 && LDR_deger> 30) {
  digitalWrite(Ledpin1, LOW);
} else{
  digitalWrite(Ledpin1, HIGH);
  if (LDR_deger<= 150 && LDR_deger > 80){
  digitalWrite(Ledpin2, LOW);
  digitalWrite(Ledpin1, LOW);
  }else{
    digitalWrite(Ledpin1, HIGH);
    digitalWrite(Ledpin2, HIGH);
    if (LDR_deger  <= 200 && LDR_deger> 150){
      digitalWrite(Ledpin2, LOW);
      digitalWrite(Ledpin1, LOW);
      digitalWrite(Ledpin3, LOW);
     }else{
      digitalWrite(Ledpin1, HIGH);
      digitalWrite(Ledpin2, HIGH);
      digitalWrite(Ledpin3, HIGH);
      if (LDR_deger <= 1000 && LDR_deger> 300){
      digitalWrite(Ledpin2, LOW);
      digitalWrite(Ledpin1, LOW);
      digitalWrite(Ledpin3, LOW);
      digitalWrite(Ledpin4, LOW);
      digitalWrite(Ledpin5, LOW);
     }else{
      digitalWrite(Ledpin1, HIGH);
      digitalWrite(Ledpin2, HIGH);
      digitalWrite(Ledpin3, HIGH);
      digitalWrite(Ledpin4, HIGH);
      digitalWrite(Ledpin5, HIGH);
     }
       }
     }
   } 
  }
Serial.print("LDR Deger: ");
Serial.print(LDR_deger);
Serial.println(" ");
delay(500);
}

, 👍0

Обсуждение

Не просто публикуйте код и ожидайте, что мы догадаемся, в чем проблема. Также дайте некоторое объяснение того, что вы пробовали, @MichaelT


2 ответа


2

Одна из причин, по которой вы получаете ошибку компиляции, связана с кодом вне функции. Когда вы пишете красивый, аккуратный, правильно отформатированный код, эти ошибки легко обнаружить. В IDE Arduino есть встроенная функция, которая «выделяет» соответствующую фигурную скобку (или фигурную скобку?).

,

Возможно, стоит упомянуть и функцию автоматического форматирования (CTRL+T). Это становится настолько очевидным после его использования., @KIIV


0

VE7JRO уже ответил на ваш вопрос. Ниже приведен не ответ на вопрос, а лучший способ запрограммировать то, что у вас есть.

В вашем случае нужно установить 5 пинов соответственно. Я предполагаю, что следующие строки предназначены только для инициализации (и не нужны, если вы впоследствии установите для них значение FALSE), так как я не вижу никакой задержки.

digitalWrite(Ledpin1,HIGH);
digitalWrite(Ledpin2,HIGH);
digitalWrite(Ledpin3,HIGH);
digitalWrite(Ledpin4,HIGH);
digitalWrite(Ledpin5,HIGH);

Каждому пину намного проще задать направление условий; это сократит количество операторов if и сделает понятным для каждого вывода, каким должно быть значение.

Сначала мы создаем некоторые переменные, чтобы предотвратить дублирование. На самом деле мне обычно нравится использовать bool, но это не предопределенный тип. Также мне нравится располагать нижний диапазон слева и верхний диапазон справа и использовать круглые скобки. Я добавил диапазон 200-300 и нижний/верхний диапазон:

int LDR_deger_min_inf_30 =  (LDR_deger <= 30);
int LDR_deger_30_80      = ((LDR_deger >  30) && (LDR_deger <=   80)); 
int LDR_deger_80_150     = ((LDR_deger >  80) && (LDR_deger <=  150));
int LDR_deger_150_200    = ((LDR_deger > 150) && (LDR_deger <=  200));
int LDR_deger_200_300    = ((LDR_deger > 200) && (LDR_deger <=  300));
int LDR_deger_300_1000   = ((LDR_deger > 300) && (LDR_deger <= 1000));
int LDR_deger_1000_inf   =  (LDR_deger > 1000);

Теперь вы можете создать таблицу для каждого вывода (это отличная документация и четкий обзор); Я бы добавил это в комментарий (если у вас нет другого способа документации):

// pin min_inf_30 30_80 80_150 150_200 200_300 300_1000 1000_inf
//  1     HIGH     LOW    LOW     LOW   HIGH      LOW     HIGH 
//  2     .. (fill in yourself)
//  3     .. (fill in yourself)
//  4     .. (fill in yourself)
//  5     .. (fill in yourself)

Теперь вы можете писать пины один за другим (в качестве примера я сделал только первый):

digitalWrite(Ledpin1, LDR_deger_min_inf || LDR_deger_200_300 || LDR_deger_1000_inf ? HIGH : LOW);
digitalWrite(Ledpin2, …);
,