Уменьшить количество используемых пинов
- Войдите на сайт для отправки комментариев
Сб, 05/05/2018 - 20:49
Делаю игрушку из 3х3 матрицей TTP223 touch модулей и 3х3 матрицей светодиодов
Суть в том что бы в правильной последовательности нажать кнопки
получилось что нужно 15 пинов возможно ли это как то сделать с меньшим количеством ?
int tuchPins[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; const int ledRows[3] = {10, 11, 12}; const int ledCols[3] = {13, 14, 15}; int code[9] = {5, 7, 9, 1, 3, 2, 4, 6, 8}; int i, state = 0; void setup() { for (i = 0; i < 9; i++) { pinMode(tuchPins[i], INPUT); } for (i = 0; i < 3; i++) { pinMode(ledRows[i], OUTPUT); pinMode(ledCols[i], OUTPUT); } } void loop() { if (state == 8) { //win } if (digitalRead(tuchPins[code[state]-1])==HIGH) { LedOn(code[state]); state++; } else { state = 0; for (i = 0; i < 3; i++) { digitalWrite(ledRows[i], LOW); digitalWrite(ledCols[i], LOW); } } } void LedOn(int number) { switch (number) { case 1: digitalWrite(ledRows[2], HIGH); digitalWrite(ledCols[0], HIGH); break; case 2: digitalWrite(ledRows[2], HIGH); digitalWrite(ledCols[1], HIGH); break; case 3: digitalWrite(ledRows[2], HIGH); digitalWrite(ledCols[2], HIGH); break; case 4: digitalWrite(ledRows[1], HIGH); digitalWrite(ledCols[0], HIGH); break; case 5: digitalWrite(ledRows[1], HIGH); digitalWrite(ledCols[1], HIGH); break; case 6: digitalWrite(ledRows[1], HIGH); digitalWrite(ledCols[2], HIGH); break; case 7: digitalWrite(ledRows[0], HIGH); digitalWrite(ledCols[0], HIGH); break; case 8: digitalWrite(ledRows[0], HIGH); digitalWrite(ledCols[1], HIGH); break; case 9: digitalWrite(ledRows[0], HIGH); digitalWrite(ledCols[2], HIGH); break; default: for (i = 0; i < 3; i++) { digitalWrite(ledRows[i], LOW); digitalWrite(ledCols[i], LOW); } } }
Q2: схему не покажете?
Q1: xто за ардуина у Вас?
A1: Сделать-то можно, только зачем, если пинов хватает?
Q3: А если не хватает, то поставьте нормально задачу - во сколько пинов надо уложиться?
Хватит 9 выводов. 1 вывод на 1 кнопку и 1 светодиод. Кнопка в режиме тригера.
https://youtu.be/N4U56Pd00SQ?t=49
Схемы к сожелению нету
Хотелось бы на нано сделать
вообще интерисует как это сделать и при помощи чего (всмысле меньше пинов) :)
Хватит 9 выводов. 1 вывод на 1 кнопку и 1 светодиод. Кнопка в режиме тригера.
https://youtu.be/N4U56Pd00SQ?t=49
когда не правильно нажимаешь все светодиоды должны погаснуть разве при таком возможно?
а зачем гасить светодиоды. Вам же кодовый замок надо. Правильная последовательность зажигания светодиодов откроет замок.
Хотелось бы на нано сделать
Тогда в чём проблема? Там пинов хватает и ещё лишние остаются.
У Вас что, спортивный интерес?
У Вас что, спортивный интерес?
ага :)
Понятно. Ну тогда ставьте цель (количество в которое надо уложиться) и добивайтесь. Пока цель не поставите - разговор вообще ни о чём.
А ответ на Ваш вопрос такой: всё зависит от внешней обвязки. При правильной обвязке можно обойтись 1 (одним) пином на всё про всё.
TTP223 не совсем кнопка. Это модуль с дискретным выходом. Как Вы его матрицировать собрались, релюхи навешивать? Схему в студию. Экономить на пинах для светодиодов можна при использовании ws8212.
ну щас у меня такое получаеться (не добавлял провода питания и так их много, и да знаю что ето немного не те сенсоры но таких как надо не нашел для программы )
Так тут нет матрицы TTP223. Тут Каждый выход на свой пин. Годно, если пинов хватает. Если нет- светодиоды ws8212 один пин и сдвиговый регистр на ввод - 3 пина. Или даже 2 если по хитрому;) итого 3-4 пина. Можна и 2 сделать, но тогда i2c нужно делать. Можно продолжить и даже на один повесить. Но зачем?
зачем?
Я его уже спрашивал, он ответил, что "спортивный интерес". Тогда я ему тоже сказал, что в идеале - один пин. пусть теперь делает :)
Спасибо!!Тепер понял куда копать :) (просто интересно разобраться)