IPB

Здравствуйте, гость ( Вход | Регистрация )

> Arduino
Поделиться
kostyalamer
сообщение 11.4.2014, 20:00
Сообщение #1


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Наконец-то собрался и купил Arduino Uno и к нему разных шилдов smile.gif
Теперь можно всласть напаяться и напрограммироваться ( естественно под ALT Linux )
Кому интересно пишем в эту тему.
Несколько полезных ссылок :
Для начала :
http://arduino.ru./
http://f1p.ucoz.ru/publ/9-1-0-34
Простой примерчик : http://www.freeduino.ru/arduino/sample_PhysicalPixel.html - проверил , работает при помощи встроенного в программу arduino монитора порта:
Прикрепленный файл  ___________________.png ( 83.21 килобайт ) Кол-во скачиваний: 6

Паяльник как всегда рулит : http://cxem.net/arduino/arduino.php

PS Все это безобразие напоминает мне старые добрые времена good.gif , в общем Spectrum - forever !

Сообщение отредактировал kostyalamer - 11.4.2014, 20:15
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
kostyalamer
сообщение 12.6.2014, 23:13
Сообщение #2


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Небольшой отчет о проделанной работе :
Прикрепленный файл  141.jpg ( 125.69 килобайт ) Кол-во скачиваний: 7

Синтезатор из arduino , старой не нужной клавы ps/2 , дешевых китайских колонок и зарядника от давно умершего телефона.
А , чуть не забыл парочку RС фильтров для улучшения звука.
Вполне себе приличный звук для такой балалайки на четырех октавах ( октавы переключаются по 2 ).
Сейчас добавил SD -шильд и учу его играть сэмплы от синтезаторов прямо с карты памяти, в виду того что код усложнится в разы,
могу если кому надо скинуть код простого не SD - шного варианта синтезатора, пока я еще его не затер ( надерган из разных мест с добавлением большого количества разных костылей от меня )
PS кто сказал что arduino не компьютер :
Прикрепленный файл  146.jpg ( 60.94 килобайт ) Кол-во скачиваний: 5


Сообщение отредактировал kostyalamer - 12.6.2014, 23:15
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
YYY
сообщение 13.6.2014, 9:17
Сообщение #3


Профессионал
*******

Группа: Активный Пользователь
Сообщений: 1668
Регистрация: 12.10.2010
Вставить ник
Цитата
Пользователь №: 1950
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 8


Цитата(kostyalamer @ 12.6.2014, 23:13) *
могу если кому надо скинуть код простого не SD - шного варианта синтезатора, пока я еще его не затер ( надерган из разных мест с добавлением большого количества разных костылей от меня )

Прикольно!
Закидывай код smile.gif
Для простого ничего более самого не надо?
А то у меня уже "Типа Nano" пришло smile.gif
Вот второй компонент пока нет, но думаю на днях должен smile.gif



Прикрепленные файлы
Прикрепленный файл  Pro_Mini_Module_Atmega328_5V_16M_For_Arduino_Compatible_With_Nano.jpg ( 141.69 килобайт ) Кол-во скачиваний: 4
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 13.6.2014, 9:51
Сообщение #4


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(YYY @ 13.6.2014, 9:17) *
Прикольно!
Закидывай код smile.gif
Для простого ничего более самого не надо?

Держи :
Код
#include <ps2.h>


float note_len = 500000;


#define play_C4      3821 // До (4 октава)
#define play_Cis4    3607 // До диез
#define play_D4      3404 // Ре
#define play_Dis4    3213 // Ре диез
#define play_E4      3033 // Ми
#define play_F4      2862 // Фа
#define play_Fis4    2702 // Фа диез
#define play_G4      2550 // Соль
#define play_Gis4    2407 // Соль диез
#define play_A4      2272 // Ля
#define play_Ais4    2144 // Ля диез
#define play_B4      2024 // Си
#define play_C5      1910 // До (5 октава)
#define play_Cis5    1803 // До диез
#define play_D5      1702 // Ре
#define play_Dis5    1606 // Ре диез
#define play_E5      1516 // Ми
#define play_F5      1431 // Фа
#define play_Fis5    1350 // Фа диез
#define play_G5      1275 // Соль
#define play_Gis5    1203 // Соль диез
#define play_A5      1135 // Ля
#define play_Ais5    1072 // Ля диез
#define play_B5      1011 // Си
//
#define play_C6      955 // До (6 октава)

#define NOTE_B0  31
#define NOTE_C1  33
#define NOTE_CS1 35
#define NOTE_D1  37
#define NOTE_DS1 39
#define NOTE_E1  41
#define NOTE_F1  44
#define NOTE_FS1 46
#define NOTE_G1  49
#define NOTE_GS1 52
#define NOTE_A1  55
#define NOTE_AS1 58
#define NOTE_B1  62
#define NOTE_C2  65
#define NOTE_CS2 69
#define NOTE_D2  73
#define NOTE_DS2 78
#define NOTE_E2  82
#define NOTE_F2  87
#define NOTE_FS2 93
#define NOTE_G2  98
#define NOTE_GS2 104
#define NOTE_A2  110
#define NOTE_AS2 117
#define NOTE_B2  123
#define NOTE_C3  131
#define NOTE_CS3 139
#define NOTE_D3  147
#define NOTE_DS3 156
#define NOTE_E3  165
#define NOTE_F3  175
#define NOTE_FS3 185
#define NOTE_G3  196
#define NOTE_GS3 208
#define NOTE_A3  220
#define NOTE_AS3 233
#define NOTE_B3  247
#define NOTE_C4  262
#define NOTE_CS4 277
#define NOTE_D4  294
#define NOTE_DS4 311
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_FS4 370
#define NOTE_G4  392
#define NOTE_GS4 415
#define NOTE_A4  440
#define NOTE_AS4 466
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_CS5 554
#define NOTE_D5  587
#define NOTE_DS5 622
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_FS5 740
#define NOTE_G5  784
#define NOTE_GS5 831
#define NOTE_A5  880
#define NOTE_AS5 932
#define NOTE_B5  988
#define NOTE_C6  1047

int pin = 8;
int len = 500;
int sint = 1;

unsigned char code;

PS2 kbd(6, 5);

void playTone(int note ) {
  long elapsed_time = 0;

  while (elapsed_time < note_len) {
    digitalWrite(pin,HIGH);
    delayMicroseconds(note / 2);
    digitalWrite(pin, LOW);
    delayMicroseconds(note / 2);
    elapsed_time += (note);
  }

}
  

void kbd_init() {
  char ack;
  kbd.write(0xff);
  ack = kbd.read();
  ack = kbd.read();
}

