У меня проект с датчиками не работает

``

#include <Wire.h>                       // библиотека для протокола I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602
#include <DHT.h>                         // подключаем библиотеку для датчика
#include <Servo.h> 
Servo servo; 
int ky010 = 8;             
int val;                  
 
LiquidCrystal_I2C LCD(0x3F,16,2);  // присваиваем имя LCD для дисплея
DHT dht(2, DHT11);                          // сообщаем на каком порту будет датчик

byte simvol[8] = { 
0b11100,
0b10100,
0b11100,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
};
int lowerThreshold = 420;
int upperThreshold = 520;
int digitalPin = 3; // KY-026 digital pin
int analogPin = A1; // KY-026 analog pin
int digitalVal; // digital readings
int analogVal; //analog readings
// Выводы, подключенные к датчику
#define sensorPower 9
#define sensorPin A0

// Переменная для хранения значения уровня воды
int val = 0;

// Объявляем выводы, к которым подключены светодиоды
int redLED = 13;
int yellowLED = 12;
int greenLED = 11;
int led = 8;


void setup() {
     pinMode(led, OUTPUT);
  pinMode(digitalPin, INPUT);
   LCD.init();            // инициализация LCD дисплея
   LCD.backlight();  // включение подсветки дисплея
   dht.begin();         // запускаем датчик DHT11
   Serial.begin(9600);
  pinMode(sensorPower, OUTPUT);
  digitalWrite(sensorPower, LOW);

  // Настроить выводы светодиодов на выход
  pinMode(redLED, OUTPUT);
  pinMode(yellowLED, OUTPUT);
  pinMode(greenLED, OUTPUT);

  // Изначально выключить все светодиоды
  digitalWrite(redLED, LOW);
  digitalWrite(yellowLED, LOW);
  digitalWrite(greenLED, LOW);

  pinMode(ky010, INPUT);    
  servo.attach(7);
}
 void loop() {
   // считываем температуру (t) и влажность (h)
   float h = dht.readHumidity();
   float t = dht.readTemperature();

   // выводим температуру (t) и влажность (h) на жк дисплей
   LCD.setCursor(0,0);
   LCD.print("Hum:");
   LCD.print(h);
   LCD.setCursor(10,0);
   LCD.print("%");
   LCD.createChar(1, simvol);
   
   LCD.setCursor(10,1); // ставим курсор на 1 символ первой строки
   LCD.print(char(1)); // печатаем символ на первой строке

   LCD.setCursor(0,1);
   LCD.print("Temp:");
   LCD.print(t);

   delay(100);
   int level = readSensor();

  if (level == 0) 
  {
    Serial.println("Water Level: Empty");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, LOW);
  }
  else if (level > 0 && level <= lowerThreshold) 
  {
    Serial.println("Water Level: Low");
    digitalWrite(redLED, HIGH);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, LOW);
  }
  else if (level > lowerThreshold && level <= upperThreshold) 
  {
    Serial.println("Water Level: Medium");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, HIGH);
    digitalWrite(greenLED, LOW);
  }
  else if (level > upperThreshold) 
  {
    Serial.println("Water Level: High");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, HIGH);
  }
  delay(1000);
  digitalWrite(led, HIGH);
}



int readSensor() // функция к сигнализации
{
  digitalWrite(sensorPower, HIGH);
  delay(10);
  val = analogRead(sensorPin);
  digitalWrite(sensorPower, LOW);
  return val;
  digitalVal = digitalRead(digitalPin); 
  if(digitalVal == HIGH) // если сигнал огня
  {
    digitalWrite(led, HIGH); // включить лэд
  }
  else
  {
    digitalWrite(led, LOW); // выключить лэд
  }

  // читать аналог
  analogVal = analogRead(analogPin); 
  Serial.println(analogVal);
val = digitalRead(ky010);  
if (val == HIGH){             
servo.write(10);               
delay(1000);             

}

else  {                  
servo.write (100);      
delay(1000);          

}
  delay(100);

на 33 строке почему то выдает ошибку
хотя до добавления нового скетча он работал

#include <Servo.h> 
Servo servo; 
int ky010 = 8;             
int val;                  
void setup()  {        
pinMode(ky010, INPUT);    
servo.attach(7); 
}

void loop()  {
val = digitalRead(ky010);  
if (val == HIGH){             
servo.write(10);               
delay(1000);             

}

else  {                  
servo.write (100);      
delay(1000);          

}
}

вот этот код был добавлен

Какую ошибку, копипастить умеете?

Добавление какого скетча, куда и зачем?

Куда и зачем?

Давайте так, Вы забудете всё, что писали (и мы тоже) и выложите один скетч, тот самый в котором выдаётся ошибка, а под ним выложите копипасту сообщения об ошибке.

Иначе это вынос мозга, а не вопрос.

И, да кстати, строки №№ 7 и 33 глаз не режут? Нормально там всё?

В скетче нет объявления " Servo servo". Пример посмотрите в примерах для библиотеки.
Не…есть, просто не увидел.

А в чём проблема заклеить изолентой участок монитора где пишется ошибка?
На авто,например,отключают лампочку “ошибка двигателя” и ездят дальше.

не я с включенной ездию)

