Уменьшить количество используемых пинов

adread
Offline
Зарегистрирован: 23.01.2018

Делаю игрушку из 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);
      }
  }
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Q2: схему не покажете?

Q1: xто за ардуина у Вас?

A1: Сделать-то можно, только зачем, если пинов хватает?

Q3: А если не хватает, то поставьте нормально задачу - во сколько пинов надо уложиться?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Хватит 9 выводов. 1 вывод на 1 кнопку и 1 светодиод. Кнопка в режиме тригера.

https://youtu.be/N4U56Pd00SQ?t=49

adread
Offline
Зарегистрирован: 23.01.2018

Схемы к сожелению нету

Хотелось бы на нано сделать 

вообще интерисует как это сделать и при помощи чего (всмысле меньше пинов) :) 

adread
Offline
Зарегистрирован: 23.01.2018

qwone пишет:

Хватит 9 выводов. 1 вывод на 1 кнопку и 1 светодиод. Кнопка в режиме тригера.

https://youtu.be/N4U56Pd00SQ?t=49

когда не правильно нажимаешь все светодиоды должны погаснуть разве при таком возможно? 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

а зачем гасить светодиоды. Вам же кодовый замок надо. Правильная последовательность зажигания светодиодов откроет замок. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

adread пишет:

Хотелось бы на нано сделать

Тогда в чём проблема? Там пинов хватает и ещё лишние остаются. 

У Вас что, спортивный интерес?

adread
Offline
Зарегистрирован: 23.01.2018

ЕвгенийП пишет:

У Вас что, спортивный интерес?

ага :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Понятно. Ну тогда ставьте цель (количество в которое надо уложиться) и добивайтесь. Пока цель не поставите - разговор вообще ни о чём.

А ответ на Ваш вопрос такой: всё зависит от внешней обвязки. При правильной обвязке можно обойтись 1 (одним) пином на всё про всё.

Logik
Offline
Зарегистрирован: 05.08.2014

TTP223 не совсем кнопка. Это модуль с дискретным выходом. Как Вы его матрицировать собрались, релюхи навешивать? Схему в студию. Экономить на пинах для светодиодов можна при использовании ws8212.

adread
Offline
Зарегистрирован: 23.01.2018

ну щас у меня такое получаеться (не добавлял провода питания и так их много, и да знаю что ето немного не те сенсоры но таких как надо не нашел для программы )

 

Logik
Offline
Зарегистрирован: 05.08.2014

Так тут нет матрицы TTP223. Тут Каждый выход на свой пин. Годно, если пинов хватает. Если нет- светодиоды ws8212 один пин и сдвиговый регистр на ввод - 3 пина. Или даже 2 если по хитрому;) итого 3-4 пина. Можна и 2 сделать, но тогда i2c нужно делать. Можно продолжить и даже на один повесить. Но зачем?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Logik пишет:

 зачем?

Я его уже спрашивал, он ответил, что "спортивный интерес". Тогда я ему тоже сказал, что в идеале - один пин. пусть теперь делает :)

adread
Offline
Зарегистрирован: 23.01.2018

Спасибо!!Тепер понял куда копать :) (просто интересно разобраться)