Массив кнопок с отображением номера нажатой кнопки на дисплее и возможностью пролистывания "страниц"

savetibet
Offline
Зарегистрирован: 26.09.2019

Всем привет. Как бы вы решили следующую задачу?

На плате 88 кнопок с присвоенными номерами (число условное, может быть больше или меньше, но точно больше чем количество входов Arduino), сегментный LED-индикатор, кнопка ">" и кнопка "<". При нажатии на номерную кнопку на индикаторе должен отобразиться ее номер, например, 021. При нажатии на кнопку ">" происходит как бы переход на следующую страницу и нажатие той же номерной кнопки даст уже 121, 221 и т.д. При нажатии на "<", соответственно, переход на предыдущую страницу.

То есть на физической матрице кнопок мы размещаем 8*8*n (n — количество страниц) логических переключателей.

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

матрица кнопок под нужное число, для 88 кнопок - 9х10

Сегментный индикатор - на MAX7219 для экономии пинов.

В чем вопрос - непонятно. Задача чисто экстенсивная. то есть возни много, изюминки - нет.

Клапауций 003
Offline
Зарегистрирован: 20.07.2019

ну... 8*8 = 64 кнопки.

не суть - мы же не математики, мы - сцуко, кибернетики, таксисты и парикмахеры.

*я так понял - он хочет физической матрицей кнопок управлять матрицей массивов в памяти.

двумя кнопками он хочет рулить выборкой индексов массивов.

тогда не понятно - нафига нужна матрица 8*8, если достаточно двух кнопок - "-" и "+" индекса массива и, возможно, ещё одну типа "enter" для фиксации выбора и переходу к следующей операции-выбору.

!кароче - ТС следует начать изучать великий рюзге изык где-то начиная с пятого класса средней школы.

savetibet
Offline
Зарегистрирован: 26.09.2019

Задача не практическая, а типа тестового задания. 

"!кароче - ТС следует начать изучать великий рюзге изык где-то начиная с пятого класса средней школы." Что вам не зашло в моем рюзге изык? Что непонятного я написал?

savetibet
Offline
Зарегистрирован: 26.09.2019

b707 пишет:

матрица кнопок под нужное число, для 88 кнопок - 9х10

Сегментный индикатор - на MAX7219 для экономии пинов.

В чем вопрос - непонятно. Задача чисто экстенсивная. то есть возни много, изюминки - нет.

Не нужно мне нужное количество кнопок.  Мне нужно решить именно ту задачу, что я описал. Изюминки нет, потому что задача не практическая, а для отработки навыков. Тестовое задание, если хотите.

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

Кого тестируют и для чего?

savetibet
Offline
Зарегистрирован: 26.09.2019

sadman41 пишет:

Кого тестируют и для чего?

Да какая разница? Это к делу не относится. Я обозначил входные данные и спрашиваю совета, как лучше реализовать такое. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

дак тестируют-то тебя, а не здешнее саопчество.  как вывернешься - так и будет

savetibet
Offline
Зарегистрирован: 26.09.2019

DetSimen пишет:

дак тестируют-то тебя, а не здешнее саопчество.  как вывернешься - так и будет

Прекрасный ответ. Браво! )) Вот она, помощь старичков...

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

savetibet пишет:

Прекрасный ответ. Браво! )) Вот она, помощь старичков...

Я что-то слаб глазами стал, как та мартышка, и никак не могу разглядеть где тут написано безусловное обещание помощи?

Что до твоего вопроса, так решают подобные задачи написав программу, руками на клавиатуре, используя знания языков С и С++. Рекомендую сперва ознакомиться с языком С по книге Кернигана и Ричи.

savetibet
Offline
Зарегистрирован: 26.09.2019

wdrakula пишет:

savetibet пишет:

Прекрасный ответ. Браво! )) Вот она, помощь старичков...

Я что-то слаб глазами стал, как та мартышка, и никак не могу разглядеть где тут написано безусловное обещание помощи?

Что до твоего вопроса, так решают подобные задачи написав программу, руками на клавиатуре, используя знания языков С и С++. Рекомендую сперва ознакомиться с языком С по книге Кернигана и Ричи.

Ключевой момент моей задачи — это количество кнопок, большее чем количество входов на Ардуино. Я об этом четко написал. Я подразумеваю, что нужно использовать мультиплексор. Но с этим пока не сталкивался, потому и спрашиваю совета. Есть же разные микросхемы-мультиплексоры, я не знаю что выбрать под мою задачу.

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

savetibet пишет:

Да какая разница? Это к делу не относится. Я обозначил входные данные и спрашиваю совета, как лучше реализовать такое. 

я вам ответил в первом же сообщении - но у вас похоже не хватает знаний даже понять ответ. хватает только наглости наезжать на отвечающих.

Повторяю еще раз, хотя и не стоило бы - "матрица кнопок". Для работы с 88 кнопками достаточно 19 входов ардуино

MaksVV
Offline
Зарегистрирован: 06.08.2015

int page = 0;

#define PAGESNUMBER 5  //количество десятков (страниц) кнопок

void setup() 
{
Serial.begin (9600);
}

void loop() 
{
   if (нажата ">") {page++; if (page>PAGESNUMBER) {page=PAGESNUMBER;}}
   if (нажата "<") {page--; if (page<0) {page=0;}}
   if (нажата "такая то") {Serial.println (page*10 + номеркнопки "такая то");}
}

 

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

savetibet пишет:

Я подразумеваю, что нужно использовать мультиплексор.

подразумеваешь - используй.

от нас-то что хотел? :)

savetibet
Offline
Зарегистрирован: 26.09.2019

b707 пишет:

savetibet пишет:

Да какая разница? Это к делу не относится. Я обозначил входные данные и спрашиваю совета, как лучше реализовать такое. 

я вам ответил в первом же сообщении - но у вас похоже не хватает знаний даже понять ответ. хватает только наглости наезжать на отвечающих.

Повторяю еще раз, хотя и не стоило бы - "матрица кнопок". Для работы с 88 кнопками достаточно 19 входов ардуино

Может поясните, как 19 входов может быть достаточным для 88 кнопок?

nik182
Offline
Зарегистрирован: 04.05.2015

Прости, но зачем помогать человеку, который уверен что ему должны помочь за его наличие в этом мире? Что ты такого сделал, что по первому твоему не четкому , не понятному слову старички должны выстроиться в ряд и начать помогать? Задача твоя совершенно не интересная, не имеющая практического выхода. Форум это общение по интересам, а не служба 911 для страждущих. А решение твоей задачи ну очень простое, однако конкретная реализация сильно зависит от оборудования и даже от того те 88 кнопок с фиксацией или нет? Об этом ты тоже не сообщил. Как и о нескольких других мелочах, без которых даже начать советовать стрёмно. 

savetibet
Offline
Зарегистрирован: 26.09.2019

b707 пишет:

savetibet пишет:

Я подразумеваю, что нужно использовать мультиплексор.

подразумеваешь - используй.

от нас-то что хотел? :)

Совета, очевидно.

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

savetibet пишет:

Может поясните, как 19 входов может быть достаточным для 88 кнопок?

а открыть гугль и вбить туда "матрица кнопок" - совсем не судьба?

savetibet
Offline
Зарегистрирован: 26.09.2019

nik182 пишет:

Прости, но зачем помогать человеку, который уверен что ему должны помочь за его наличие в этом мире? Что ты такого сделал, что по первому твоему не четкому , не понятному слову старички должны выстроиться в ряд и начать помогать? Задача твоя совершенно не интересная, не имеющая практического выхода. Форум это общение по интересам, а не служба 911 для страждущих. А решение твоей задачи ну очень простое, однако конкретная реализация сильно зависит от оборудования и даже от того те 88 кнопок с фиксацией или нет? Об этом ты тоже не сообщил. Как и о нескольких других мелочах, без которых даже начать советовать стрёмно. 

