Форум программистов, компьютерный форум, киберфорум
Наши страницы
Arduino
Войти
Регистрация
Восстановить пароль
 
cordiss
0 / 0 / 0
Регистрация: 16.04.2018
Сообщений: 2
#1

Странные зависания Arduino Nano (Atmega 328P) - Arduino

16.04.2018, 15:46. Просмотров 181. Ответов 3
Метки нет (Все метки)

Доброго времени суток. Собрал проект на базе Arduino Nano для умного освещения и включения/выключения вентилятора в ванной. Все подключил. Система работает отлично, но..Спустя несколько часов (Рандомно вообще, может и 2 часа а может и 15-17) вся система начинает зависать и уже то ли датчики не реагируют, то ли сама плата уходит или в режим ожидания или что вообще(Я в этой области абсолютно новичек). После перезагрузки ардуины все снова работает отлажено.

Система состоит из:
Arduino Nano V3.0 AVR ATmega328P
ИК датчик движения HC-SR501
Датчик освещения
Датчик влажности DHT11
Двухканальное реле 5В 10А

Питание ардуины происходит от сети 220В через адаптер (1А, 5В, по типу телефонной зарядки, брал на сайте интернет магазина Ардуино). Далее через реле происходит управление подсветкой(220В) и вентилятором(220В).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <Adafruit_Sensor.h>
 
 
#include <DHT.h>
#include <DHT_U.h>
 
#define relayout1 6
#define relayout2 7
#define ledPin 13
#define movPin 8
#define lPin 5
#define alPin A3
#define DHTPIN A2
 
DHT dht(DHTPIN, DHT11);
 
void setup() {
 
  
  Serial.begin(9600);  
 
  
  pinMode(relayout1, OUTPUT);
  pinMode(relayout2, OUTPUT);  
  pinMode(movPin, INPUT);
  pinMode(lPin, INPUT);
  pinMode(alPin, INPUT);
  pinMode(DHTPIN, INPUT);
  
  dht.begin();
  
  digitalWrite(relayout1, HIGH);
  digitalWrite(relayout2, HIGH);
}
 
 
void loop() {
  
  float h = dht.readHumidity();
  
  // Считываем температуру
  
  float t = dht.readTemperature();
  
  // Проверка удачно прошло ли считывание.
  
  if (isnan(h) || isnan(t)) {
  
  //Некорректное считывание
   return;
  
  }
  
 
  while(h > 60.0){
    digitalWrite(relayout1, LOW);
    delay(60000);
    break;
  }
 
  while(digitalRead(movPin) == 1)
  {
    digitalWrite(relayout1, LOW);
 
    if(analogRead(alPin) > 700)
    {
      digitalWrite(relayout2, LOW);
      delay(60000);
    }
    else
    {
      digitalWrite(relayout2, HIGH);
      delay(60000);
    }
  }
  digitalWrite(relayout2, HIGH);
  digitalWrite(relayout1, HIGH);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2018, 15:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Странные зависания Arduino Nano (Atmega 328P) (Arduino):

Arduino Nano+ Bluetooth HC-05
Здравствуйте. Есть aрдуино нано и блютуз hc 05. Мало знаю по электронике, но...

Кардиодатчик + Arduino Nano
Проблема такая есть arduino nano и не то что бы кардиодатчик(его подобие своими...

Тестировщик на Arduino Nano
Доброго времени, нужен элементарный скетч на тестировщик, однако по алгоритму и...

Arduino nano v 3.0 и светодиодные ленты
Здравствуйте, у меня есть arduino nano и 4 свет. Аналоговые ргб ленты и...

Гирлянда на ws2811 и arduino nano
Всем привет. Имею диоды на контроллере ws2811 в количестве 50 шт Arduino nano...

Ошибка Serial (Arduino nano v3)
#include &lt;LCD5110_Graph.h&gt; #include &quot;DHT.h&quot; #include &lt;Wire.h&gt; #include...

3
marat_miaki
149 / 138 / 87
Регистрация: 08.04.2013
Сообщений: 554
16.04.2018, 21:43 #2
C++
1
delay(60000);
это проблема вашей системы. Во время выполнения delay () вы не можете опрашивать входы, обрабатывать данные и менять состояние выходов. Эта функция связывает процессор на все 100%. Ваши датчики в течении минуты не на что реагировать не будут. Используйте millis(). Других причин вроде нет
0
Сергей 190
253 / 254 / 54
Регистрация: 18.03.2015
Сообщений: 939
22.04.2018, 20:28 #3
Цитата Сообщение от marat_miaki Посмотреть сообщение
Других причин вроде нет
Есть.
Собрал регистратор температуры. Дома в комнате работает не меньше недели. На кухне, рядом с холодильником, виснет через 2-3 часа. На даче каждые 20 минут.
К сожалению, в Arduino Nano программный сторожевой таймер не работает. Нужен аппаратный.
0
Рыжий Лис
Просто Лис
906 / 444 / 320
Регистрация: 17.05.2012
Сообщений: 1,844
Записей в блоге: 7
23.04.2018, 10:50 #4
Аппаратный сторожевой таймер же есть, емнип?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2018, 10:50
Привет! Вот еще темы с решениями:

Порт arduino nano не распознается
Здравствуйте! Недавно приехала плата arduino nano v3 из Китая. Она...

Arduino nano и дальномер HC-SR04
Добрый день. Я новичек в Ардуино. Приобрел дальномер HC-SR04, написал...

Компьютер не видит Arduino Nano V3
Здравствуйте! ОС win7, только купить нану, подключил к компу и пишет что нету...

Arduino nano usb на windows xp embedded
Arduino nano usb не могу заставить работать на windows xp embedded. На 7...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru