• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Arduino UNO "глючит"

  • Автор темы Автор темы Zebraj
  • Дата начала Дата начала

Zebraj

Новые
Регистрация
20 Апр 2015
Сообщения
23
Реакции
0
Баллы
0
Arduino UNO "глючит"

Доброго времени уважаемые специалисты!

Полгода назад установил на управление аквариумом Arduino UNO R3 MEGA328P CH340G. Полгода работала на питании 5v от блока питания компьютера, но вот он сгорел (причину не выяснял, да и куча его проводов, уже почищенная раздражала).
И я подключил ардуинку от БП 12В (15A 200 Вт импульсный источник питания, AC 100-240в вход , DC 12 выход). На этом же БП светодиодные матрицы 19*10w (основной свет). Там же ночная подсветка с 3*3w и другие штуки для аквариума. Все работает, когда не работает основной свет: после включения основного света минут через 10-20 начитает трещать реле управления, которой управляет Ардуинка, лампочки моргают; затем вырубается все: я так понимаю Ардуинка виснет. Отключив питание и включив его через минуту - все работает....и снова 20 минут и повторяется.
Большой ток идущий на основной свет ее беспокоит?
Или питания не хватает(я на этот БП вешал 32*10W, грелся но работал)?tehno015

И еще вопрос по коду диммирования, вроде написано верно, но не диммирует
 
Последнее редактирование:
PHP:
#include <LiquidCrystal_I2C.h> Подключаем библиотеку монитора
#include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC 
#include <RTClib.h> //Подключаем библиотеку для использования модуля часов реального времени RTC 
RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC 

#define mn 60UL
#define hr 3600UL

//----------Объявляем разные переменные------------ 
const int RelCO2 = 3; //Используем цифровой ПОРТ 3  -> на реле 6/220
const int LedPWM = 9; //ШИМ утро-вечер на выходе 9  -> к драйверам

//Установки параметров ШИМ
#define PWM_MIN 0 //минимальное значение ШИМ
#define PWM_MAX 255//максимальное значение ШИМ
#define PWM_LOW 180//сниженное значение ШИМ

const long OnRelLed1 = 13*hr; //Время срабатывания реле
const long OffRelLed1 = 22*hr; //Время выключения реле
const long LedPWMDur = 60*mn;//длительность восхода-заката при помощи ШИМ

void setup(){ 

pinMode (RelLed1,OUTPUT); //Инициализируем порт канала как ВЫХОД 
digitalWrite(RelLed1,HIGH); //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень 

pinMode(LedPWM, OUTPUT); //Инициализируем порт канала как ВЫХОД 
[I]//digitalWrite(LedPWM, LOW);// Устанавливаем PWM в низкий кровень
analogWrite(LedPWM, PWM_MIN)[/I];//Устанавливаем PWM  в минимальный уровень, какой-то из них должен работать :)


Wire.begin(); //Инициируем I2C интерфейс 
RTC.begin(); //Инициирум RTC модуль 

//RTC.adjust(DateTime(__DATE__, __TIME__)); //С этой строки необходимо убрать комментарии один раз в начале установки часов, 

} // КОНЕЦ ИНИЦИАЛИЗАЦИИ 

//-------------------------------------------------- 
void loop() // 
{ 
DateTime myTime = RTC.now(); 

//----------Раздел обработки реле по времени ---- 
long utime = myTime.unixtime(); //сохраняем в переменную - время в формате UNIX 
utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секунд в сутках, Это дает количество секунд с начала текущих суток 

//------------Реле  2----------
if ((utime >= OnRelLed1) && (utime <= (OffRelLed1))) //Если секунд с начала суток больше, чем задано для включения, и одновременно меньше, чем задано для включения 
{ digitalWrite(RelLed1,LOW); //Устанавливаем на входе релейного модуля НИЗКИЙ уровень - реле включается
} else{digitalWrite(RelLed1,HIGH);} 

//-----------Диммируем 9 КАНАЛ ардуино--------
  if ((utime > (OnRelLed1+LedPWMDur)) && (utime < OffRelLed1-LedPWMDur))//время включеного ШИМ
    {
      digitalWrite(LedPWM, PWM_MAX);
     }
  else
  {
    if((utime >= OnRelLed1) && (utime < (OnRelLed1 + LedPWMDur)))
      {
         digitalWrite(LedPWM, (utime - OnRelLed1)*(PWM_MAX-PWM_MIN) / LedPWMDur); 
      }
     else
     {
      if((utime >= OffRelLed1 - LedPWMDur) && (utime < OffRelLed1))
      {
        digitalWrite(LedPWM, (OffRelLed1 - utime)*(PWM_MAX-PWM_MIN) / LedPWMDur); 
      }
     
      else
      {
       digitalWrite(LedPWM, PWM_MIN);//значение PWM_MIN 
      }
     }
  }
}
//------------Конец ЦИКЛА-------
 
Последнее редактирование:
Поставил я драйвер 12v, 900mA после БП - работает сутки без проблем.
Нет знатоков по С++? Ну хоть куда бежать подскажите ;)
 
а не analogWrite вместо digitalWrite надо?
 
Назад
Сверху