void sintez()
/* играет ноты длительностью len , можно нажать несколько клавиш подряд и спокойно ждать пока синтезатор все это проиграет,
используется 9 цифровой выход Arduino с RC фильтром  */
{
   Serial.println(code, HEX);

    pin = 9;
         if (code==0xE)  { tone(pin,NOTE_C4,len); }    // До (4 октава)
    else if (code==0x76) { tone(pin,NOTE_CS4,len); }  // До диез  
    else if (code==0x16) { tone(pin,NOTE_D4,len); }    // Ре
    else if (code==0x05) { tone(pin,NOTE_DS4,len); }  // Ре диез
    else if (code==0x1E) { tone(pin,NOTE_E4,len); }    // Ми
    else if (code==0x26) { tone(pin,NOTE_F4,len); }    // Фа
    else if (code==0x06) { tone(pin,NOTE_FS4,len); }  // Фа диез
    else if (code==0x25) { tone(pin,NOTE_G4,len); }    // Соль
    else if (code==0x04) { tone(pin,NOTE_GS4,len); }  // Соль диез
    else if (code==0x2E) { tone(pin,NOTE_A4,len); }    // Ля
    else if (code==0x0C) { tone(pin,NOTE_AS4,len); }  // Ля диез
    else if (code==0x36) { tone(pin,NOTE_B4,len); }    // Си
    else if (code==0x3D) { tone(pin,NOTE_C5,len); }    // До (5 октава)
    else if (code==0x0B) { tone(pin,NOTE_CS5,len); }  // До диез
    else if (code==0x3E) { tone(pin,NOTE_D5,len); }    // Ре
    else if (code==0x83) { tone(pin,NOTE_DS5,len); }  // Ре диез
    else if (code==0x46) { tone(pin,NOTE_E5,len); }    // Ми
    else if (code==0x45) { tone(pin,NOTE_F5,len); }    // Фа
    else if (code==0x01) { tone(pin,NOTE_FS5,len); }  // Фа диез
    else if (code==0x4E) { tone(pin,NOTE_G5,len); }    // Соль
    else if (code==0x09) { tone(pin,NOTE_GS5,len); }  // Соль диез
    else if (code==0x55) { tone(pin,NOTE_A5,len); }    // Ля
    else if (code==0x78) { tone(pin,NOTE_AS5,len); }  // Ля диез
    else if (code==0x5D) { tone(pin,NOTE_B5,len); }    // Си
    else if (code==0x66) { tone(pin,NOTE_C6,len); }    // До (6 октава)
    else if (code==0x75) { if ( len < 1000) len= len + 100; }
    else if (code==0x72) { if ( len > 100 ) len= len - 100; }
    else if (code==0x29) { noTone(pin);}    // стоп
    else if (code==0x70)
       { sint = 1;
         kbd.write(0xED);
         kbd.write(0x04); // вкл Caps Led
       }
    else if (code==0x7C)
       { noTone(pin);
         sint = 0;
         kbd.write(0xED);
         kbd.write(0x02);  // вкл Num Lock Led
       }
    else if (code==0x71)
       { sint = 3;
         kbd.write(0xED);
         kbd.write(0x01); // вкл Scroll Led
       }    
      
  Serial.println(code, HEX);
}
void sintez1()
/* играет 4 и 5-ую октаву при нажатии следующей клавиши предыдущая нота перестает звучать !
используется 9 цифровой выход Arduino с RC фильтром  */
{
   Serial.println(code, HEX);
    pin = 9;
         if (code==0xE)  { playTone(play_C4); }    // До (4 октава)
    else if (code==0x76) { playTone(play_Cis4); }  // До диез  
    else if (code==0x16) { playTone(play_D4); }    // Ре
    else if (code==0x05) { playTone(play_Dis4); }  // Ре диез
    else if (code==0x1E) { playTone(play_E4); }    // Ми
    else if (code==0x26) { playTone(play_F4); }    // Фа
    else if (code==0x06) { playTone(play_Fis4); }  // Фа диез
    else if (code==0x25) { playTone(play_G4); }    // Соль
    else if (code==0x04) { playTone(play_Gis4); }  // Соль диез
    else if (code==0x2E) { playTone(play_A4); }    // Ля
    else if (code==0x0C) { playTone(play_Ais4); }  // Ля диез
    else if (code==0x36) { playTone(play_B4); }    // Си
    else if (code==0x3D) { playTone(play_C5); }    // До (5 октава)
    else if (code==0x0B) { playTone(play_Cis5); }  // До диез
    else if (code==0x3E) { playTone(play_D5); }    // Ре
    else if (code==0x83) { playTone(play_Dis5); }  // Ре диез
    else if (code==0x46) { playTone(play_E5); }    // Ми
    else if (code==0x45) { playTone(play_F5); }    // Фа
    else if (code==0x01) { playTone(play_Fis5); }  // Фа диез
    else if (code==0x4E) { playTone(play_G5); }    // Соль
    else if (code==0x09) { playTone(play_Gis5); }  // Соль диез
    else if (code==0x55) { playTone(play_A5); }    // Ля
    else if (code==0x78) { playTone(play_Ais5); }  // Ля диез
    else if (code==0x5D) { playTone(play_B5); }    // Си
    else if (code==0x66) { playTone(play_C6); }    // До (6 октава)
    else if (code==0x75) { if ( note_len < 500000) note_len= note_len + 100000; }
    else if (code==0x72) { if ( note_len > 100000 ) note_len= note_len - 100000; }
    else if (code==0x70)
       { sint = 1;
         kbd.write(0xED);
         kbd.write(0x04); // вкл Caps Led
       }
        else if (code==0x7C)
       { noTone(pin);
         sint = 0;
         kbd.write(0xED);
         kbd.write(0x02);  // вкл Num Lock Led
       }  
    else if (code==0x71)
       { sint = 3;
         kbd.write(0xED);
         kbd.write(0x01); // вкл Scroll Led
       }    
  Serial.println(code, HEX);
}


void sintez2()
/* играет басы , при нажатии следующей клавиши предыдущая нота перестает звучать !
используется 8 цифровой выход Arduino с RC фильтром  */
{
   Serial.println(code, HEX);
    pin = 8;
    if (code==0xE)  { tone(pin,NOTE_C2,len); }    // До (2 октава)
    else if (code==0x76) { tone(pin,NOTE_CS2,len); }  // До диез  
    else if (code==0x16) { tone(pin,NOTE_D2,len); }    // Ре
    else if (code==0x05) { tone(pin,NOTE_DS2,len); }  // Ре диез
    else if (code==0x1E) { tone(pin,NOTE_E2,len); }    // Ми
    else if (code==0x26) { tone(pin,NOTE_F2,len); }    // Фа
    else if (code==0x06) { tone(pin,NOTE_FS2,len); }  // Фа диез
    else if (code==0x25) { tone(pin,NOTE_G2,len); }    // Соль
    else if (code==0x04) { tone(pin,NOTE_GS2,len); }  // Соль диез
    else if (code==0x2E) { tone(pin,NOTE_A2,len); }    // Ля
    else if (code==0x0C) { tone(pin,NOTE_AS2,len); }  // Ля диез
    else if (code==0x36) { tone(pin,NOTE_B2,len); }    // Си
    else if (code==0x3D) { tone(pin,NOTE_C3,len); }    // До (3 октава)
    else if (code==0x0B) { tone(pin,NOTE_CS3,len); }  // До диез
    else if (code==0x3E) { tone(pin,NOTE_D3,len); }    // Ре
    else if (code==0x83) { tone(pin,NOTE_DS3,len); }  // Ре диез
    else if (code==0x46) { tone(pin,NOTE_E3,len); }    // Ми
    else if (code==0x45) { tone(pin,NOTE_F3,len); }    // Фа
    else if (code==0x01) { tone(pin,NOTE_FS3,len); }  // Фа диез
    else if (code==0x4E) { tone(pin,NOTE_G3,len); }    // Соль
    else if (code==0x09) { tone(pin,NOTE_GS3,len); }  // Соль диез
    else if (code==0x55) { tone(pin,NOTE_A3,len); }    // Ля
    else if (code==0x78) { tone(pin,NOTE_AS3,len); }  // Ля диез
    else if (code==0x5D) { tone(pin,NOTE_B3,len); }    // Си
    else if (code==0x66) { tone(pin,NOTE_C4,len); }    // До (4 октава)
    else if (code==0x75) { if ( len < 1000) len= len + 100; }
    else if (code==0x72) { if ( len > 100 ) len= len - 100; }
    else if (code==0x29) { noTone(pin);}    // стоп
    else if (code==0x70)
       { sint = 1;
         kbd.write(0xED);
         kbd.write(0x04); // вкл Caps Led
       }
    else if (code==0x7C)
       { sint = 1;
         kbd.write(0xED);
         kbd.write(0x02); // вкл Caps Led
       }
    else if (code==0x71)
       { sint = 3;
         kbd.write(0xED);
         kbd.write(0x01); // вкл Ssroll Led
       }  
      
  Serial.println(code, HEX);
}

void key()
{
    code = kbd.read();

      if (code==0xF0)
        {
         code = kbd.read();
         code=0;
        }
      Serial.println(code, HEX);
}




void setup(){
//  myOS.begin();
  Serial.begin(9600);
  pinMode(9,OUTPUT);
  pinMode(8,OUTPUT);
  kbd_init();
  sint = 0;
  kbd.write(0xED);
  kbd.write(0x02); // вкл Num Lock Led

  //myOS.addTask(key, 1000);
}

void loop() {
  //note_len = len*10000;
  key();
  if ( sint == 0 )
  { sintez1 ();}
  else if ( sint == 1 )
  { sintez(); }
  else if ( sint == 3 )
  { sintez2(); }
  
}

Собственно внутри этой проги 2 синтезатора - один простой на две октавы, второй сложнее и интереснее на 4 , переключение
между ними по нажатию клавиш Home , Insert , Delete на клавиатуре.
Код получился достаточно корявый , но работает smile.gif
Больше ничего не надо , я правда еще доставал из кладовки осциллограф для настройки фильтров ( считать их было лень ), но можно
и на слух или вообще их не ставить ( правда звучек тогда будет еще тот ). У меня 2 фильтра на 8 и 9 пинах , если ставить один то либо
басы хрюкают, либо 4-ую и 5-ую октаву сильно режет .


Сообщение отредактировал kostyalamer - 13.6.2014, 10:00
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- kostyalamer   Arduino   11.4.2014, 20:00
- - IVK   Это интересно И что он у тебя будет делать?   12.4.2014, 9:09
|- - kostyalamer   Цитата(IVK @ 12.4.2014, 9:09) Это интерес...   12.4.2014, 12:26
|- - and   У меня тоже есть Nano и UNO. А язык там вроде како...   12.4.2014, 18:38
|- - kostyalamer   Цитата(and @ 12.4.2014, 18:38) У меня тож...   12.4.2014, 19:09
|- - and   Насчет названия языка не знаю, серьезно не изучал ...   12.4.2014, 21:42
- - kostyalamer   Вот и простейшая программка, для начала схемка ( к...   19.4.2014, 16:13
- - IVK   Отделил отсюда тему "Юные программисты в Арха...   20.4.2014, 8:46
- - kostyalamer   Продолжаю тему про Arduino, теперь устройство немн...   17.5.2014, 16:56
- - IVK   Цитата(kostyalamer @ 19.5.2014, 22:27) 1 ...   20.5.2014, 15:56
- - kostyalamer   Вот еще очень интересная штука : http://www.polesi...   21.5.2014, 7:43
- - YYY   Купил набор http://ru.aliexpress.com/item/Pro-Mini...   21.5.2014, 20:08
- - kostyalamer   Небольшой отчет о проделанной работе : Синтезатор...   12.6.2014, 23:13
|- - YYY   Цитата(kostyalamer @ 12.6.2014, 23:13) мо...   13.6.2014, 9:17
|- - kostyalamer   Цитата(YYY @ 13.6.2014, 9:17) Прикольно...   13.6.2014, 9:51
- - YYY   спасибо !   13.6.2014, 11:28
- - YYY   Получил вторую часть. В системе usb 2-2: pl2303 co...   15.6.2014, 8:44
|- - kostyalamer   Цитата(YYY @ 15.6.2014, 8:44) Получил вто...   15.6.2014, 18:19
- - IVK   Цитата(kostyalamer @ 15.6.2014, 18:19) В ...   15.6.2014, 18:35
|- - kostyalamer   Цитата(IVK @ 15.6.2014, 18:35) Вот-вот, м...   15.6.2014, 20:00
- - IVK   Но я же вообще на популяризацию ориентирован - и в...   15.6.2014, 20:38
- - YYY   http://s4a.cat/ конечно хорошо... Я за... но для о...   16.6.2014, 10:46
|- - kostyalamer   Цитата(YYY @ 16.6.2014, 10:46) http://s4a...   16.6.2014, 21:42
- - kostyalamer   Ну вот продолжение банкета Синтезатор, кроме то...   25.6.2014, 21:27
- - kostyalamer   Что-то тема как обычно потухла, подброшу дровишек ...   31.1.2015, 19:20
- - kostyalamer   Очередное продолжение банкета, система визуального...   28.11.2015, 12:25
- - kostyalamer   Давно сюда ничего не писал , внесу небольшой вкла...   18.8.2016, 22:01
- - kostyalamer   Из остатков от старого стола и arduino сделал себе...   11.3.2017, 20:27
- - kostyalamer   Написал небольшую статейку по ардуине : http://we....   28.9.2017, 23:27
- - Смит   Цитата(kostyalamer @ 28.9.2017, 22:27) На...   10.10.2017, 15:41
- - kostyalamer   Спасибо , исправил - вот работающая ссылка : http:...   10.10.2017, 21:06
- - YYY   Сегодня (через три с половиной года после получени...   8.2.2018, 1:26
- - Смит   Цитата(kostyalamer @ 11.3.2017, 19:27) Из...   8.2.2018, 15:28
- - kostyalamer   Успехи средние . Заработало в принципе нормально, ...   8.2.2018, 23:16
|- - YYY   Цитата(kostyalamer @ 8.2.2018, 23:16) To ...   10.2.2018, 13:44
|- - kostyalamer   Цитата(YYY @ 10.2.2018, 13:44) У меня уже...   10.2.2018, 23:51
|- - YYY   Цитата(kostyalamer @ 10.2.2018, 23:51) Кс...   11.2.2018, 1:16
- - knn   [не знаю куда правильней разместить..] Попалось (п...   12.8.2020, 19:24


Ответить в эту темуОткрыть новую тему
( Гостей: 2 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 7.9.2025, 16:00