Технический форум по робототехнике.
Zusul86 » 23 фев 2017, 13:40
Выше была картинка. Там номиналы резисторов выбираются не от балды, а рассчитываются. Нажатие некой комбинации клавиш может быть идентифицировано, так как ему соответствует вполне конкретное сопротивление запараллеленых резисторов.
dimamichev » 23 фев 2017, 15:27
Посмотрим, ещё раз... Сделал скетч и схему под него...Можно ломать макетный монтаж.
- Код: Выделить всё • Развернуть
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO
//
////////////////////////
//
//программа ЭМИ вариант со светодиодами //
unsigned int n=0;
unsigned int x=0;
unsigned int n1=0;
unsigned int x1=0;
long y1=0;
long y2=0;
int i=0;
int tabl [8] ={0,261,293,329,349,392,
440,494 }; // зашифрованные данные нот – их частоты
void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
pinMode(A0, INPUT);
}
void loop()
{
x=analogRead(A0); n=map(x, 0, 1025, 0, 8);
if ( n>0) {tone (13, tabl[n]);} // исполнение вызванной ноты
else { noTone(13) ;}
//////////////// /////////////// мигающие светодиоды с регулятором частоты ////////////////////////////////////////
y2=millis(); pinMode(A1, INPUT);x1=analogRead(A1); n1=map(x1, 0, 700, 100, 2000);
pinMode(15, OUTPUT);if (i==1){digitalWrite(15,HIGH);}else{digitalWrite(15,LOW);}
if ( y2-y1>=n1&i==1) {y1=y2;i=0;} if ( y2-y1>=n1&i==0) {y1=y2;i=1;}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
//
// Конец /
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- Вложения
-
Dmitry__ » 23 фев 2017, 16:15
Зачем тебе распознавать несколько кнопок, если tone() не умеет играть одновременно несколько нот?
Добавлено спустя 2 минуты 33 секунды:
Если делать несколько кнопок на один пин, то никак не 7 штук на пин, т.к. 7бит цап на резисторах - это вам не хухры-мухры. Максимум 4-5 кнопок можно. А это уже бред, т.к. цифровая матрица кнопок столько же занимает пинов.
А вообще, прекращай минимализмом заниматься, тебе пока пинов хватает, зачем эта мышиная возня?
Добавлено спустя 7 минут 37 секунд:
Про усилитель звука (обещал побухтеть). У тебя плохая схема, т.к. транзистор вкл. в цифровом режиме. До кручения потенциометра от нуля до 0.5v звука не будет, т.к. ранзистор начинает открываться от 0.6v. А потом будет резкое увелич. громкости при очень маленьком диапазоне регулировки, т.к. транзистор имеет довольно большое усиление по току. Чтоб потенциометр адекватно регулировал громкость, надо транзистор перевести в линейный режим - резистор, который стоит послед. динамику, перенести в эмиттер транзистора. Тогда транзистор станет усилителем тока и начнет более линейно меняться громкость от потенциометра.
Этот косяк куда важнее, чем возня с экономией пинов...
Angel71 » 23 фев 2017, 17:18
Dmitry__, халтурщик. во-первых никто не заставляет tone использовать. даже если будет использована tone, всё равно нужно правильно определять, что нажата конкретная кнопка, а не эта фигня, где при нажатии нескольких кнопок будет определяться или не та кнопка или вообще непонятно что происходить будет (вваливается в код, где определяется какая кнопка нажата, дальше не адекватный код, не отлавливающий, что нажато непонятно что и ещё дальше элементарно может сработать то, что срабатывать не должно). во-вторых это аналогично логической операции сравнения, допустим в паскале и си - научили сразу писать "=", а потом годами машинально равно и пишут вместо "==". эту же схему кнопок с номиналами от фонаря, он потом применит ещё где и будет цирк, допустим нажмёт вперёд и вправо, а машинка поедет назад.
dimamichev » 23 фев 2017, 19:04
Ну по коду же понятно, что кроме одной из семи нот ничего играть не будет!!!Причём здесь фигня? Ардуино что, может играть одновременно на нескольких выходах разное?Зачем мне одновременно нажимать три-две-семь кнопок? Ардуино по детски-последовательно-понотно играет и всё! Я наоборот пишу "=", а не "==", хотя разницу между равно и тождественно равно различаю...Где схема (разумная) на одновременное нажатие двух и трёх кнопок и т.д.? (А то и правда как я машинку-робота собирать буду?)Короче , с праздником, друзья!!!
Было желание сделать на 25 кнопок- а вдруг заработает?
Добавлено спустя 4 минуты 16 секунд:
С усилителем счас поэкспериментируем, я честно не усиливал, а вывод платки от динамика спасал...
Добавлено спустя 1 час 2 минуты 15 секунд:
Попробовал так: от плюса-динамик, транзистор,резистор-минус. Ничего в громкости и пороге появления звука не изменилось (может мизер-мизер). Попробовал так: от плюса - транзистор, резистор, динамик - минус. Результат - чуть хуже. Уменьшил резистор с 82 до 27 Ом - так же. Базовый резистор убирать совсем- стрёмно...
Добавлено спустя 7 минут 25 секунд:
Ну и напоследок, почему вы считаете что номиналы резисторов в схеме от балды? Они все строго одинаковые (в теории должны быть)иначе этот "map-перемап" будет на двух кнопках одну ноту держать или одна из крайних кнопок не будет гудеть.
Zusul86 » 23 фев 2017, 19:15
dimamichev » 23 фев 2017, 21:20
По ссылкам про кнопки ещё раз пробегусь... Стал в схему по одной добавлять до 10 плюс резисторы до 10. В скетче строка n=map(x, 0, 1025, 0,
;меняем просто 8 на 9 на 10 - и стало быть и т.д. (конечно не забываем про массив с частотами нот). Вообщем можно и 25 кнопок посадить.
Добавлено спустя 1 минуту 38 секунд:Рожица вместо 8 и ) чегойто получилась...
Dmitry__ » 23 фев 2017, 21:37
Angel71 писал(а):Dmitry__, халтурщик
Сам ты это слово
Angel71 писал(а):всё равно нужно правильно определять, что нажата конкретная кнопка, а не эта фигня, где при нажатии нескольких кнопок будет определяться или не та кнопка или вообще непонятно что происходить будет
Ого, у тебя есть правило определения нужной кнопки при нажатии нескольких ненужных? Да ты гений.
Angel71 писал(а):дальше не адекватный код, не отлавливающий, что нажато непонятно что и ещё дальше элементарно может сработать то, что срабатывать не должно
Сейчас обсуждаем аппаратную реализацию...
Angel71 » 23 фев 2017, 23:03
так схема и код сильно связаны. в данном случае для как ты выразился "неокрепших мозгов", такая схема ничего кроме лишних сложностей и возможных ошибок не предвещает. +потом будет ещё где такой вариант мастырить и вот не факт, что будет так же безобидно с результатами работы железки.
"где написано "ненужная"? если нажимается кнопка 2 и 5, то обработчик не должен выдать, что нажата кнопка 1 или 8 или ещё какая из не нажатых. обработчик должен выдать одну или более из нажатых или что нажата некая комбинация, которую он не может обработать (по ситуации, иногда вполне можно вернуть, что ничего не нажато). а теперь внимательно посмотри схему выше и код
- Код: Выделить всё • Развернуть
x=analogRead(A0); n=map(x, 0, 1025, 0, 8);
if ( n>0) {tone (13, tabl[n]);} // исполнение вызванной ноты
else { noTone(13) ;
Dmitry__ » 23 фев 2017, 23:30
Angel71 писал(а):так схема и код сильно связаны.
В данном случае, ничего не связано. Если человек поймет, что вешать на один пин 100500 перделок не есть хорошо, то дальнейший твой анализ его кода - бессмыслен
Твои знания по "==" и " : ? " радуют, но они лишние...
Добавлено спустя 3 минуты:Кстааааааа, да, а вот то что ты не заметил его усилителя с потенциометром - вот это есть базис и твоих проблем
Добавлено спустя 6 минут 20 секунд:Разверну тему:
Если ты не видишь на его схеме косяков с усилителем, и все тут хором докопались до 7-ми кнопок на цап, то как бы это сказать? Это просто понты. Или ты-таки знаешь про процент точности резисторов, проблему Vref-ов и.т.д?
dimamichev, тебе все тут советуют "как трахнуть на Красной площади", осталось только выбрать кого слушать
Angel71 » 23 фев 2017, 23:43
о том, что на резисторах вариант не очень и что не помешает вообще всё с нуля переделать, уже давно написано, т.е. проигнорировано.
да заметить то заметил многое, только от постоянных метаний от одной штукенции к другой и вот этой чудной схемки
как то немного не хочется даже затрагивать некоторые моменты, тем более когда не закончив доводить до ума одни блоки, продолжает с только ему понятной логикой лепить другие.
Dmitry__ » 24 фев 2017, 00:12
Ну так ты на название темы посмотри.
Тут не асы письками меряются. Ну не видит он на повторенной тобой картинке проблем, и что? Какой совет-то будет? Перепахать 100500 талмудов по электронике? А, ты это уже сделал
. Пройди мимо...
Я до тебя докопался не зря, пытаюсь поднять уровень пиписькомера, что со схемой усилителя? Как вы можете докопаться до r-2r цап на кнопки и не видеть усилителя? Патамучта сам лошара, да?
Angel71 » 24 фев 2017, 01:16
т.е. не осилил предыдущее сообщение, молодец. на схеме хоть хоть один нормальный блок сначала найди. перед двумя смайликами хорошо подумал? зря. пойми, если тебе подсовывают что-то новое, это не значит, что нужно переключить внимание на это, бросая текущее.
Dmitry__ » 24 фев 2017, 06:25
Angel71 писал(а):т.е. не осилил предыдущее сообщение, молодец. на схеме хоть хоть один нормальный блок сначала найди
Чего мне там искать? Про эту схему сразу сказал ему - хлам. Все, проехали, забыли.
Angel71 писал(а):перед двумя смайликами хорошо подумал?
Да, а шо?
Обзывать уважаемого Диму халтурщиком можно, а тебя лошарой нельзя? Я против таких правил
Angel71 » 24 фев 2017, 07:04
т.е. даже не осознаёшь, что ляпнул? мило.