PDA

Просмотр полной версии : глюк при включении АРДУИНО, нужен совет


mr_nixon
30.10.2015, 10:59
Прблемма связана с переменной NEXUS, а именно
если подключены исключительно реле (4 проводка) и подаёшь внешнее питание, то реле связаное с переменной NEXUS(иноггда 2 раза из 3х) включается на 2 сек и отключается, а если я подключаю провод к ноге 4 , То начинается ложное срабатывание(то в произвольно порядке(раз в сек 15-30), то срабатывание просто от прикосновением пальцами до провода) опять же реле связанного с переменной nexus.
реле местами перекидывал эффекта 0.
А в остальном схема функционирует как надо
***********************СКЕТЧ**********************
int ACC = 4;
int Hub = 5;
int Nexus = 6;
int flagACC = 0;
unsigned long pauseTime = 0;

void setup()
{
pinMode(ACC, INPUT);
}
void loop()
{
if (digitalRead(ACC)== HIGH && flagACC == 0)
{
pinMode(Nexus, OUTPUT);
digitalWrite(Nexus, LOW);
pauseTime = millis();
flagACC = 1;
}

if (millis()-pauseTime>=3000 && flagACC == 1)
{
pinMode(Hub, OUTPUT);
digitalWrite(Hub, LOW);
pauseTime = 0;
}

if (digitalRead(ACC)== LOW && flagACC == 1)
{
digitalWrite(Hub, HIGH);
pauseTime = millis();
flagACC = 0;
}

if (millis()-pauseTime>=2000 && flagACC == 0)
{
{
digitalWrite(Nexus, HIGH);
pauseTime = 0;
}
}
}

lti1
30.10.2015, 12:00
Где вы взяли этот скетч, чувствуется моя рука, но кто то в нем покопался?
Попробуйте так:
int ACC = 4;
int Hub = 5;
int Nexus = 6;
int flagACC = 0;
unsigned long pauseTime = 0;

void setup()
{
pinMode(ACC, INPUT);
pinMode(Hub, OUTPUT);
digitalWrite(Hub, LOW);
pinMode(Nexus, OUTPUT);
digitalWrite(Nexus, LOW);
}
void loop()
{
if (digitalRead(ACC)== HIGH && flagACC == 0)
{
digitalWrite(Nexus, LOW);
pauseTime = millis();
flagACC = 1;
}

if (millis()-pauseTime>=3000 && flagACC == 1)
{
digitalWrite(Hub, LOW);
pauseTime = 0;
}

if (digitalRead(ACC)== LOW && flagACC == 1)
{
digitalWrite(Hub, HIGH);
pauseTime = millis();
flagACC = 0;
}

if (millis()-pauseTime>=2000 && flagACC == 0)
{
{
digitalWrite(Nexus, HIGH);
pauseTime = 0;
}
}
}

mr_nixon
30.10.2015, 12:11
Где вы взяли этот скетч, чувствуется моя рука, но кто то в нем покопался?
}[/PHP]

Спасибо за то что Автор нашёлся, собрал я сам из нескольких(от сюда и из драйв2)-очень похожих.
к сожалению Ваш проблему не исправил+ с флагами чуть у вас не получилось, у меня релюхи управляются LOW и с вашим при включении идёт срабатывание обеих, но это не принципиально.
проблемма выглядит (повторяюсь), если просто соеденительнцй проводок воткнуть в 4 ногу, то начинается произвольное срабатывания Nexus. А если брать и для работы схемы подкулючать на 4 ногу 3,3в и потом откл, то всё работает чётко.
мне кажется проблема тут

if (millis()-pauseTime>=3000 && flagACC == 0) // пауза 2 секунды
{
{
digitalWrite(Nexus, HIGH);
pauseTime = 0;
}

ЗЫ управление как будто сенсорное или емкостное получается и только с одной из переменных Nexus

lti1
30.10.2015, 12:25
Какой проводок, к какой ноге, Вы можете апеллировать понятиями 0 и 1 или хотя бы общий - и +5 в. И схему подключения неплохо бы увидеть, есть подтягивающий резистор на D4? ИМХО Управление по LOW не самый лучший вариант для управления питанием.

mr_nixon
30.10.2015, 12:37
Какой проводок, к какой ноге, Вы можете апеллировать понятиями 0 и 1 или хотя бы общий - и +5 в. И схему подключения неплохо бы увидеть, есть подтягивающий резистор на D4? ИМХО Управление по LOW не самый лучший вариант для управления питанием.

о сорри сча попробую

У меня ARDUINO UNO
нога D4 по которой управляется ACC
если к D4 ничего не подключено и я подаю на неё 5вольт, то схема работает чётко.
А вот если в D4 просто воткнуть провод в разъём и ничего не подавать ни 0 ни 1, то начинаются хаотические срабатывания D6, также срабатывание D6 можно совержить просто коснувшись этого провода рукой.
D6 или например D12 значение не имеет

lti1
30.10.2015, 12:43
Поставьте подтягивающий резистор 10 kOm от общего - к D4.
И всё равно вынести в void setup()
pinMode(Hub, OUTPUT);
digitalWrite(Hub, LOW); или digitalWrite(Hub, HIGH)
pinMode(Nexus, OUTPUT);
digitalWrite(Nexus, LOW); или digitalWrite(Nexus, HIGH);