Помогите собрать счетчик для пинбола

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

Иметься шкаф с пейнтбольным оружием в количестве 150 штук + имеется табло где отображается есть в наличии оружия или нет, индикатором красного нет в наличии зеленый на месте. С помощью замыкания кнопки

 Задача сделать счетчик который будет считать от общего количество сколько  выдано сколько осталось? Помогите как это все собрать 

b707
Offline
Зарегистрирован: 26.05.2017

Это вы разделом ошиблись. Вам в "Ищу исполнителя"

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

Не понял, пинбол или пейнтбол? Это слегка так разные вещи.

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

пейнтбол

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

Хорошо, а по сути Вам уже ответили в #1

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

бюджета нет своими силами, думал может кто то делал подскажет в каком направлении  двигаться 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

alisher_sidikov@mail.ru пишет:

бюджета нет своими силами, думал может кто то делал подскажет в каком направлении  двигаться 

можно попробовать попросить профинансировать alisher_usmanov... )))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

alisher_sidikov@mail.ru пишет:

бюджета нет своими силами, думал может кто то делал подскажет в каком направлении  двигаться 

А какая разница, подскажет кто или нет, Вы ведь все равно не собираетесь двигаться в подсказанном направлении, а ждете халявы.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Короче - идея такая (0,5 спирта стоит) - на каждую ячейку ставим реле, его контакт считываем, например, мультиплексором.  

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

не кто халявы не ждет 

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

делаю для себя, что бы в дальнейшем использовать и двигаться в этом направлении 

b707
Offline
Зарегистрирован: 26.05.2017

В каждую ячейку кнопку, сигналы через сдвиговые регистры

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

b707 пишет:
В каждую ячейку кнопку, сигналы через сдвиговые регистры

Не прокатит. Тут читать надо, а не писать.

sadman41
Offline
Зарегистрирован: 19.10.2016

Что за дурацкая манера у каждого второго новичка - ждать, пока его начнут расспрашивать, облизывать, варианты притаскивать в зубах. Топикстартер же при этом вообще не пытается мозгом шевелить, прямо как блонди в спа.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

alisher_sidikov@mail.ru пишет:

делаю для себя, что бы в дальнейшем использовать и двигаться в этом направлении 

Ну так и продолжайте делать, зачем на форуме создавать бессмысленные темы?

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

для вас лично если что то не нравится пожалуйста не смотрите или не можете подсказать, толку от вас 0

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

Вас это то же касается нахрена смотреть если не можешь подсказать, с деньгами людой может и не обращался сюда, немого свои мозги напрягите прежде чем писать хрен 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

То есть Вы искренне полагаете, что "немного напрячь мозги прежде чем" создавать тему, совершенно необязательно?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

10т.р. программа  и схема.

sadman41
Offline
Зарегистрирован: 19.10.2016

alisher_sidikov@mail.ru пишет:

толку от вас 0


А от вас сколько толку - 500 штоли?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Да в шопу - ТС ничего не понимает. Модераторы- переместите в платный раздел или в отвлеченные темы.

Green
Offline
Зарегистрирован: 01.10.2015

Сидиков, ставьте кнопки сначала - 150 штук. Берёшь ружжо - кнопка срабатывает. Без этого никуда.

b707
Offline
Зарегистрирован: 26.05.2017

Green пишет:

Сидиков, ставьте кнопки сначала - 150 штук. Берёшь ружжо - кнопка срабатывает. Без этого никуда.

да не нужны ему советы, ему нужен готовый код, не понятно что ли :)

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

это уже я сделал установи на каждую ячейку кнопку при отсутствии оружия  индикатор на табло горит красный. Хотел реализовать подсчет оружия не знаю даже с чего начать перерыл интернет. Примерный образец взять

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

примерно что нужно а написать  прогу я сам напишу 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

alisher_sidikov@mail.ru пишет:

примерно что нужно а написать  прогу я сам напишу 

Примерно поставить достаточное количество мультиплексоров, опрашивать их и складывать результаты. Выдать на какой-то экран.

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

спасибо 

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Нафиг мультиплексоры не нать! Нужно 150 диодов и собрать все матрицей 10х15. Нужно будет 25 входов использовать. Arduino Mega в помощь. Дальше ищете инфу о матричной клавиатуре, как ее считывать. Допустим в цикле считывания кнопок делаем проверку нажата - прибавляем переменной единичку, не нажата не прибавляем. На выходе из цикла получите количество нажатых кнопок. 

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Пример матрицы (4х4):

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Пример кода для опроса кнопок

byte row[4] = {2,3,4,5}; //строки матрицы
byte col[4] = {6,7,8,9}; //столбцы матрицы
int quantity = 0; //количество нажатых кнопок

void setup(){
  for (int i=0, i<4, i++){
    pinMode(col[i], OUTPUT);       //выводы столбцов на выход
    digitalWrite(col[i], HIGH);   //устанавливаем высокий уровень
  }
  for (int i=0, i<4, i++){
    pinMode (row[i], INPUT_PULLUP); //выводы строк на вход с подтяжкой
  }
  Serial.begin(9600);
}
void loop(){
  quantity = 0;                   //обнуляем переменную перед цыклом
  for (int i=0, i<4, i++){        //перебираем столбцы
    digitalWrite(col[i], LOW);     //устанавливаем низкий уровень
    delay(1);                    //ждем окончания переходных процессов
                                //актуально для длинных линий
      for (int j=0, j<4, j++){    //перебираем строки
        quantity += !digitalRead(row[j]); //если кнопка нажата прибавляем единицу переменной
      }
    digitalWrite(col[i], HIGH); //возвращаем вывод столбца в высокий уровень
    delay(1);  
  }
  Serial.println(quantity);   //выводим в порт количество нажатых кнопок
  delay(1000);                //задержка чтобы в порт не сыпать
                              //в реальной программе не нужна
}

 

Green
Offline
Зарегистрирован: 01.10.2015

anatoli_nik пишет:

Нафиг мультиплексоры не нать! Нужно 150 диодов и собрать все матрицей 10х15. Нужно будет 25 входов использовать. Arduino Mega в помощь.


Вот это он наплетёт паутины! Бедный Сидиков.(

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

На все 150 кнопок и выводом на LCD 1602 типа такого

#include <LiquidCrystal.h>

const int rs = 30, en = 31, d4 = 32, d5 = 33, d6 = 34, d7 = 35; //назначаем выводы дисплея
                                                                //типа 1602 (HD44780, KS0066)
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);          

byte row[10] = {2,3,4,5,6,7,8,9,10,11}; //строки матрицы
byte col[15] = {12,13,14,15,16,17,18,19,20,21,22,23,24,25,26}; //столбцы матрицы
int quantity = 0; //количество нажатых кнопок

void setup(){
  for (int i=0; i<15; i++){
    pinMode(col[i], OUTPUT);       //выводы столбцов на выход
    digitalWrite(col[i], HIGH);   //устанавливаем высокий уровень
  }
  for (int i=0; i<10; i++){
    pinMode (row[i], INPUT_PULLUP); //выводы строк на вход с подтяжкой
  }
  lcd.begin(16,2);  //Дисплей 16 столбцов 2 строки
  
  
}
void loop(){
  quantity = 0;                   //обнуляем переменную перед цыклом
  for (int i=0; i<15; i++){        //перебираем столбцы
    digitalWrite(col[i], LOW);     //устанавливаем низкий уровень
    delay(1);                    //ждем окончания переходных процессов
                                //актуально для длинных линий
      for (int j=0; j<10; j++){    //перебираем строки
        quantity += !digitalRead(row[j]); //если кнопка нажата прибавляем единицу переменной
      }
    digitalWrite(col[i], HIGH); //возвращаем вывод столбца в высокий уровень
    delay(1);  
  }
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Buttons pressed:");
  lcd.setCursor(0,1);
  lcd.print(String(quantity) + " pcs");
}

 



 
anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Цитата:
Вот это он наплетёт паутины! Бедный Сидиков.(

Что просил, то получил. А что это будет не очень просто, так это уже не мои проблемы.

Цитата:
10т.р. программа  и схема.

Обломишься! Работы на час.

b707
Offline
Зарегистрирован: 26.05.2017

На 595 регистрах проще

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Работа

Green
Offline
Зарегистрирован: 01.10.2015

b707 пишет:
На 595 регистрах проще
Да, только наоборот. Из параллельного в последовательный.)
 

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

b707 пишет:
На 595 регистрах проще

Вам виднее....

150/8 = 19 микросхем, плюс 150 резисторов.

против 150 диодов.

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

В этом варианте количество кнопок ограничено только количеством выводов Ардуино. Если оставить дисплей (6 выводов), и не трогать UART, то имеем 68(всего)-2(UART)-6(дисплей)=60 выводов. А это матрица 30х30, т.е. 900 кнопок!

#include <LiquidCrystal.h>

const int rs = 30, en = 31, d4 = 32, d5 = 33, d6 = 34, d7 = 35; //назначаем выводы дисплея
                                                                //типа 1602 (HD44780, KS0066)
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);          

byte row[] = {2,3,4,5,6,7,8,9,10,11}; //строки матрицы
byte col[] = {12,13,14,15,16,17,18,19,20,21,22,23,24,25,26}; //столбцы матрицы
int rowPcs = sizeof(row)/sizeof(row[0]);
int colPcs = sizeof(col)/sizeof(col[0]);
int quantity = 0; //количество нажатых кнопок

void setup(){
  for (int i=0; i<colPcs; i++){
    pinMode(col[i], OUTPUT);       //выводы столбцов на выход
    digitalWrite(col[i], HIGH);   //устанавливаем высокий уровень
  }
  for (int i=0; i<rowPcs; i++){
    pinMode (row[i], INPUT_PULLUP); //выводы строк на вход с подтяжкой
  }
  lcd.begin(16,2);  //Дисплей 16 столбцов 2 строки
  
  
}
void loop(){
  quantity = 0;                   //обнуляем переменную перед цыклом
  for (int i=0; i<colPcs; i++){        //перебираем столбцы
    digitalWrite(col[i], LOW);     //устанавливаем низкий уровень
    delay(1);                    //ждем окончания переходных процессов
                                //актуально для длинных линий
      for (int j=0; j<rowPcs; j++){    //перебираем строки
        quantity += !digitalRead(row[j]); //если кнопка нажата прибавляем единицу переменной
      }
    digitalWrite(col[i], HIGH); //возвращаем вывод столбца в высокий уровень
 //   delay(1);  //Убрано т.к. ни на что не влияет, только дополнительная задержка
  }
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Buttons pressed:");
  lcd.setCursor(0,1);
  lcd.print(String(quantity) + " pcs");
}

 

alisher_sidikov...
Offline
Зарегистрирован: 23.01.2021

Спасибо большое уже работаю над этим 

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Ошибся в подсчетах кнопок: 54(цифровых)+16(аналоговых)=70входов

70-2(UART)-6(LCD) = 62, т.е. матрица 31х31=961кнопка.

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Время одного цикла опроса (150кнопок) и вывода на дисплей в микросекундах (обведено красным):

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

И полный атас, сканирование 961 кнопки. Обведено: 

-белым количество кнопок;

-красным количество строк и столбцов;

-зеленым количество нажатых кнопок;

-синим время цикла (looop) микросекунд.

svm
Offline
Зарегистрирован: 06.11.2016

anatoli_nik пишет:

И полный атас, сканирование 961 кнопки. Обведено: 

0,075 секунды это много?

И еще Вы пишете " есть шкаф со 150 кнопками и табло с 300 лампочками(красные и зеленые)". Если это есть, то нужна хотя-бы схема соединений. И отталкиваться нужно от нее. Или Вы все переделывать будете?

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

svm пишет:

1) 0,075 секунды это много?

2) И еще Вы пишете " есть шкаф со 150 кнопками и табло с 300 лампочками(красные и зеленые)". Если это есть, то нужна хотя-бы схема соединений. И отталкиваться нужно от нее. Или Вы все переделывать будете?

1) ИМХО нет. Но местным "гуро" виднее....

2) Я не писал такого

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

anatoli_nik пишет:

Но местным "гуро" виднее....

Просто интересно, Вы различаете "Гуро" и "гуру" или для Вас это одно и то же?

svm
Offline
Зарегистрирован: 06.11.2016

anatoli_nik пишет:

svm пишет:

1) 0,075 секунды это много?

2) И еще Вы пишете " есть шкаф со 150 кнопками и табло с 300 лампочками(красные и зеленые)". Если это есть, то нужна хотя-бы схема соединений. И отталкиваться нужно от нее. Или Вы все переделывать будете?

1) ИМХО нет. Но местным "гуро" виднее....

2) Я не писал такого

Извиняюсь первый пост не Ваш.

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

andriano пишет:

Просто интересно, Вы различаете "Гуро" и "гуру" или для Вас это одно и то же?

По большинству ответов можно судить что даже не "гуро" а "гуано".