roboforum.ru

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

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

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

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

Сообщение Zusul86 » 23 фев 2017, 13:40

Выше была картинка. Там номиналы резисторов выбираются не от балды, а рассчитываются. Нажатие некой комбинации клавиш может быть идентифицировано, так как ему соответствует вполне конкретное сопротивление запараллеленых резисторов.
Zusul86
 
Сообщения: 775
Зарегистрирован: 10 авг 2014, 15:02
Откуда: Саров

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
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Dmitry__ » 23 фев 2017, 16:15

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

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

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

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

Сообщение Angel71 » 23 фев 2017, 17:18

Dmitry__, халтурщик. во-первых никто не заставляет tone использовать. даже если будет использована tone, всё равно нужно правильно определять, что нажата конкретная кнопка, а не эта фигня, где при нажатии нескольких кнопок будет определяться или не та кнопка или вообще непонятно что происходить будет (вваливается в код, где определяется какая кнопка нажата, дальше не адекватный код, не отлавливающий, что нажато непонятно что и ещё дальше элементарно может сработать то, что срабатывать не должно). во-вторых это аналогично логической операции сравнения, допустим в паскале и си - научили сразу писать "=", а потом годами машинально равно и пишут вместо "==". эту же схему кнопок с номиналами от фонаря, он потом применит ещё где и будет цирк, допустим нажмёт вперёд и вправо, а машинка поедет назад.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение dimamichev » 23 фев 2017, 19:04

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

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

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

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

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

Сообщение Zusul86 » 23 фев 2017, 19:15

http://codius.ru/articles/Arduino_Подключение_нескольких_кнопок_к_одному_аналоговому_входу
https://www.terraelectronica.ru/news_ushki.php?ID=42
Zusul86
 
Сообщения: 775
Зарегистрирован: 10 авг 2014, 15:02
Откуда: Саров

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

Сообщение dimamichev » 23 фев 2017, 21:20

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

Добавлено спустя 1 минуту 38 секунд:
Рожица вместо 8 и ) чегойто получилась...
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Dmitry__ » 23 фев 2017, 21:37

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

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

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

Сейчас обсуждаем аппаратную реализацию...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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) ;
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение Dmitry__ » 23 фев 2017, 23:30

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

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

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

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

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

Сообщение Angel71 » 23 фев 2017, 23:43

о том, что на резисторах вариант не очень и что не помешает вообще всё с нуля переделать, уже давно написано, т.е. проигнорировано.
да заметить то заметил многое, только от постоянных метаний от одной штукенции к другой и вот этой чудной схемки
Изображение
как то немного не хочется даже затрагивать некоторые моменты, тем более когда не закончив доводить до ума одни блоки, продолжает с только ему понятной логикой лепить другие.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение Dmitry__ » 24 фев 2017, 00:12

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

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

Сообщение Angel71 » 24 фев 2017, 01:16

т.е. не осилил предыдущее сообщение, молодец. на схеме хоть хоть один нормальный блок сначала найди. перед двумя смайликами хорошо подумал? зря. пойми, если тебе подсовывают что-то новое, это не значит, что нужно переключить внимание на это, бросая текущее.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

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

Сообщение Dmitry__ » 24 фев 2017, 06:25

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

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

Да, а шо? :) Обзывать уважаемого Диму халтурщиком можно, а тебя лошарой нельзя? Я против таких правил :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение Angel71 » 24 фев 2017, 07:04

т.е. даже не осознаёшь, что ляпнул? мило.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Пред.След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2