@Rinat_2001

Как дополнить дополнить скетч для Ардуино что бы светодиоды включались только при нужном условии(ниже)?

Я начинающий Ардуинщик,который буквально неделю назад начал углубляться в эту тематику. И вот моя первая проблема и первый неудачный опыт починить что-то самому.От вас я прошу подкоректировать немного скетч(не мой) что бы он соответствовал следующим параметрам: при подключении платы Arduino UNO не должны включаться светодиоды,они должный работать только в тот момент,когда происходит одно из двух действий-температура выше 35 градусов-включается красный светодиод, температура ниже 20 градусов- зеленый светодиод. Во всех остальных случаях светодиоды должны находиться в выключенном состоянии.Помогите пожалуйста)).
#include <Wire.h>
#include <Wire.h>
#include <OneWire.h> 
#include <DallasTemperature.h> //подключение библеотек для DS18B20
#define ONE_WIRE_BUS 10 // pin к которому подключен DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#include <OLED_I2C.h>
OLED  myOLED(A4, A5, A4); // Подключение дисплея
extern uint8_t RusFont[]; // Русский шрифт
extern uint8_t BigNumbers[]; // Большие цифры
extern uint8_t SmallFont[]; // Маленький шрифт
void setup()
{
  pinMode(13, OUTPUT); // Объявить pin 13 как выход
  pinMode(2, OUTPUT);// Объявить pin 2 как выход
  pinMode(5, OUTPUT); // Объявить pin 5 как выход
  sensors.begin();// Включение датчика
  myOLED.begin();// Включение дисплея
  myOLED.setFont(RusFont);
}
void loop()
{
 if (sensors.getTempCByIndex(0)>35)//Проверка датчика температуры(при температуре >35 будет включаться лампочка и сирена)
{
   digitalWrite(5,HIGH);// Включение лампочки
   tone(13, 2500);// Включаем звук 2500 Гц
   delay(1000);// Пауза 1 сек
   digitalWrite(5,LOW);// Выключение лампочки
  }
else // иначе(при несоблюдении условия выше)
{
  if (sensors.getTempCByIndex(0)<20)//Проверка датчика температуры(при температуре <20 будет включаться лампочка и сирена)
  {
    digitalWrite(2,HIGH);// Включение лампочки
    tone(13, 2500); // Включаем звук 2500 Гц
    
  }
 else // иначе(при несоблюдении условий выше)
  {
    noTone(13);// выключение звука
    digitalWrite(2,LOW);
    digitalWrite(5,LOW);    
  }
}
sensors.requestTemperatures();
myOLED.clrScr(); // Очищаем экран
myOLED.setFont(RusFont);
myOLED.print("Ntvgthfnehf", CENTER, 0); // Вывод текста русскими буквами
myOLED.setFont(SmallFont);
myOLED.setFont(RusFont);
myOLED.print("Hbyfn Fqcbyjd", CENTER, 55); // Вывод текста 
myOLED.setFont(BigNumbers);
myOLED.print(String(sensors.getTempCByIndex(0) , 1), CENTER, 10);   // Отображение значения температуры, с точностью до десятых
myOLED.update();
delay(100);
}
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kalapanga
У Вас есть три температурных интервала (<20, 20-35, >35) и два индикатора (красный, зелёный)
Нужно для каждого интервала прописать управление обоими индикаторами.
А сейчас Вы управляете в одном случае только красным, в другом только зелёным. И только в одном из трёх случаев обоими (когда оба выключаете).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы