| Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
| Поделиться |
11.4.2014, 20:00
Сообщение
#1
|
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20
|
Наконец-то собрался и купил Arduino Uno и к нему разных шилдов
Теперь можно всласть напаяться и напрограммироваться ( естественно под 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 Все это безобразие напоминает мне старые добрые времена Сообщение отредактировал kostyalamer - 11.4.2014, 20:15 |
|
|
|
![]() |
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 |
|
|
|
13.6.2014, 9:17
Сообщение
#3
|
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Активный Пользователь Сообщений: 1671 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8
|
могу если кому надо скинуть код простого не SD - шного варианта синтезатора, пока я еще его не затер ( надерган из разных мест с добавлением большого количества разных костылей от меня ) Прикольно! Закидывай код Для простого ничего более самого не надо? А то у меня уже "Типа Nano" пришло Вот второй компонент пока нет, но думаю на днях должен
Прикрепленные файлы
Pro_Mini_Module_Atmega328_5V_16M_For_Arduino_Compatible_With_Nano.jpg ( 141.69 килобайт )
Кол-во скачиваний: 4 |
|
|
|
13.6.2014, 9:51
Сообщение
#4
|
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20
|
Прикольно! Закидывай код Для простого ничего более самого не надо? Держи : Код #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 на клавиатуре. Код получился достаточно корявый , но работает Больше ничего не надо , я правда еще доставал из кладовки осциллограф для настройки фильтров ( считать их было лень ), но можно и на слух или вообще их не ставить ( правда звучек тогда будет еще тот ). У меня 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
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![]() ![]() |
|
Текстовая версия | Сейчас: 29.10.2025, 6:09 |