roboforum.ru

Технический форум по робототехнике.

Вопросы новичка.

Re: Вопросы новичка.

Zusul86 » 23 фев 2017, 13:40

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

Re: Вопросы новичка.

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;}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       }
//
// Конец /
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   
Вложения
эми 2 со светодиодами.jpg

Re: Вопросы новичка.

Dmitry__ » 23 фев 2017, 16:15

Зачем тебе распознавать несколько кнопок, если tone() не умеет играть одновременно несколько нот?

Добавлено спустя 2 минуты 33 секунды:
Если делать несколько кнопок на один пин, то никак не 7 штук на пин, т.к. 7бит цап на резисторах - это вам не хухры-мухры. Максимум 4-5 кнопок можно. А это уже бред, т.к. цифровая матрица кнопок столько же занимает пинов.
А вообще, прекращай минимализмом заниматься, тебе пока пинов хватает, зачем эта мышиная возня?

Добавлено спустя 7 минут 37 секунд:
Про усилитель звука (обещал побухтеть). У тебя плохая схема, т.к. транзистор вкл. в цифровом режиме. До кручения потенциометра от нуля до 0.5v звука не будет, т.к. ранзистор начинает открываться от 0.6v. А потом будет резкое увелич. громкости при очень маленьком диапазоне регулировки, т.к. транзистор имеет довольно большое усиление по току. Чтоб потенциометр адекватно регулировал громкость, надо транзистор перевести в линейный режим - резистор, который стоит послед. динамику, перенести в эмиттер транзистора. Тогда транзистор станет усилителем тока и начнет более линейно меняться громкость от потенциометра.
Этот косяк куда важнее, чем возня с экономией пинов...

Re: Вопросы новичка.

Angel71 » 23 фев 2017, 17:18

Dmitry__, халтурщик. во-первых никто не заставляет tone использовать. даже если будет использована tone, всё равно нужно правильно определять, что нажата конкретная кнопка, а не эта фигня, где при нажатии нескольких кнопок будет определяться или не та кнопка или вообще непонятно что происходить будет (вваливается в код, где определяется какая кнопка нажата, дальше не адекватный код, не отлавливающий, что нажато непонятно что и ещё дальше элементарно может сработать то, что срабатывать не должно). во-вторых это аналогично логической операции сравнения, допустим в паскале и си - научили сразу писать "=", а потом годами машинально равно и пишут вместо "==". эту же схему кнопок с номиналами от фонаря, он потом применит ещё где и будет цирк, допустим нажмёт вперёд и вправо, а машинка поедет назад.

Re: Вопросы новичка.

dimamichev » 23 фев 2017, 19:04

Ну по коду же понятно, что кроме одной из семи нот ничего играть не будет!!!Причём здесь фигня? Ардуино что, может играть одновременно на нескольких выходах разное?Зачем мне одновременно нажимать три-две-семь кнопок? Ардуино по детски-последовательно-понотно играет и всё! Я наоборот пишу "=", а не "==", хотя разницу между равно и тождественно равно различаю...Где схема (разумная) на одновременное нажатие двух и трёх кнопок и т.д.? (А то и правда как я машинку-робота собирать буду?)Короче , с праздником, друзья!!!
Было желание сделать на 25 кнопок- а вдруг заработает?

Добавлено спустя 4 минуты 16 секунд:
С усилителем счас поэкспериментируем, я честно не усиливал, а вывод платки от динамика спасал...

Добавлено спустя 1 час 2 минуты 15 секунд:
Попробовал так: от плюса-динамик, транзистор,резистор-минус. Ничего в громкости и пороге появления звука не изменилось (может мизер-мизер). Попробовал так: от плюса - транзистор, резистор, динамик - минус. Результат - чуть хуже. Уменьшил резистор с 82 до 27 Ом - так же. Базовый резистор убирать совсем- стрёмно...

Добавлено спустя 7 минут 25 секунд:
Ну и напоследок, почему вы считаете что номиналы резисторов в схеме от балды? Они все строго одинаковые (в теории должны быть)иначе этот "map-перемап" будет на двух кнопках одну ноту держать или одна из крайних кнопок не будет гудеть.

Re: Вопросы новичка.

Zusul86 » 23 фев 2017, 19:15

http://codius.ru/articles/Arduino_Подключение_нескольких_кнопок_к_одному_аналоговому_входу
https://www.terraelectronica.ru/news_ushki.php?ID=42

Re: Вопросы новичка.

dimamichev » 23 фев 2017, 21:20

По ссылкам про кнопки ещё раз пробегусь... Стал в схему по одной добавлять до 10 плюс резисторы до 10. В скетче строка n=map(x, 0, 1025, 0, 8);меняем просто 8 на 9 на 10 - и стало быть и т.д. (конечно не забываем про массив с частотами нот). Вообщем можно и 25 кнопок посадить.

Добавлено спустя 1 минуту 38 секунд:
Рожица вместо 8 и ) чегойто получилась...

Re: Вопросы новичка.

Dmitry__ » 23 фев 2017, 21:37

Angel71 писал(а):Dmitry__, халтурщик

Сам ты это слово :)
Angel71 писал(а):всё равно нужно правильно определять, что нажата конкретная кнопка, а не эта фигня, где при нажатии нескольких кнопок будет определяться или не та кнопка или вообще непонятно что происходить будет

Ого, у тебя есть правило определения нужной кнопки при нажатии нескольких ненужных? Да ты гений.
Angel71 писал(а):дальше не адекватный код, не отлавливающий, что нажато непонятно что и ещё дальше элементарно может сработать то, что срабатывать не должно

Сейчас обсуждаем аппаратную реализацию...

Re: Вопросы новичка.

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) ;

Re: Вопросы новичка.

Dmitry__ » 23 фев 2017, 23:30

Angel71 писал(а):так схема и код сильно связаны.

В данном случае, ничего не связано. Если человек поймет, что вешать на один пин 100500 перделок не есть хорошо, то дальнейший твой анализ его кода - бессмыслен :)
Твои знания по "==" и " : ? " радуют, но они лишние... :wink:

Добавлено спустя 3 минуты:
Кстааааааа, да, а вот то что ты не заметил его усилителя с потенциометром - вот это есть базис и твоих проблем :D :wink:

Добавлено спустя 6 минут 20 секунд:
Разверну тему:
Если ты не видишь на его схеме косяков с усилителем, и все тут хором докопались до 7-ми кнопок на цап, то как бы это сказать? Это просто понты. Или ты-таки знаешь про процент точности резисторов, проблему Vref-ов и.т.д? :wink:
dimamichev, тебе все тут советуют "как трахнуть на Красной площади", осталось только выбрать кого слушать :D

Re: Вопросы новичка.

Angel71 » 23 фев 2017, 23:43

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

Re: Вопросы новичка.

Dmitry__ » 24 фев 2017, 00:12

Ну так ты на название темы посмотри. :) Тут не асы письками меряются. Ну не видит он на повторенной тобой картинке проблем, и что? Какой совет-то будет? Перепахать 100500 талмудов по электронике? А, ты это уже сделал :). Пройди мимо...
Я до тебя докопался не зря, пытаюсь поднять уровень пиписькомера, что со схемой усилителя? Как вы можете докопаться до r-2r цап на кнопки и не видеть усилителя? Патамучта сам лошара, да? :) :wink:

Re: Вопросы новичка.

Angel71 » 24 фев 2017, 01:16

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

Re: Вопросы новичка.

Dmitry__ » 24 фев 2017, 06:25

Angel71 писал(а):т.е. не осилил предыдущее сообщение, молодец. на схеме хоть хоть один нормальный блок сначала найди

Чего мне там искать? Про эту схему сразу сказал ему - хлам. Все, проехали, забыли.
Angel71 писал(а):перед двумя смайликами хорошо подумал?

Да, а шо? :) Обзывать уважаемого Диму халтурщиком можно, а тебя лошарой нельзя? Я против таких правил :)

Re: Вопросы новичка.

Angel71 » 24 фев 2017, 07:04

т.е. даже не осознаёшь, что ляпнул? мило.


Rambler\'s Top100 Mail.ru counter