Arduino |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
Arduino |
Поделиться |
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 Все это безобразие напоминает мне старые добрые времена , в общем Spectrum - forever ! Сообщение отредактировал kostyalamer - 11.4.2014, 20:15 |
|
|
12.4.2014, 9:09
Сообщение
#2
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10092 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
Это интересно И что он у тебя будет делать?
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
12.4.2014, 12:26
Сообщение
#3
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Это интересно И что он у тебя будет делать? Все что угодно, вчера с младшим крутили сервопривод . Хотя в основном такая штука мне нужна по работе, дешевый контроллер , программируется прямо с компа без всяких программаторов. Присобачил блок питания, шилду с 4-мя релюхами на выходы, запихал все это в приличный корпус , на входы повесил все что надо и получил контроллер не хуже Овен - овских , только дешевле в разы. Ну и программировать на Wiring ( практически С ++ ) гораздо интереснее чем в разных визуалках вроде PLC |
|
|
12.4.2014, 18:38
Сообщение
#4
|
|
Мастер Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: 6 |
У меня тоже есть Nano и UNO. А язык там вроде какой-то диалект Processing по-моему.
|
|
|
12.4.2014, 19:09
Сообщение
#5
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
У меня тоже есть Nano и UNO. А язык там вроде какой-то диалект Processing по-моему. 1) Отлично ! Андрей что на них интересного собирал ? 2) По-поводу языка цитирую учебник http://robocraft.ru/blog/arduino/29.html Цитата Как мы уже выяснили Arduino/ Freeduino программируется на языке Wiring, которого на самом деле не существует, как и не существует и компилятора Wiring – написанные на Wiring программы преобразуются (с минимальными изменениям) в программу на языке C/C++, и затем компилируются компилятором AVR-GCC. Так что, фактически, используется специализированный для микроконтроллеров AVR вариант C/C++. Однако, Вы получаете простую среду разработки, и набор базовых библиотек, упрощающих доступ к находящейся «на борту» микроконтроллера периферии. Хотя может и Processing программы то в нем скетчами называются |
|
|
12.4.2014, 21:42
Сообщение
#6
|
|
Мастер Группа: Пользователь Сообщений: 530 Регистрация: 22.8.2007 Вставить ник Цитата Пользователь №: 317 Страна: Россия Город: Не указан Пол: Муж. Репутация: 6 |
Насчет названия языка не знаю, серьезно не изучал Сейчас ей не занимаюсь, подключал жидкокристаллический индикатор, управлял DDS синтезатором (нужно было для ультразвуковой установки), хотел сделать ультразвуковой датчик, но оказывается ардуина не умеет формировать точные короткие импульсы (порядка микросекунд). Поэтому пока пишу на обычном Си, а плату использую просто как макетку. Если будет время и силы хочу подумать насчет управления автоматическим поливом огорода.
Сообщение отредактировал and - 12.4.2014, 21:43 |
|
|
19.4.2014, 16:13
Сообщение
#7
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Вот и простейшая программка, для начала схемка ( кстати нарисована в Qelectrotech ) :
_____.png ( 22.05 килобайт ) Кол-во скачиваний: 10 резисторы подключенные последовательно со светодиодами имеют номинал: 1 - 2 кОм а вот и простенький код: Код /* циклическое реле времени работа , пауза ( на 2 поочередно включающиеся нагрузки ) * поочередное включение 2-х светодиодов через паузу с подстройкой по времени * */ int ledPin13 = 13; // LED подсоединен к выводу 13 int ledPin12 = 12; // LED подсоединен к выводу 12 int potPin2 = 2; // потенциометр подключается к 2-му входу(работа) int potPin3 = 3; // потенциометр подключается к 3-му входу(пауза) int Mnog = 10; // Множитель шкалы времени void setup() { pinMode(ledPin13, OUTPUT); // устанавливаем вывод 13 как выход pinMode(ledPin12, OUTPUT); // устанавливаем вывод 12 как выход } void loop() { digitalWrite(ledPin13, HIGH); // включаем LED digitalWrite(ledPin12, LOW); // выключаем LED delay(Schit(Mnog , potPin2 )); // пауза работа 13 выход digitalWrite(ledPin13, LOW); // включаем LED digitalWrite(ledPin12, LOW); // выключаем LED delay(Schit(Mnog , potPin3 )); // пауза выключено digitalWrite(ledPin13, LOW); // выключаем LED digitalWrite(ledPin12, HIGH); // включаем LED delay(Schit(Mnog , potPin2)); // пауза работа 12 выход digitalWrite(ledPin13, LOW); // включаем LED digitalWrite(ledPin12, LOW); // выключаем LED delay(Schit(Mnog , potPin3 )); // пауза выключено } int Schit(int Mnog, int Pin) // процедура считывания значения с 2-го или 3 -го pin-а { int rez; rez = analogRead(Pin)*Mnog; // считываем значение и преобразуем к нужному диапазону if (rez < 500 ) rez = 500; // минимальное значение 0,5 с return rez; } На самом деле такое реле вместе с релейной шилдой подойдет для многих промышленных агрегатов, но можно и просто поморгать светодиодами. PS программировать такую штуку одно удовольствие, рекомендую всем PPS Если есть чего-нибудь интересное делимся схемами и кодом . Сообщение отредактировал kostyalamer - 19.4.2014, 16:20 |
|
|
20.4.2014, 8:46
Сообщение
#8
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10092 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
Отделил отсюда тему "Юные программисты в Архангельске" - там ведь отнюдь не только про Arduino.
-------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
17.5.2014, 16:56
Сообщение
#9
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Продолжаю тему про Arduino, теперь устройство немного посложнее - регулятор температуры / влажности , кроме Arduino Uno были использованы :
релюхи - http://fixled.ru/shields/4relay-shield.html экранчик - http://fixled.ru/microcontrollers/modules/serial-lcd.html датчик - http://fixled.ru/sensors/dht22.html потенциометры для задания температуры и влажности свои из старого хлама. ссылки привел специально, там можно скачать соответствующие этим устройствам библиотеки Код : Код // регулятор температуры и влажности #include "DHT.h" #include <Wire.h> #include "rgb_lcd.h" int ledT = 13; // выход регулятора температуры int ledH = 12; // выход регулятора влажности int sensorPinT = A1; // вход установки температуры int sensorPinH = A0; // вход установки влажности int sensorValueT = 0; // показания датчика температуры int sensorValueH = 0; // показания датчика влажности int scaleT = 10; // масштабатор уставки температуры int scaleH = 10; // масштабатор уставки влажности int deltaT = 2; // дельта между включением и выключением регулятора по T int deltaH = 2; // дельта между включением и выключением регулятора по H rgb_lcd lcd; const int colorR = 0; // цвета подсветки дисплея const int colorG = 0; const int colorB = 150; unsigned int RelayPin[]={4,6,5,7}; #define DHTPIN 2 // what pin we're connected to // Uncomment whatever type you're using! //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) // Connect pin 1 (on the left) of the sensor to +5V // Connect pin 2 of the sensor to whatever your DHTPIN is ( pin 2) // Connect pin 4 (on the right) of the sensor to GROUND // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor DHT dht(DHTPIN, DHTTYPE); void setup() { int i=0; for(i=0;i<4;i++) pinMode(RelayPin[i],OUTPUT); // релейные входы 1-4 pinMode(ledT, OUTPUT); // выход регулятора температуры pinMode(ledH, OUTPUT); // выход регулятора влажности lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); lcd.print("Regulator!"); delay(1000); dht.begin(); } void loop() { // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) float h = dht.readHumidity(); float t = dht.readTemperature(); sensorValueT = analogRead(sensorPinT)/scaleT; if ( sensorValueT > 100 ) sensorValueT = 100; // макс. значение уставки T sensorValueH = analogRead(sensorPinH)/scaleH; if ( sensorValueH > 100 ) sensorValueH = 100; // макс. значение уставки F // проверка на ошибочные значения модуля DHT if (isnan(t) || isnan(h)) { lcd.print("Failed to DHT"); } else { // блок отображения информации // температура lcd.setCursor(0, 0); lcd.print("T: "); lcd.setCursor(3, 0); lcd.print(" "); lcd.setCursor(3, 0); lcd.print(t); lcd.print(" C"); lcd.setCursor(11, 0); lcd.print(" "); lcd.setCursor(11, 0); lcd.print(sensorValueT); // влажность lcd.setCursor(0, 1); lcd.print("H: "); lcd.setCursor(3, 1); lcd.print(" "); lcd.setCursor(3, 1); lcd.print(h); lcd.print(" %"); lcd.setCursor(11, 1); lcd.print(" "); lcd.setCursor(11, 1); lcd.print(sensorValueH); // блок регуляторов температуры и влажности if ( t < sensorValueT - deltaT/2) { digitalWrite( ledT, HIGH ); digitalWrite(RelayPin[1],HIGH); } else if ( t > sensorValueT + deltaT/2) { digitalWrite( ledT, LOW ); digitalWrite(RelayPin[1],LOW); } if ( h < sensorValueH - deltaH/2) { digitalWrite( ledH, HIGH ); digitalWrite(RelayPin[2],HIGH); } else if ( h > sensorValueH + deltaH/2) { digitalWrite( ledH, LOW ); digitalWrite(RelayPin[2],LOW); } delay (200); } } А вот как вся эта радость выглядит, слева на экране фактическая температура и влажность, справа заданная потенциометрами, релюшки как и положено щелкают Поскольку устройство собрано на поиграться то и исполнение соответствующее: 98.jpeg ( 212.68 килобайт ) Кол-во скачиваний: 9 |
|
|
19.5.2014, 21:44
Сообщение
#10
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
Перенесено из темы "Кто чем занят?"
+1 очень тихо. По части Linux-а в данный момент не занят ничем ( нет лишнего времени на никому не нужные проекты ), разве что arduino из под него программирую. Кстати, Иван очень тебе советую, программирование таких железок крайне увлекательное занятие Костя, можешь чайникам на пальцах.. Что да как? Что брать для игры из платок на алиэкспрессе? |
|
|
19.5.2014, 22:27
Сообщение
#11
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Так результат ведь нужен какой-то, одной увлекательности мало. Нет вдохновляющих идей в этом направлении. 1 ) Иван, идей море : http://kaburka.ru/cat105-arduino http://habrahabr.ru/hub/arduino/ http://relax.ru/tag/7844/sintezator.html ( сейчас как раз раздумываю на тему синтезатора с клавиатурой из монет - идея просто гениальная ) 2) Юра я затариваюсь здесь http://fixled.ru/arduino просто заезжаю туда за железяками. Для начала возьми Uno или какой-либо его китайский клон : http://fixled.ru/arduino/arduino-uno.html на него ставятся все стандартные шилды http://fixled.ru/microcontrollers/pro-micro-5v.html не брал но наверное возьму для простых поделок то что надо ( тут уже надо паять, правда это тебя наверняка не пугает ), есть много разных идей под эту платку По шилдам , смотря что собираешься делать , если роботами баловаться то можно сразу : http://fixled.ru/arduino/arduino-shield-bot.html в нем кстати и Uno уже есть или набирать по шилдам и датчикам : http://fixled.ru/shields/motor-shield-l293d.html - покрутить движками http://fixled.ru/shields/4relay-shield.html - под автоматику http://fixled.ru/microcontrollers/modules/...nic-ranger.html - "глаза" для робота http://fixled.ru/mechanics/fs5103b.html сервы на покрутить и так далее под конкретную задачу, если что для продолжения переезжаем в эту тему: http://forum.russ2.com/index.php?showtopic=3973 Сообщение отредактировал IVK - 19.5.2014, 22:46 |
|
|
19.5.2014, 22:57
Сообщение
#12
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Костя, можешь чайникам на пальцах.. Что да как? Что брать для игры из платок на алиэкспрессе? Кстати, посмотрел цены на алиэкспрессе - практчески бесплатно, ты у них уже чего-нибудь брал ? Как там со сроками и ценой на доставку ? Сообщение отредактировал kostyalamer - 19.5.2014, 22:57 |
|
|
20.5.2014, 1:55
Сообщение
#13
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
Кстати, посмотрел цены на алиэкспрессе - практчески бесплатно, ты у них уже чего-нибудь брал ? Как там со сроками и ценой на доставку ? Я начинающий интернет покупатель Там есть бесплатная доставка в РФ (можно отфильтровать по бесплатной доставке и единичному товару). С платной доставкой выходит дороговато обычно. Сроки зависят от почты А наша почта Правда так как платная доставка тоже часто через почту и сроки почти те же, то совсем платить за доставку не охота... Вот сейчас жду DC-DC конвертер, т.к. поглядел ценник у них и "чтоб собрать из магазинных деталек" и понял, что лучше подожду (тем более время терпит). Платил через КиВи. Скидываю туда четко сумму для покупки и контролирую чтоб статус после оплаты был "отправлено". (тут тоже от продавца зависит - иногда оговаривает срок между оплатой и отправкой в несколько дней). Заказы лучше брать у кого хороший рейтинг и где много отзывов о том что реально приходит Дорогое и ценное брать там не собираюсь - т.к. хоть и есть гарантия у нормальных поставщиков (реально принимают назад и ремонтируют, возвращают), но это страшно огромные сроки. С другой стороны знаю реальную историю успеха покупки через интернет в Китае достаточно большого станка Но это для очень сильных духом А вот мелочевку... Значит УНО... http://ru.aliexpress.com/item/Best-prices-.../909950710.html вот такое для старта подойдет? |
|
|
20.5.2014, 7:51
Сообщение
#14
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Значит УНО... http://ru.aliexpress.com/item/Best-prices-.../909950710.html вот такое для старта подойдет? По крайней мере контроллер внутри тот же а уж чего в него зашили китайцы не знаю, кстати там же есть и более дешевый вариант : http://ru.aliexpress.com/item/Free-Shippin...1855253249.html |
|
|
20.5.2014, 15:56
Сообщение
#15
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10092 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
1 ) Иван, идей море : http://kaburka.ru/cat105-arduino http://habrahabr.ru/hub/arduino/ http://relax.ru/tag/7844/sintezator.html ( сейчас как раз раздумываю на тему синтезатора с клавиатурой из монет - идея просто гениальная ) Всё это очень здорово, но сейчас я точно не в состоянии этим заниматься... потому что не могу разорваться на части -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
20.5.2014, 17:18
Сообщение
#16
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
По крайней мере контроллер внутри тот же а уж чего в него зашили китайцы не знаю, кстати там же есть и более дешевый вариант : http://ru.aliexpress.com/item/Free-Shippin...1855253249.html А это что за чудо юдо http://ru.aliexpress.com/item/Pro-Mini-Mod...1503533345.html ? Типа http://fixled.ru/microcontrollers/pro-micro-5v.html ? Или непонятно что ? |
|
|
20.5.2014, 20:26
Сообщение
#17
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
А это что за чудо юдо http://ru.aliexpress.com/item/Pro-Mini-Mod...1503533345.html ? Типа http://fixled.ru/microcontrollers/pro-micro-5v.html ? Или непонятно что ? Скорее непонятно что, на плате нет ни микро -USB ни 6-ти штырькового разъема для подключения программатора, лучше возьми вот эту штуку: http://ru.aliexpress.com/item/Freeshipping...1511600580.html кабель микро - USB найти проще чем программатор, который к первой железяке надо еще как-то прикосячить |
|
|
20.5.2014, 21:24
Сообщение
#18
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
Скорее непонятно что, на плате нет ни микро -USB ни 6-ти штырькового разъема для подключения программатора, лучше возьми вот эту штуку: http://ru.aliexpress.com/item/Freeshipping...1511600580.html кабель микро - USB найти проще чем программатор, который к первой железяке надо еще как-то прикосячить да он 1 $ стоит http://ru.aliexpress.com/item/USB-To-RS232...1225758876.html http://pakhom.weebly.com/arduino_pro-mini.html Но похоже это уже для продвинутых... Сообщение отредактировал YYY - 20.5.2014, 21:25 |
|
|
20.5.2014, 21:43
Сообщение
#19
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Не, для продвинутых и экономных скорее вот это : http://fixled.ru/arduino/atmega8-bootloader.html |
|
|
20.5.2014, 22:02
Сообщение
#20
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
Не, для продвинутых и экономных скорее вот это : http://fixled.ru/arduino/atmega8-bootloader.html меня вот это заинтересовало http://фридуин.ство.рф/?p=75 т.е. возможность через usb чем-то управлять |
|
|
20.5.2014, 22:12
Сообщение
#21
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
меня вот это заинтересовало http://фридуин.ство.рф/?p=75 т.е. возможность через usb чем-то управлять Ну такая штука реализуется относительно просто. Пишешь программу на arduino , которая мониторит порт и в зависимости от того что ты туда отправляешь выполняет различные действия. Что-то подобное делал когда ковырялся в встроенных в среду программирования примерах . Можно и по wifi при наличии соответствующей шилды, это наверное еще более любопытно. |
|
|
20.5.2014, 22:46
Сообщение
#22
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
Ну такая штука реализуется относительно просто. Пишешь программу на arduino , которая мониторит порт и в зависимости от того что ты туда отправляешь выполняет различные действия. Что-то подобное делал когда ковырялся в встроенных в среду программирования примерах . Можно и по wifi при наличии соответствующей шилды, это наверное еще более любопытно. Не. Я с учетом того что по OTG умееют все многие мини девайсы - недорогие смартфоны, планшеты, автонавигаторы. И вот если получится ими через сабж управлять всякими реле и приводами - этож огого! |
|
|
21.5.2014, 6:26
Сообщение
#23
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Не. Я с учетом того что по OTG умееют все многие мини девайсы - недорогие смартфоны, планшеты, автонавигаторы. И вот если получится ими через сабж управлять всякими реле и приводами - этож огого! Этого в интернете сколько угодно, вот например : http://cxem.net/arduino/arduino54.php http://habrahabr.ru/post/123361/ а можно и синим зубом - http://wiki.amperka.ru/%D0%B1%D0%B5%D1%81%...D0%B8-bluetooth |
|
|
21.5.2014, 7:43
Сообщение
#24
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Вот еще очень интересная штука : http://www.polesite.ru/?p=2418
|
|
|
21.5.2014, 20:08
Сообщение
#25
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
Купил набор
http://ru.aliexpress.com/item/Pro-Mini-Mod...1503533345.html http://ru.aliexpress.com/item/USB-To-RS232...1225758876.html Обошелся менее 160 рэ. Буду ждать, а как придет - завалю вопросами |
|
|
12.6.2014, 23:13
Сообщение
#26
|
|
Профессионал Группа: Пользователь Сообщений: 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
Сообщение
#27
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 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
Сообщение
#28
|
|
Профессионал Группа: Пользователь Сообщений: 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 |
|
|
13.6.2014, 11:28
Сообщение
#29
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
спасибо !
|
|
|
15.6.2014, 8:44
Сообщение
#30
|
|
Профессионал Группа: Активный Пользователь Сообщений: 1655 Регистрация: 12.10.2010 Вставить ник Цитата Пользователь №: 1950 Страна: Россия Город: Не указан Пол: Муж. Репутация: 8 |
Получил вторую часть.
В системе usb 2-2: pl2303 converter now attached to ttyUSB0 |
|
|
Текстовая версия | Сейчас: 10.10.2024, 3:08 | |