PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Дополнительные устройства (http://pccar.ru/forumdisplay.php?f=177)
-   -   глюк при включении АРДУИНО, нужен совет (http://pccar.ru/showthread.php?t=23586)

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

Где вы взяли этот скетч, чувствуется моя рука, но кто то в нем покопался?
Попробуйте так:
PHP код:

int ACC 4;
int Hub 5;
int Nexus 6;
int flagACC 0;
unsigned long pauseTime 0;

void setup()
{
pinMode(ACCINPUT);
pinMode(HubOUTPUT);
digitalWrite(HubLOW);
pinMode(NexusOUTPUT);
digitalWrite(NexusLOW);
}
void loop()
{
if (
digitalRead(ACC)== HIGH && flagACC == 0)
{
digitalWrite(NexusLOW);
pauseTime millis();
flagACC 1;
}

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

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

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



mr_nixon 30.10.2015 12:11

Цитата:

Сообщение от lti1 (Сообщение 341992)
Где вы взяли этот скетч, чувствуется моя рука, но кто то в нем покопался?
}[/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

Цитата:

Сообщение от lti1 (Сообщение 341996)
Какой проводок, к какой ноге, Вы можете апеллировать понятиями 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);


Часовой пояс GMT +4, время: 03:46.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot