roboforum.ru

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


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

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

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

Сообщение dimamichev » 06 фев 2017, 19:12

Код: Выделить всёРазвернуть
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO
//
////////////////////////
//
// LED КУБ  универсальная программа – пример вспышка /
//

unsigned int i ;
int k ;
unsigned int j ;
unsigned int n ; // в таблицу-массив ниже вносим данные для этого примера
int tabl [216]= {1,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,
                           1,1,0,0,0,1,0,0,0,  1,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,
                           1,1,1,0,1,1,1,0,0,  1,1,0,0,0,1,0,0,0,  1,0,0,0,0,0,0,0,0,
                           1,1,1,1,1,1,1,1,0,  1,1,1,0,1,1,1,0,0,  1,1,0,0,0,1,0,0,0,
                           1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,0,  1,1,1,0,1,1,1,0,0,   
                           1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,0, 
                           1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,1,
                           0,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,  };

void setup()
{
  for (k = 10; k <=12; k++) // объявляем все выходы и задаём начальное состояние
        {
        pinMode (k, OUTPUT);
        digitalWrite (k, LOW  );
        }
   for (i = 1; i <=9; i++)
        {
        pinMode (i, OUTPUT);
        digitalWrite (i, LOW);
        }

}

void loop()
{
        k=-1;
   for (n = 1; n <=8; n++) // определяет перебор картинок – пример 8 картинок
        {
        for (j = 1; j <=25; j++) // определяет длительность свечения 1 картинки
        {
                   digitalWrite (10, HIGH);
            for (i = 1; i <=9; i++)
             {
                     k=k+1;
                    digitalWrite (i, tabl [k]);
                     
              }
                  delay(5);
                  digitalWrite (10, LOW);
                  digitalWrite (11, HIGH);
            for (i = 1; i <=9; i++)
             {
                    k=k+1;
                   digitalWrite (i, tabl [k]);
              }
                  delay(5);
                  digitalWrite (11, LOW);
                  digitalWrite (12, HIGH);
            for (i = 1; i <=9; i++)
             {
                    k=k+1;
                   digitalWrite (i, tabl [k]);
                     
              }
                  delay(5);
                  digitalWrite (12, LOW);
                  k=k-27;
           }
                 k=k+27;   
     }
}

//
// Конец /
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Вот, написал "универсальную" программу. Можно любую комбинацию забивать в массив и крутить! Ещё одна ерунда - прозрачные светодиоды плохо смотрятся в кубе (засвечивают друг друга-дистанция ограничивается длиной выводов). Итоги:1. Нужны "трёхвыводные" светодиоды чтоб по честному 3 координаты x,y,z 2. Конструкция куба несовершенна, надо менять. 3. Светодиоды лучше использовать с цветным пластиком. 4.Пора менять светодиод на пищалку и экспериментировать со звуковой генерацией (без команды "tone")
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение dimamichev » 09 фев 2017, 14:12

Нет, без "tone"никуда... поиграл с мелодиями (даже собственную опрограмил массивом). Хочу сделать одноголосный ЭМИ (супруга сказала что это получится дудка - потому как воспроизводит одновременно только одну частоту). А ещё сказала что две октавы это минимум (24 кнопки, пардон, клавиши). Вообщем, вот схема. Вопрос: я правильно всё сделал? (не погорят ли выходы, а за одно и входы?)Входы с 1 по 5, а выходы 6-10 и 13 на динамик.
Вложения
схема 8.jpg
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Dmitry__ » 09 фев 2017, 14:41

dimamichev писал(а):Вопрос: я правильно всё сделал? (не погорят ли выходы, а за одно и входы?)

Ну а в чем страхи? Все развязал диодами. Не погорят. Еще можно упростить схему - выкинуть резисторы (использовать внутр. резисторы avr). А вообще, весь прикол ардуин в том, что все что ты хочешь на ней сделать, уже кто-то сделал, осталось только нагуглить.
По многокнопочным клавам, посмотри в сторону PC-ных ps2 клавиатур. Или посмотри стандартные шилды клавиатур. И интерфейс midi не забывай. А еще есть последовательные расширители входов/выходов (выходы: 74HC595). Ну больно смотреть на твою трату времени на одноразовые устройства...

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

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

Сообщение dimamichev » 09 фев 2017, 15:08

Устройства действительно получаются на "поигрался и стёр"... Ну так ведь интересней учиться...от элементарного к очень простому.
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Madf » 09 фев 2017, 15:51

На видео чел юзает готовые аппаратные решения (бластер): http://www.serdashop.com/ это отдельная тема.

На счет многоголосого синтеза: алгоритмов можно придумать очень много, начать с простого (примитивных звуков), тут главное ещё для этого дела грамотно подготовить обработку ввода (чтобы клава на выходе выдавала (желательно) параллельный скан-код, иначе при одновременном сканировании нескольких кнопок может получиться сильно усложненный алгоритм обработки и как следствие невозможность нормально это всё использовать в дальнейшем для вывода...
Дальше можно сделать 8 битный аналог на шимах МК, взять там несколько каналов и свести/микшировать на один выход. Таких маньяков в инете полно и это направление весьма интересно/ценится.
У "нас" на форуме чел вообще сделал старую музыкальную шкатулку на энкодере:

:D
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

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

Сообщение dimamichev » 09 фев 2017, 16:53

[quote="Madf"]
На счет многоголосого синтеза: алгоритмов можно придумать очень много, начать с простого (примитивных звуков), тут главное ещё для этого дела грамотно подготовить обработку ввода (чтобы клава на выходе выдавала (желательно) параллельный скан-код, иначе при одновременном сканировании нескольких кнопок может получиться сильно усложненный алгоритм обработки и как следствие невозможность нормально это всё использовать в дальнейшем для вывода...
Дальше можно сделать 8 битный аналог на шимах МК, взять там несколько каналов и свести/микшировать на один выход.

Много знакомых слов, но предложения пока не разобрать..Вот что я сегодня сумел...
Код: Выделить всёРазвернуть
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Arduino UNO
//
////////////////////////
//
// Программа для одноголосого ЭМИ/
//

unsigned int n = 0;
unsigned int i = 0;
unsigned int j = 500;
unsigned int k = 0;

int tabl [25] ={261,277,293,311,329,
                          349,370,392,415,440,
                         466,494,523,554,587,
                          622,659,698,740,784,
                         830,880,932,988,1046  };  // зашифрованные данные нот – их частоты

void setup()
{
          pinMode(13, OUTPUT);
          digitalWrite(13, LOW);
          for (i =6 ; i <=10; i=i+1)
            {
               pinMode(i, OUTPUT);
              digitalWrite(i, LOW);
            }
          for (i =1 ; i <=5; i=i+1)
            {
               pinMode(i, INPUT);
             }

}

void loop()
{
         for (i =6 ; i <=10; i=i+1) //последовательно-попеременная подача на выходы логической единицы
              {
              digitalWrite(i, HIGH);
              for (n =1 ; n <=5; n=n+1) // перебор входов
              {
                    if (digitalRead (i)==HIGH & digitalRead (n)==HIGH) // проверка замкнута ли кнопка ?
                     {
                           k=5*(i-6) + (n-1);
                           tone (13, tabl[k],j); // исполнение вызванной ноты
                           delay (j);
                      }
               }
              digitalWrite(i, LOW);


            }

}

//
// Конец /
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Супруга придёт и чего нибудь сыграет...
Вложения
IMG_6084.JPG
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Dmitry__ » 09 фев 2017, 17:10

dimamichev писал(а):стройства действительно получаются на "поигрался и стёр"... Ну так ведь интересней учиться...от элементарного к очень простому.

Ну может я очень сильно забегаю вперед. Но хотел сказать - больше смотри чужие проекты. Это лучше, чем городить свои совсем элементарные кнопки. Так ты быстрее выработаешь профессиональный стиль. И уровень знаний значительно быстрее повысится. Будешь собирать wi-fi точки доступа, умные дома, и.т.д., и смеяться, вспоминая свои кнопочки и светики :) Короче, перед тем как что-то досконально собирать, узнай весь спектр собираемых устройств на дуинах. По верхам пройдись по всем доступным шилдам, библиотекам интерфейсов и.т.д. Самый быстрый вариант - изучить ассортимент дуиновских прибамбасов в каком-нибудь интернет магазине, который специализируется по дуинам и роботам.

А знания по всем этим моторчикам, кнопочкам ты давно проверил на бимах...

Добавлено спустя 16 минут 49 секунд:
dimamichev писал(а):Супруга придёт и чего нибудь сыграет...


Куча проводов, сбацает тебе "чижик-пыжик" и забудет. А надо было: "вау" :)

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

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

Сообщение dimamichev » 09 фев 2017, 17:23

Умные дома... Я ещё до датчиков и аналоговых входов в UNO не добрался, а тут сразу... Что значит изучить ассортимент? Понять для чего это? Понять принципы работы? Да и не очень много "хорошо прожёванных" - для таких как я проектов есть в доступе.

Добавлено спустя 3 минуты 51 секунду:
И ещё детский вопрос - внутри одной программы можно переиначивать входы и выходы?
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Dmitry__ » 09 фев 2017, 17:43

dimamichev писал(а):Что значит изучить ассортимент? Понять для чего это?


зайди например в roboparts.ru в разделы:
Устройства ввода информации
Устройства вывода информации
Устройства ввода/вывода
Например пульты и клавиатуры
Может то на что ты убил день, стоит 100 рэ. Да, то что понравилось, идешь искать на али, будет еще в 5 раз дешевле.
dimamichev писал(а):И ещё детский вопрос - внутри одной программы можно переиначивать входы и выходы?

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

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

Сообщение dimamichev » 09 фев 2017, 18:10

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

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

Сообщение Dmitry__ » 09 фев 2017, 18:24

dimamichev писал(а):Не,.. не делал.

Ну как не делал? Вот твой код:
Код: Выделить всёРазвернуть
    for ( n = 1; n <= 4; n++)
    {
        pinMode(n, OUTPUT);
        digitalWrite(n, LOW);
    }


Все можно, проверь и все :)
Просто код конфигурации будет не в "setup", а в основном коде.
Вот тебе пример, светодиод работает как фотоприемник, динамическая конфигурация пина на вход/выход:
https://geektimes.ru/post/254890/
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение dimamichev » 09 фев 2017, 18:44

Значит можно. Но осторожно.

Madf,- а в чём фишка изделия на видео? Что мелодия прокручивается не с кнопки, а с энкодера? Несколько лет давно делал на шаговом двигателе так:.... эх если б ардуину тянул шаговик...
Вложения
РИС. 23.jpg
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Madf » 09 фев 2017, 19:16

dimamichev писал(а):а в чём фишка изделия на видео? Что мелодия прокручивается не с кнопки, а с энкодера?

Да, с энкодера, причем весьма неплохо сымитировал эффект реакцию и звук.

dimamichev писал(а):Несколько лет давно делал на шаговом двигателе так:....

Чот я не понял, как там вообще мелодия играется? Просто "динама машина" электричество вырабатывает и всё?

dimamichev писал(а):эх если б ардуину тянул шаговик...

Нет с этим проблем, ставишь какой-нить ULN2003 и крутишь, если лениво и хочется фэншуя, то можно тупо драйвер приделать...вон те Дима может про ESC (BLDC) много чего рассказать. :D
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

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

Сообщение dimamichev » 09 фев 2017, 20:28

Madf писал(а):
dimamichev писал(а):Несколько лет давно делал на шаговом двигателе так:....

Чот я не понял, как там вообще мелодия играется? Просто "динама машина" электричество вырабатывает и всё?


Нет, на схема есть музыкальный синтезатор-микросхема УМС 8-08. В ней записано 8 мелодий, перебор кнопкой, а питает всё шаговик. Он же ручка шарманки. Крутим - играет, не крутим - плавно глохнет музыка...
Аватара пользователя
dimamichev
 
Сообщения: 1386
Зарегистрирован: 03 янв 2013, 16:27

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

Сообщение Madf » 10 фев 2017, 00:43

dimamichev писал(а):Крутим - играет, не крутим - плавно глохнет музыка...

Так тут ручка задает темп, а не "плавно глохнет".
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Пред.След.

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

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

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