Проблемы с обработкой входящих сигналов
- Войдите на сайт для отправки комментариев
Пт, 31/03/2017 - 14:26
Приветствую.
Возникла проблема с обработкой контроллером сигналов на пинах.
Условие весьма тривиальное:
При наличии сигнала на 1 пине выдавать напряжение на второй пин, тем самым, включая светодиод
При наличии сигнала на другом пине, соответственно включать другой светодиод.
Сигналы подаются на пины через кнопки.
Проблема:
При нажатии любой кнопки срабатывают оба светодиода одновременно.
Схема подключения тут: https://circuits.io/circuits/4500741-w-counter-test
Скетч:
int led = 13;
int hot = 7;
int cold = 5;
int getCold, getHot;
// the setup routine runs once when you press reset:
void setup() {
pinMode(led, OUTPUT);
pinMode(hot, INPUT);
pinMode(cold, INPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
getCold = digitalRead(cold);
getHot = digitalRead(hot);
if (getHot == HIGH)
{
digitalWrite(9, HIGH);
digitalWrite(led, HIGH);
}
else
{
digitalWrite(9, LOW);
digitalWrite(led, LOW);
}
if (getCold == HIGH)
{
digitalWrite(A10, HIGH);
digitalWrite(led, HIGH);
}
else
{
digitalWrite(10, LOW);
digitalWrite(led, LOW);
}
delay(100);
}Что может быть не так?
1. Нафига кнопки соединены вместе (чёрным проводом)? Типа, резистор экономим? Получается элемент OR, и сигнал появляется на обоих пинах при нажатии любой кнопки.
2. Что делает пин А10 в строке 34?
1. Ага, решил сэкономить на подтягивающем резисторе, видимо, неудачно.
2. Косяк от прошлой редакции кода.
Теперь все как надо, спасибо.
Если можно в эту тему еще вопрос:
как правильно подобрать резисторы для делителя, чтобы и ток впустую не гулял от плюса к земле и потери при нагрузке были минимальны. Тем самым увеличить срок работы от батареи?
Вы про подтягивающий резистор или про делитель, результат которого аналоговым входом будете читать?
Про делитель, идущий после источника питания. Да, его результат планируется читать аналоговым входом для оценки уровня заряда источника.
Понятно, значит Вы не собираетесь читать его с бешенной частотой, а так типа разок в секунду и хватит. Тогда можете смело ставить делитель из двух резисторов примерно на 1Мом в сумме ну, там +/- 50% - не важно.
Если бы Вам надо было читать с максимальной возможной частотой, то там такие большие нельзя. Там надо, чтобы выходное сопротивление делителя (это почти тоже, что сопротивление резисторов делителя соединённых параллельно) было не более 10К
Большое спасибо за помощь.