Я ничего не сделал, да. Я новичок. И мог не учесть некоторых моментов, как то "кнопки с фиксацией или нет". Если это важный момент, вы могли спросить об этом в первом сообщении. Отвечаю: кнопки без фиксации. О каких еще мелочах я не упомянул, что вам советовать стрёмно?

savetibet
Offline
Зарегистрирован: 26.09.2019

MaksVV пишет:

int page = 0;

#define PAGESNUMBER 5  //количество десятков (страниц) кнопок

void setup() 
{
Serial.begin (9600);
}

void loop() 
{
   if (нажата ">") {page++; if (page>PAGESNUMBER) {page=PAGESNUMBER;}}
   if (нажата "<") {page--; if (page<0) {page=0;}}
   if (нажата "такая то") {Serial.println (page*10 + номеркнопки "такая то");}
}

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

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

послушайте, savetibet - прекращайте уже вести себя так. будто вы начальник, раздающий указания подчиненным. Здесь такого не любят.

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

savetibet
Offline
Зарегистрирован: 26.09.2019

b707 пишет:

послушайте, savetibet - прекращайте уже вести себя так. будто вы начальник, раздающий указания подчиненным. Здесь такого не любят.

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

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

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

ответ я вам дал - дальше сами

savetibet
Offline
Зарегистрирован: 26.09.2019

b707 пишет:

ответ я вам дал - дальше сами

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

savetibet
Offline
Зарегистрирован: 26.09.2019

Я меняю начальные условия задачи — матрица кнопок будет состоять из, скажем, 24х16 кнопок. На индикаторе информация будет выводиться в виде "N.ХХХ", где N — это номер текущей страницы, ХХХ — номер нажатой кнопки.

Уточняю — вопрос сейчас касается именно аппаратной части. А именно — каким образом должно выполняться подключение такого количества кнопок к Arduino UNO?

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

selevo #2

MaksVV
Offline
Зарегистрирован: 06.08.2015

24х16 это 384 кнопки! ещё и страницы нужны О_О.  Ужоснах. С помощью цифр о 0 до 9 (а это матрица 4х4) можно ввести любое число (которое, если хотите, и будет номером кнопки). А то что вы пишете - бредятина. 

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

savetibet пишет:

Я меняю начальные условия задачи — матрица кнопок будет состоять из, скажем, 24х16 кнопок. — каким образом должно выполняться подключение такого количества кнопок к Arduino UNO?

Разрешите выполнять, вашблагородь?

а чего сразу, к примеру,  не 240х160 кнопок? Вы уж не стесняйтесь, сразу ставьте задачку поинтереснее. Не забывайте только, что на Уно всего 22 GPIO. а никакие мультиплексоры не получится наращивать до бесконечности. Ну и на индикатор тоже нужны выходы, хотя на фоне 384 кнопок это уже мелочию

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

MaksVV пишет:

24х16 это 384 кнопки! ещё и страницы нужны О_О.  Ужоснах

видимо совсем плохо дело, отчисление грозит - вот решил "поразить" преподов масштабом проекта :))))

nik182
Offline
Зарегистрирован: 04.05.2015

Несколько микросхем http://www.symmetron.ru/news/maxim-MAX7370.shtml и если использовать индикатор с i2с расширителем, то на все 24х16 +2 кнопки и индикатор от уны потребуется только 4 ноги. Как? Нарисовано прямо на страничке микросхемы.  

bwn
Offline
Зарегистрирован: 25.08.2014

А самое прикольное, что Клапа, сегодня или вчера, даже разместил в своей теме как их можно подключить. Вывод - ТС, ленивая задница, которая ждет, что за нее поищут.

MaksVV
Offline
Зарегистрирован: 06.08.2015

дак ведь, имхо, надо качеством вопрос решать, а не количеством.  Препод поугарать решил похоже и посмотреть как будут вести себя студни. 