а апшипка в 33 строке, из за дублирования переменой в 7 строке.

#include <Wire.h>                       // библиотека для протокола I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602
#include <DHT.h>                         // подключаем библиотеку для датчика
#include <Servo.h> 

LiquidCrystal_I2C LCD(0x3F,16,2);  // присваиваем имя LCD для дисплея
DHT dht(2, DHT11);                          // сообщаем на каком порту будет датчик

byte simvol[8] = { 
0b11100,
0b10100,
0b11100,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
};
int lowerThreshold = 420;
int upperThreshold = 520;
int digitalPin = 3; // KY-026 digital pin
int analogPin = A1; // KY-026 analog pin
int digitalVal; // digital readings
int analogVal; //analog readings
int ky010 = 6;             
int kei;
Servo servo; 
// Выводы, подключенные к датчику
#define sensorPower 9
#define sensorPin A0

// Переменная для хранения значения уровня воды
int val = 0;

// Объявляем выводы, к которым подключены светодиоды
int redLED = 13;
int yellowLED = 12;
int greenLED = 11;
int led = 8;


void setup() {
 pinMode(ky010, INPUT);    
 servo.attach(7); 

     pinMode(led, OUTPUT);
  pinMode(digitalPin, INPUT);
   LCD.init();            // инициализация LCD дисплея
   LCD.backlight();  // включение подсветки дисплея
   dht.begin();         // запускаем датчик DHT11
   Serial.begin(9600);
  pinMode(sensorPower, OUTPUT);
  digitalWrite(sensorPower, LOW);

  // Настроить выводы светодиодов на выход
  pinMode(redLED, OUTPUT);
  pinMode(yellowLED, OUTPUT);
  pinMode(greenLED, OUTPUT);

  // Изначально выключить все светодиоды
  digitalWrite(redLED, LOW);
  digitalWrite(yellowLED, LOW);
  digitalWrite(greenLED, LOW);
}
 void loop() {
  kei = digitalRead(ky010);  
  if (kei == HIGH){             
 servo.write(10);               
 delay(1000);

   // считываем температуру (t) и влажность (h)
   float h = dht.readHumidity();
   float t = dht.readTemperature();

   // выводим температуру (t) и влажность (h) на жк дисплей
   LCD.setCursor(0,0);
   LCD.print("Hum:");
   LCD.print(h);
   LCD.setCursor(10,0);
   LCD.print("%");
   LCD.createChar(1, simvol);
   
   LCD.setCursor(10,1); // ставим курсор на 1 символ первой строки
   LCD.print(char(1)); // печатаем символ на первой строке

   LCD.setCursor(0,1);
   LCD.print("Temp:");
   LCD.print(t);

   delay(100);
   int level = readSensor();

  if (level == 0) 
  {
    Serial.println("Water Level: Empty");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, LOW);
  }
  else if (level > 0 && level <= lowerThreshold) 
  {
    Serial.println("Water Level: Low");
    digitalWrite(redLED, HIGH);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, LOW);
  }
  else if (level > lowerThreshold && level <= upperThreshold) 
  {
    Serial.println("Water Level: Medium");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, HIGH);
    digitalWrite(greenLED, LOW);
  }
  else if (level > upperThreshold) 
  {
    Serial.println("Water Level: High");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, HIGH);
  }
  delay(1000);
  digitalWrite(led, HIGH);
}



int readSensor() // функция к сигнализации
{
  digitalWrite(sensorPower, HIGH);
  delay(10);
  val = analogRead(sensorPin);
  digitalWrite(sensorPower, LOW);
  return val;
  digitalVal = digitalRead(digitalPin); 
  if(digitalVal == HIGH) // if flame is detected
  {
    digitalWrite(led, HIGH); // turn on LED
  }
  else
  {
    digitalWrite(led, LOW); // turn off LED
  }

  // Read the analog
  analogVal = analogRead(analogPin); 
  Serial.println(analogVal);

  delay(100);  
}

исправил ошибку но после нее появилась ошибка с 91 строкой

Ненузачем так сразу-то? Без подготовки, прелюдии там, прям бух … :frowning:

1 лайк

вот вам и прелюдия…

Мля, терпение заканчивается!

Для особо тупых, повторяю вопрос: Вы текст сообщения об ошибке копипастить умеете? Или нам самим догадываться что Вам там сообщают?

Поиграем в игру " угадай ошибку".
Там есть слова " not found"

