Подключение нагрузки по наличию сигнала

Харон

✩✩✩✩✩✩✩
7 Авг 2018
11
0
Привет коллеги!!!
Собственно хотел сделать свой первый маленький проект по подключению нагрузки через реле. Читал много, смотрел разные уроки и ни как не смог всё равно написать правильный код.
В связи с этим прошу помощи и указать на мои ошибки.
А теперь про сам проект.
Смысл: по наличию сигнала с линейного выхода магнитолы должен подключиться внешний усилитель(через 1 сек-пока не реализовано), естественно через реле. Следовательно при отсутствие сигнала усилитель должен отключиться через 3сек(в коде пока это не реализовано).
Вы спросите на фига этот геморрой? Дело в том что при отключении сигнала управляющим вкл/выкл усилителя в ШТАТНОЙ магнитоле проходят переходные процессы и в момент отключения происходит скачок в линейной выходе магнитолы, усилитель соответственно усиливает сигнал и в динамиках проходит ХЛОПОК (очень неприятный). Вот.
Наличие: Arduino nano, резистор 10к, реле.
Текст кода:

C++:
#define pin 0

int val;

void setupe () {

pinMode (6, OUTPUT);

Serial.begin (9600);

}

void loop () {

val = analogRead (pin);

map (val,0,1023,0,20);

constrain (val,0,20);

if (val>1 && val<20) {digitalWrite(6,HIGH); }

else { digitalWrite (6,LOW);}

Serial.print (" A0: ");

Serial.println(val);

}
Что мне показывает монитор: при подаче на А0 +5В : 1023, при подаче 3,3В: 703. Хотя должен показывать значение в диапазоне 0-20, такого не происходит.
На D6 сигнал не появляется следовательно я не могу запустить реле.

Подскажите пожалуйста где я ошибся? В чем?
 

Вложения

Последнее редактирование модератором:

Харон

✩✩✩✩✩✩✩
7 Авг 2018
11
0
setupE - опечатка )))
Про А0 понял. А в целом правильно?
 

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
1,470
301
Москва
wan-derer.ru
Надо схему смотреть.
Надо организовать вход так чтобы помехи не лезли.
Потом ты говорил что включение должно осуществляться с задержкой. Сейчас её нет.
 

neonid

✩✩✩✩✩✩✩
9 Авг 2018
19
8
Анапа
можно сделать задержку через транзистр и кондер и не делать через Arduino
 

Харон

✩✩✩✩✩✩✩
7 Авг 2018
11
0
Поверь мне, не получится. Я перепробовал различные варианты и схемы. Самый простой это через контроллер и реле/транзистор.
Кстати основной код для включения и выключения реле я сделал, а вот с задержкой включения и выключения пока не решил проблему. Завтра выложу готовый код.
 

neonid

✩✩✩✩✩✩✩
9 Авг 2018
19
8
Анапа
@Wan-Derer, вот вторая схема. эта схема задержки, объединив их можно сделать теймер задержки старта-стопа. И еще через пару резисторов и кондера и транзистора сделать детектор звука

ff68b9u-960.jpg
 

Thug Robot

✩✩✩✩✩✩✩
8 Сен 2018
8
1
@Харон ты не совсем правильно используешь функцию map.
Обозначь еще один global int напимер int changed_val и затем сделай следующее changed_val = map (val,0,1023,0,20)
И уже в последующем используй свое новое значение
 

Thug Robot

✩✩✩✩✩✩✩
8 Сен 2018
8
1
C++:
#define pin A0

int val;
int changed_val;

void setup() {

pinMode (6, OUTPUT);

Serial.begin (9600);

}

void loop () {

val = analogRead (pin);

changed_val = map (val,0,1023,0,20);

changed_val = constrain (changed_val,0,20); //хотя как по мне это не нужно

if (changed_val>1 && val<20) {
digitalWrite(6,HIGH);
}
else {
digitalWrite (6,LOW);
}

Serial.print(" A0: ");

Serial.println(changed_val);

}