savetibet
Offline
Зарегистрирован: 26.09.2019

sadman41 пишет:

selevo #2

Поясните, пожалуйста, ваш ответ.

savetibet
Offline
Зарегистрирован: 26.09.2019

MaksVV пишет:

24х16 это 384 кнопки! ещё и страницы нужны О_О.  Ужоснах. С помощью цифр о 0 до 9 (а это матрица 4х4) можно ввести любое число (которое, если хотите, и будет номером кнопки). А то что вы пишете - бредятина. 

Ну, бредятина не бредятина, это не вам решать. Страницами ведь можно функционал кнопок менять. На одной странице кнопка 1 выполняет одну функцию, допустим. А на странице 2 — другую. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

не пора еще указатель вывешивать? 

savetibet
Offline
Зарегистрирован: 26.09.2019

b707 пишет:

MaksVV пишет:

24х16 это 384 кнопки! ещё и страницы нужны О_О.  Ужоснах

видимо совсем плохо дело, отчисление грозит - вот решил "поразить" преподов масштабом проекта :))))

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

SergSat
Offline
Зарегистрирован: 24.09.2019

Добрый день!

Смею предположить, что по примеру вот такого:

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

savetibet
Offline
Зарегистрирован: 26.09.2019

nik182 пишет:

Несколько микросхем http://www.symmetron.ru/news/maxim-MAX7370.shtml и если использовать индикатор с i2с расширителем, то на все 24х16 +2 кнопки и индикатор от уны потребуется только 4 ноги. Как? Нарисовано прямо на страничке микросхемы.  

Спасибо, изучу. 

bwn
Offline
Зарегистрирован: 25.08.2014

savetibet пишет:

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

Этто врятли. И обороты сбавьте, а то Дед на Сургут отправит.

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

savetibet пишет:

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

тогда это не инфантилизм, а уже маразм

savetibet
Offline
Зарегистрирован: 26.09.2019

SergSat пишет:

Добрый день!

Смею предположить, что по примеру вот такого:

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

Теоретически наверно да. Но в вашем примере кнопок 5 штук. А мне нужно понять, как подключить огромное количество кнопок. 

Представьте панель управления самолетом — там очень много разного рода кнопок.

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

SergSat пишет:

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

спасибо за поддержку, но

1) матрица кнопок это совсем другое

2) по Вашей сземе 384 кнопки не подключить, увы :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

savetibet пишет:

Представьте панель управления самолетом — там очень много разного рода кнопок.

+ 1 Ордуина. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Так. Похоже, ТС себе сертификат уже заработал. 

savetibet
Offline
Зарегистрирован: 26.09.2019

DetSimen пишет:

savetibet пишет:

Представьте панель управления самолетом — там очень много разного рода кнопок.

+ 1 Ордуина. 

Что означает ваш ответ?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ну в самолете же овердохрена кнопок и одна Ардуина, не? 

Клапауций 003
Offline
Зарегистрирован: 20.07.2019

savetibet пишет:

Ключевой момент моей задачи — это количество кнопок, большее чем количество входов на Ардуино. 

не рассказывайте ему про матрицу - он вызовет Нео.

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

SergSat - матрица кнопок это вот: - 32 кнопки на 12 пинов

savetibet
Offline
Зарегистрирован: 26.09.2019

DetSimen пишет:

ну в самолете же овердохрена кнопок и одна Ардуина, не? 

Ну вы слишком буквально это приняли. Я про кабину самолета для примера сказал.
Давайте по-другому скажу — это не настоящий самолет, а некий учебный агрегат, имитирующий работу его систем. 

SergSat
Offline
Зарегистрирован: 24.09.2019

b707 пишет:

SergSat - матрица кнопок это вот: - 32 кнопки на 12 пинов

 

Спасибо!

Буду знать :)

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

Клапауций 003 пишет:

не рассказывайте ему про матрицу - он вызовет Нео.

не вызовет. он явно не "избранный"