да ну на, я ставлю на “not declared in this scope”.

1 лайк

Хм,вполне может быть,учитывая что кой-чего описано ниже,чем первое использование.
Крутите барабан!

обожите третьего участника…

«… первые буквы на белых плакатах чрезвычайно удобно складывались в слово «Неприли…», что означало «неприличными словами не выражаться и на чай не давать». Здесь порою винтом закипали драки, людей били кулаком по морде, – иногда, в редких случаях, – салфетками или сапогами»

int led = 8;
int ky010 = 8;

Зачем этот “сборный конструктор” обсуждать вообще?

Тем более, когда ТС считает ниже своего достоинства скопипастить сообщение об ошибке. Значит, так ему это нужно.

Я предложил:

Но всегда найдётся мать Тереза.

так не у всех на сёдня закончился список добрых дел, подумалось, если меньше 150 строк, поправлю чуток, выложу, компилироваться будет, но работать нет )))

#include <Wire.h>                       // библиотека для протокола I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602
#include <DHT.h>                         // подключаем библиотеку для датчика
#include <Servo.h>
Servo servo;

LiquidCrystal_I2C LCD(0x3F, 16, 2); // присваиваем имя LCD для дисплея
DHT dht(2, DHT11);                          // сообщаем на каком порту будет датчик

byte simvol[8] = {
  0b11100,
  0b10100,
  0b11100,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
};

int lowerThreshold = 420;
int upperThreshold = 520;
int digitalPin = 3; // KY-026 digital pin
int analogPin = A1; // KY-026 analog pin
int digitalVal; // digital readings
int analogVal; //analog readings

// Выводы, подключенные к датчику
#define sensorPower 9
#define sensorPin A0

// Переменная для хранения значения уровня воды
int val = 0;

// Объявляем выводы, к которым подключены светодиоды
int redLED = 13;
int yellowLED = 12;
int greenLED = 11;
int led = 10;
int ky010 = 8;


void setup() {
  pinMode(led, OUTPUT);
  pinMode(digitalPin, INPUT);
  LCD.init();            // инициализация LCD дисплея
  LCD.backlight();       // включение подсветки дисплея
  dht.begin();           // запускаем датчик DHT11
  Serial.begin(9600);
  pinMode(sensorPower, OUTPUT);
  digitalWrite(sensorPower, LOW);

  // Настроить выводы светодиодов на выход
  pinMode(redLED, OUTPUT);
  pinMode(yellowLED, OUTPUT);
  pinMode(greenLED, OUTPUT);

  // Изначально выключить все светодиоды
  digitalWrite(redLED, LOW);
  digitalWrite(yellowLED, LOW);
  digitalWrite(greenLED, LOW);

  pinMode(ky010, INPUT);
  servo.attach(7);
}


void loop() {
  // считываем температуру (t) и влажность (h)
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // выводим температуру (t) и влажность (h) на жк дисплей
  LCD.setCursor(0, 0);
  LCD.print("Hum:");
  LCD.print(h);
  LCD.setCursor(10, 0);
  LCD.print("%");
  LCD.createChar(1, simvol);

  LCD.setCursor(10, 1); // ставим курсор на 1 символ первой строки
  LCD.print(char(1)); // печатаем символ на первой строке

  LCD.setCursor(0, 1);
  LCD.print("Temp:");
  LCD.print(t);

  delay(100);
  int level = readSensor();

  if (level == 0)
  {
    Serial.println("Water Level: Empty");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, LOW);
  }
  else if (level > 0 && level <= lowerThreshold)
  {
    Serial.println("Water Level: Low");
    digitalWrite(redLED, HIGH);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, LOW);
  }
  else if (level > lowerThreshold && level <= upperThreshold)
  {
    Serial.println("Water Level: Medium");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, HIGH);
    digitalWrite(greenLED, LOW);
  }
  else if (level > upperThreshold)
  {
    Serial.println("Water Level: High");
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, HIGH);
  }
  delay(1000);
  digitalWrite(led, HIGH);
}

int readSensor() // функция к сигнализации
{
  digitalWrite(sensorPower, HIGH);
  delay(10);
  val = analogRead(sensorPin);
  digitalWrite(sensorPower, LOW);
  return val;
  digitalVal = digitalRead(digitalPin);
  if (digitalVal == HIGH) // если сигнал огня
  {
    digitalWrite(led, HIGH); // включить лэд
  }  else  {
    digitalWrite(led, LOW); // выключить лэд
  }

  // читать аналог
  analogVal = analogRead(analogPin);
  Serial.println(analogVal);
  val = digitalRead(ky010);
  if (val == HIGH) {
    servo.write(10);
    delay(1000);
  }  else  {
    servo.write (100);
    delay(1000);
  }
  delay(100);
}


Ну, да, блаженные - они такие :slight_smile: