Ардуино нано некорректная работа
- Войдите на сайт для отправки комментариев
Втр, 29/08/2017 - 15:54
/*
таймер кнопка 1 ->2 (btn1_pin) 0- нажата /1 нет
GND->GND
светодиод 1->3 (Led1_pin) 1- горит8 /0 нет
Ucc->Ucc
*/
const int btn1_pin = 3; // нога кнопки 1
uint8_t btn1 = 0xFF;
const int Led1_pin = 8; // нога реле
uint8_t Led1;
const int Led2_pin = 2; // нога светодиода 2
uint8_t Led2;
void setup() {
pinMode(btn1_pin, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(Led1_pin, OUTPUT);
digitalWrite(Led1_pin, Led1 = 0);
pinMode(Led2_pin, OUTPUT);
digitalWrite(Led2_pin, Led2 = 0);
}
void loop() {
static uint32_t MILLIS ;
MILLIS = millis() ;
//200 миллисекунд вычислит. поток 1
static uint32_t future1 = 0 ;
static uint32_t fut1 = 0 ;
if (Led1 & MILLIS >= fut1) // если прошло время и светодиод еще горит
{
digitalWrite(Led1_pin, Led1 = 0); // то выключим его
digitalWrite(Led2_pin, Led2 = 0);
future1 = 0 ;
fut1 = 0 ;
}
if (MILLIS >= future1) {
future1 = MILLIS + 200 ;
btn1 = btn1 << 1 | digitalRead(btn1_pin);
if ((btn1 & 3) == 2) { // если нажата клавиша (переход с 1 в 0)
if (!Led1) { // и светодиод не горит
if (digitalRead(5) == 0) {
fut1 = MILLIS + 600000 ; // то выставим время на 600 000 = 10 минутам
}
else // а иначе
if (digitalRead(6) == 0) {
fut1 = MILLIS + 1200000 ; // то выставим время на 1 200 000 = 20 минутам
}
else // а иначе
if (digitalRead(7) == 0) {
fut1 = MILLIS + 1800000 ; // то выставим время на 1 800 000 = 30 минутам
}
{ digitalWrite(Led1_pin, Led1 = 1) ; //и зажжем
digitalWrite(Led2_pin, Led2 = 1) ;}
}
else // а иначе
{
digitalWrite(Led1_pin, Led1 = 0) ; //погасим
digitalWrite(Led2_pin, Led2 = 0) ;
}
}
}
}
Откатал скейтч на ардуино уно всё работает. Загружаю этот же скейтч в ардуино нано он работает вообще не понятно как и близко нет к скейтчу. Таймер по кругу идёт .Питание что от блока питания что от юсб всёравно одно и тоже. Нано проверял, простые свечения светодиодом и кнопки на этих контактах отрабатывае нормально.В чём может быть проблема такого поведения нано в отличии от уно.Уно и нано китайские.
взяли чужой скетч и "слегка подправили"? = налепили ошибок.
Вы разницу между операторами "&" и "&&", равно как между "|" и "||" улавливаете? - вот теперь пройдитесь по коду и посмотрите, где какой должен стоять. У вас с ними полная каша. В частности в строке 34 - явная ошибка.
Ну и код работы с временными интервалами - строки 42, 47, 51 и 55 - неверный. Классическая ошибка новичка. Хотя конкретно к тем проблемам, которые вы описали - отношения не имеет
И слово Sketch ни при каком раскладе не пишется с буквой "й" . Кто это вообще придумал первый? На кол посадить за это..
Это конечно основная проблема в слове Sketch попробую убрать ошибки, но почему уно работает с таким скетчем
почему уно работает с таким скетчем
А хрен его знает!
Вы ведь не потрудились объяснить нам:
1. Что этот "скетч" должен делать;
2. Что он в действительности делает на Uno;
3. Что он в действительности делает на Nano.
Или Вы думаете, кто-то станет догадываться или пользоваться хрустальным шаром?
Кроме того, Вы не привели схемы (и картинок) подключения.
Сам по себе скетч содержит явные ошибки, но разбираться как именно он должен с ними сработать .... если Вам лень написать что он должен делать, то с какого перепугу кому-то будет не лень разбираться?
При правильном соединении, разницы между УНО и Нано нет никакой (обратное неверно).
Думаю это глюки самой НАНы.
Так же бился с одним скетчем, он даже строки нормально отказывался обрабатывать.
При переходе на другую плату, все вдруг заработало.