Купюроприемник + ардуина
- Войдите на сайт для отправки комментариев
Добрый день!
Ребята нуждаюсь в помощи.
Есть кюпюроприемник ICT P85. Подключен к ардуино в пульсе. Суть протокола банально проста: Когда запихтиваем в кюпюроприемник деньги он замыкает 2 контакта несколько раз. Накидал скетч для подсчета количества замыканий, все работает. Посчитать получилось. Проблема в следующем: Нужно подключить кнопку, при нажатии на укоторую загорается светодиод НО только приусловии что количество денег (замыканий) >=5.
int a = 0; const int kupura = 2; int buttonstate = 0; void setup() { Serial.begin(9600); pinMode(kupura, INPUT); } void loop() { buttonstate= digitalRead(kupura); if (buttonstate == HIGH) { a++; delay(250); Serial.println(a); } }
Интуитивно понимаю что нужно использовать do...while, или for но как это правильно написать не понимаю(((
Поскольку в программировании я новичек, как в принципе и в эллектрониек - прошу помощи знающих людей. Натолкните на мысль, особо благодарен буду за пример.
Добавляем к вашему коду
Kshyshtov - спасибо!!!
Код который вы мне написали выше работает отлично. Соеденив 2 в 1, так сказать, добился требуемого результата. В итоге сейчас скетч иеет следующий вид:
Но есть одна маленькая загвоздка, если нажать и не отпускать кнопку buttonpin =4; то светодиод продолжает гореть не обращая внимание на код
Если нажать на кнопку кратко - код отрабатывается нормально. Не пойму в чем проблема. Подскажите куда копать? и на что смотреть?
Спасибо.
Добавляете флаг, который будет менять свое значение (с 0 на 1) при нажатии на кнопку, а питание светодиода будет зависеть от значения этого флага.
Т.е. флаг изначально имеет значение 0. Когда кнопка нажата, флаг принимает значение 1. Светодиод зажигается если a>=5 и флаг равен 1.
Дальше указывем сколько времени будет гореть светодиод, прежде чем флаг вновь примет значение 0.
Kshyshtov cделал все как вы советовали
Все работает отлично:)
Спасибо вам за помощь! Розобрался как работают условия. Сначала немного запутался, но потом понял свою ошибку:)
Следующий этап подключить серводвигатель, дисплей и датчики. Планируется собрать вендинговый аппарат. Буду изучать грабли дальше.
Спасибо!!!
Всегда пожалуйста. Удачи вам ;)
А я пошел разгребаться со своими граблями
ха. кошмарики как и в соседней теме, только здесь еще пристуствует купюроприемник!!
вообще ардуина и купюроприемник совместимы еще хуже, чем ардуина и носос )) уж эту задачу однозначно нужно решать с привлечением прерываний вместо digitalread(), иначе вы будете пропаривать иногда срабатывания датчика из-за наличия функций delay() и Serial.print().
Человек задает конкретный вопрос и получает вполне конкретный ответ. Все остальное - это опыт, полученный в результате проб и ошибок. В противном случае, на всем готовом научиться не возможно. ;)
> Человек задает конкретный вопрос и получает вполне конкретный ответ. Все остальное - это опыт, полученный в результате проб и >ошибок. В противном случае, на всем готовом научиться не возможно. ;)
- где я нахожусь ?
- вы находитесь в воздушном шаре.
хотя это же иго идея была - учиться на купюроприемнике, но должно же быть чувство сострадания в конце концов. я уже не говорю о том, что в его исходном варианте переменная а переполняется.
Не вижу смысла продолжать наш спор. ))) Вы заскучали и вам не с кем поговорить?
Если есть желание, сделайте все за автора темы.
З.ы.: сострадание, конечно, же есть. Именно поэтому мой ответ был таков
Добрый день!
ув. Maverik
Вы писали что в моем скетче переменная переполняется. Обьясние если Вам не тяжело как это - переполняется?
З.ы. Я действительно новичек, и только пытаюсь разобратся. Вместо того что бы писать что "Все фигня, так не делают, это кошмар" и тому подобное, лучше ткните носом на ошибка и пните в напревлении в котором нужно копать. Это гараздо полезней чем разводить демагогии что ТС - лузер. Это касается не только этой темы и меня, но большинства ребят которые задают вопросы на подобных форумах.
int
a = 0;
a++;// после достижения переменной значения "32768", следующее "а++" даст результат "минус 32768"
и в мыслях такого не было. обращение было не к Вам, а к более опытным товарищам, которые дают "точные ответы" вроде известного "вы находитесь в воздушном шаре".
В данном случае, переменная "а" сбрасывается в ноль при определенных условиях.
Если я правильно понимаю суть слова переполнение. Это достижение этих значений переменной --32768 ?
Да спасибо. Я так и думал. Спасибо за ответ.
Ребята! помогите тут, Пожалуйста!!!
http://arduino.ru/forum/obshchii/arduino-optopara#comment-258294