Бумажное пианино ардуино: пошаговая инструкция

Делаем бумажное пианино на основе Ардуино

8 октября в 23:30

Уроки / Arduino

Создадим пианино с помощью Arduino, нарисованной клавиатуры с использованием свинцового карандаша, бумаги и динамика.

В итоге мы получим вот такое незамысловатое пианино на Ардуине:

Проект довольно не сложный и требует минимум деталей для исполнения.

  • Провода «папа-папа» × 1
  • Макетная плата (на выбор) × 1
  • Arduino Mega 2560 и Genuino Mega 2560 × 1
  • Резистор 1 Mом × 1
  • Спиккр 0.25 Вт, 8 Ом × 1
  • Карандаш
  • Бумага формата А4
  • Скрепка

Проект

Как уже было сказано выше — это простой проект и любой начинающий радиоэлектронщик с помощью рисованной клавиатуры с использованием свинцового карандаша, бумаги и динамика сможет сделать такое пианино.

Емкостное сенсорное восприятие — это способ сенсорного восприятия человека, для которого требуется мало силы или почти её отсутствие для активации. Его можно использовать для ощущения человеческого прикосновения более чем через 2 см пластика, дерева, керамики или другого изоляционного материала (но не через все виды металла), что позволяет полностью визуально скрывать датчик.

Почему емкостное прикосновение?

  • Для каждого сенсорного датчика требуется только один провод, подключенный к нему.
  • Может быть скрыт под любым неметаллическим материалом.
  • Можно легко использовать вместо кнопки.
  • Может обнаружить руку с нескольких сантиметров, если потребуется.
  • Очень недорогой вариант.

Как работает емкостный датчик?

Пластина датчика и ваше тело образуют конденсатор. Мы знаем, что конденсатор хранит заряд. Чем больше его емкость, тем больший заряд он может хранить.

Емкость этого емкостного сенсорного датчика зависит от того, как близко ваша рука к пластине.

Что делает Arduino?

В основном Arduino измеряет сколько времени конденсатору (т.е. сенсорный датчик) нужно на заряд, давая оценку емкости.

Емкость может быть очень малой, однако Ардуино измеряет ее с точностью.

Одним из способов использования емкостного прикосновения в проекте является использование библиотеки CapSense. Для библиотеки CapSense ардуино использует один разъем для отправки и любое количество принимаемых контактов. Получающий вход соединен со штырем отправки через резистор средней или большой величины.

Вот некоторые рекомендации для резисторов, но обязательно экспериментируйте:

  • Используйте резистор на 1 МОм (возможно и больше) для абсолютного касания для активации.
  • С резистором 10 МОм датчик начнет реагировать на 10-15 см.

Схема соединения

Теперь переходим к нашей принципиальной схеме нашего пианино на Ардуино. Выглядит это примерно так:

Код для Ардуино

Вы можете ниже скачать или скопировать код для пианино, который нужно загрузить в микроконтроллер.

Перед этим нужно скачать библиотеку CapSense library:

Скачать CapacitiveSensor.zipСкачать arduino-piano.ino// Import the CapacitiveSensor Library. #include #define speaker 11 // Set the Send Pin & Receive Pin. CapacitiveSensor cs_2_3 = CapacitiveSensor(2,3); CapacitiveSensor cs_2_4 = CapacitiveSensor(2,4); CapacitiveSensor cs_2_5 = CapacitiveSensor(2,5); CapacitiveSensor cs_2_6 = CapacitiveSensor(2,6); CapacitiveSensor cs_2_7 = CapacitiveSensor(2,7); CapacitiveSensor cs_2_8 = CapacitiveSensor(2,8); CapacitiveSensor cs_2_9 = CapacitiveSensor(2,9); CapacitiveSensor cs_2_10 = CapacitiveSensor(2,10); void setup() { cs_2_6.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 — just as an example // Arduino start communicate with computer. Serial.begin(9600); } void loop() { // Set a timer. long start = millis(); // Set the sensitivity of the sensors. long total1 = cs_2_3.capacitiveSensor(3000); long total2 = cs_2_4.capacitiveSensor(3000); long total3 = cs_2_5.capacitiveSensor(3000); long total4 = cs_2_6.capacitiveSensor(3000); long total5 = cs_2_7.capacitiveSensor(3000); long total6 = cs_2_8.capacitiveSensor(3000); long total7 = cs_2_9.capacitiveSensor(3000); long total8 = cs_2_10.capacitiveSensor(3000); Serial.print(millis() — start); // check on performance in milliseconds Serial.print(» «); // tab character for debug windown spacing Serial.print(total1); // print sensor output 1 Serial.print(» «); // Leave some space before print the next output Serial.print(total2); // print sensor output 2 Serial.print(» «); // Leave some space before print the next output Serial.print(total3); // print sensor output 3 Serial.print(» «); // Leave some space before print the next output Serial.print(total4); // print sensor output 4 Serial.print(» «); // Leave some space before print the next output Serial.print(total5); // print sensor output 5 Serial.print(» «); // Leave some space before print the next output Serial.print(total6); // print sensor output 6 Serial.print(» «); // Leave some space before print the next output Serial.print(total7); // print sensor output 7 // Leave some space before print the next output Serial.print(» «); Serial.println(total8); // print sensor output 8 // «println» — «ln» represent as «line», system will jump to next line after print the output. // When hand is touched the sensor, the speaker will produce a tone. // I set a threshold for it, so that the sensor won't be too sensitive. if (total1 > 500) tone(speaker,131); // frequency if (total2 > 500) tone(speaker,147); // you can see https://www.arduino.cc/en/Tutorial/toneMelody if you want to change frequency if (total3 > 500) tone(speaker,165); if (total4 > 500) tone(speaker,175); if (total5 > 500) tone(speaker,196); if (total6 > 500) tone(speaker,220); if (total7 > 500) tone(speaker,247); if (total8 > 500) tone(speaker,262); // When hand didn't touch on it, no tone is produced. if (total1

Источник: https://ArduinoPlus.ru/bumazhnoe-pianino-arduino/

Уроки Ардуино — учебник для начинающих

Эта вводная статья для тех, кто уже успел распаковать со своим ребенком десяток-другой цветных коробок от конструкторов, построил сотни разнообразных конструкций  и заполнил деталями от Лего все доступные емкости в чулане. Если вы готовы перейти на следующий уровень:  с электроникой, микроконтроллерами, датчиками и умными устройствами — значит, пришло время для экспериментов с Ардуино!

В этой серии статей мы соберем самое главное, что нужно узнать об Ардуино, чтобы начать заниматься с детьми самостоятельно.

Читайте также:  Avr studio: среда разработки для программирования и отладки

Даже если вы никогда не брали в руки паяльник и слова «контроллер» и «контроллёр» для вас имеют примерно схожий смысл, можете быть уверенными – у вас все равно все получится! Мир электроники и робототехники сегодня полон простых и очень удобных решений, позволяющих практически с нуля создавать очень интересные проекты. Наш учебник поможет вам быстро сориентироваться и сделать первые шаги.

Начало работы с Ардуино

Говоря бытовым языком, Ардуино – это электронная плата, в которую можно воткнуть множество разных устройств и заставить их работать вместе с помощью программы, написанной на языке Ардуино в специальной среде программирования.

Чаще всего плата выглядит вот так:

На рисунке показана одна из плат Ардуино — Arduino Uno. Мы изучим ее подробнее на следующих уроках.

В плату можно втыкать провода и подключать множество разных элементов. Чаще всего, для соединения используется макетная плата для монтажа без пайки.

Можно добавлять светодиоды, датчики, кнопки, двигатели, модули связи, реле и создавать сотни вариантов интересных проектов умных устройств.

Плата Ардуино — это умная розетка, которая будет включать и выключать все присоединенное в зависимости от того, как ее запрограммировали.

Вся работа над проектом разбивается на следующие этапы:

  1. Придумываем идею и проектируем.
  2. Собираем электрическую схему.
  3. Подключаем плату Arduino к компьютеру через USB.
  4. Пишем программу и записываем ее в плату буквально нажатием одной кнопки на экране в специальной среде программирования Arduino.
  5. Отсоединяем от компьютера.  Теперь устройство будет работать автономно — при включении питания оно будет управляться той программой, которую мы в него записали.

Программа и среда программирования выглядят вот так:

На экране показана программа (на сленге ардуинщиков текст программы называется «скетч»), которая будет мигать лампочкой, подсоединенной к 13 входу на плате Ардуино UNO. Как видим, программа вполне проста и состоит из понятных для знающих английский язык инструкций. В языке программирования Arduino используется свой диалект языка C++, но все возможности C++ поддерживаются.

Есть и другой вариант написания кода — визуальный редактор. Тут не нужно ничего писать — можно просто перемещать блоки и складывать из них нужный алгоритм. Программа загрузится в подключенную плату одним нажатием кнопки мыши!

Визуальную среду рекомендуется использовать школьникам младших классов, более старшим инженерам лучше сразу изучать «настоящий» Ардуино — это довольно просто, к тому же знания C++ никому не повредят.

В целом все выглядит довольно понятно, не так ли? Осталось разобраться в деталях.

Быстрый старт с Arduino

Для начала давайте поймем, с чем же и чем же мы собираемся заниматься. Что такое Ардуино и как его использовать? Если вы уже знакомы с темой — можете смело перескочить дальше.  Если нет – давайте вместе выполним короткое погружение.

Ардуино — это…

Ардуино – это не бренд и не название поставщика конструкторов.

Это общее название для целого семейства различных технологий и открытой платформы, в которую входят как аппаратные устройства (платы контроллеров и совместимое оборудование), так и софт, предназначенный для управления железками.

По сути своей, Ардуино — это инфраструктура и среда,  в которой можно собирать совместимые между собой электронные и механические компоненты в единое устройство, а потом через обычный компьютер за две минуты запрограммировать поведение этих самых железок так, как нам нужно.

Ардуино – это мостик из виртуального компьютерного мира в мир реальных вещей и устройств. Написав программу на обычном компьютере, мы управляем с ее помощью не виртуальными объектами, а вполне себе реальными датчиками, двигателями, экранами. Мы меняем мир вокруг себя – просто программируя на компьютере, используя бесплатный софт и множество уже готовых примеров библиотек.

Создателем Ардуино принято считать преподавателя института IDII итальянского города Ивреи Массимо Банци, который пытался создать удобную платформу для обучения студентов программированию.

Выбрав уже готовый микроконтроллер ATMEGA, он просто добавил на плату необходимую для удобной работы обвязку.

Собравшаяся затем великолепная команда из инженеров-электронщиков и разработчиков софта смогла создать продукт, который оказался крайне востребован рынком и быстро завоевал популярность. Более подробно об Ардуино можно почитать здесь и здесь.

Свое название технология получила, как это часто бывает, довольно случайно. Источником вдохновения послужил бар, в котором будущие создатели Ардуино любили выпить по кружечке чая.

Называлось заведение именно так — Arduino, по имени главной исторической личности города Ивреа, короля Ардуино.

Король какого-то яркого следа в истории не оставил и прослыл неудачником, но благодаря команде разработчиков новой платформы обрел новую популярность и сейчас известен  миллионам людей по всему земному шару.

Почему Ардуино?

Вся прелесть  Ардуино заключается в следующих простых преимуществах:

  1. Простота. Да, да – именно простота (хотя Лего и другие игрушки, без сомнения, привычнее, но мы сравниваем не с ними). Для юных разработчиков электроники Ардуино «прячет» огромное количество разнообразных технических вопросов. Многие достаточно сложные проекты можно создавать очень быстро, без длительного погружения в детали.  А это ведь очень важно для ребенка – не утратить интерес до первого полученного своими руками результата.
  2. Популярность. Ардуино крайне популярна, вы сможете без труда найти ответы на любые вопросы на многочисленных форумах или сайтах. Сообщество Ардуино обширно и дружелюбно — там относительно мало прожженных жизнью снобов-инженеров и полно любителей и начинающих, с удовольствием делящихся своей радостью от найденного и узнанного. Это, конечно, откладывает отпечаток на качество советов, но как правило, даже самые сложные вопросы могут быть быстро решены с помощью форумов и сайтов.
  3. Доступность. И сама технология, и практически весь софт выпускаются под открытыми лицензиями и вы можете свободно использовать чужие наработки, библиотеки, схемы, причем во многих случаях даже для коммерческого использования. Это экономит много времени и позволяет двигаться большими шагами, опираясь на опыт предыдущих исследователей.
  4. Дешевизна. Комплект для первых занятий электроникой и программированием можно купить менее чем за 500 рублей. Полноценные курсы робототехники возможны при покупке оборудования на 3-5 тысяч рублей. Никакая другая технология не позволит вам так быстро и так эффективно войти в мир реальной учебной робототехники.
Читайте также:  Отличия сервопривода от шагового двигателя

С чего начать?

Если вы хотите заниматься робототехникой с использованием Ардуино,  то вам понадобится такой вот джентельменский набор:

  1. Ардуино с USB кабелем для подключения к компьютеру.
  2. Монтажная плата и провода.
  3. Комплект базовых электронных компонентов и переходник для батарейки типа крона.
  4. Установленная на компьютер среда программирования Arduino IDE

Все оборудование продается в наборах, называемых стартовыми – на алиэкспрессе ищите по словам «starter kit».

В дальнейшем, если занятия действительно увлекут и будет желание продолжить эксперименты, то список оборудования будет расширяться:

  1. Датчики
  2. Экраны и индикаторы.
  3. Двигатели и сервоприводы, реле и драйверы двигетелй.
  4. Модули связи.
  5. Разнообразные дополнительные модули и платы расширения (шилды)

Если первые шаги дадут результат, со временем вы будете узнавать половину людей, стоящих в очереди на почте (если до сих пор вы их еще не знаете), а почтальоны при встрече будут узнавать вас в лицо и нервно перебегать на другую сторону дороги.

Как купить Ардуино?

Прежде чем узнать что-то полезное, надо сначала купить что-то полезное. Для экспериментов с электроникой вам понадобится та сама электроника в виде конструктора или отдельных плат.

Рекомендуется купить не очень дорогой отечественный набор с основными компонентами и затем уже заказать себе с Алиэкспресса датчики, двигатели, контроллеры и другие сокровища. Полезные советы по выбору платы можно найти в инернете (не только на нашем сайте).

  Если вы живете в большом городе, то покупка всего необходимого займет максимум два дня. Найти нужный магазин легко в интернете.

Пару слов о платах Arduino. Сегодня их на совершенно легальных условиях может делать любой производитель: как крупный, такой как Intel, так и мелкие noname поставщики из Китая.

Надежность и удобство «китайских» и «официальных» платы Ардуино в большинстве случаев одинаковые.

Поэтому незачем переплачивать – для своих учебных проектов можете смело покупать аналоги, которые легко найти в интернете.

Как отличить «оригинал» от «совместимой платы»:

  1. «Китайские» платы не имеют права ставить логотип Ардуино.
  2. «Китайские» платы стоят гораздо дешевле.
  3. «Китайские» часто используют другой чип для обслуживания соединения с компьютером, на который нужны специальные драйвера. Драйвера устанавливаются за секунду и практически никогда не вызывают каких-либо проблем.

Еще раз подчеркнем, использование не оригинальных плат совершенно легально. Ардуино – открытая архитектура и разработчики дают возможность собрать свою версию платы всем желающим.

Нет возможности купить?

Если вы живете в Антарктиде или у вас действительно не хватает средств даже на самые простые наборы, то не отчаивайтесь – можно начать изучение Ардуино на виртуальных тренажерах. Самый мощный, простой и популярный сегодня вариант – это онлайн сервис Tinkercad от известной компании Autodesk.

Вы сможете создавать электронные схемы, подключая множество разнообразных компонентов, а затем «включать» питание и измерять все электрические показатели. В библиотеке устройств есть и плата Ардуино, и даже встроенный редактор для программирования (включая визуальный!).

Вы можете найти на нашем сайте отдельную статью с подробной информацией о Tinkercad.

Полезные ссылки на учебники и сайты по Ардуино

Официальные сайты ардуино:

Отличные сайты с большим объемом полезной информации

И естественно, море полезной информации на Хабрхабре.

Подводим итоги урока

В этой короткой начальной статье мы с вами узнали, что такое Ардуино, почему эту технологию называют именно так, как выглядят типичные проекты с использованием контроллеров Arduino.

Начать создавать интересные технические проекты очень просто — для этого не обязательно быть электронщиком.

Просто возьмите плату ардуино, соберите с ее помощью нужную электронную схему (можно найти много готовых примеров в интернете), подключите контроллер к компьютеру и загрузите программу. Умное устройство готово!

В следующих уроках мы с вами узнаем, как работает контроллер, разберем устройство платы Arduino Uno и запустим свой первый проект.

Источник: https://ArduinoMaster.ru/uroki-arduino/arduino-uroki-nachalo-raboty/

Simple piezo piano using Arduino

It’s time to make some noise, ok musicians friends who have an Arduino board and some time to spend, I’ll show you how to build a very simple piano using a piezo for playing sound.

Our piano is gonna have the basec 8 notes : ‘c’  , ‘d’,  ‘e’,  ‘f’,  ‘g’, ‘a’,  ‘b’,  ‘C’ so that’s what we need to create this :

– Arduino board

– Piezo (for sound output)

– 8 buttons (one for every note)

– 8 Resistors (for the buttons)

– 10 Cables

The circuit connectivity :

Читайте также:  Raspberry pi 3: технологии для улучшения платы

As you see there are 8 buttons / notes in a row for  ‘c’  , ‘d’,  ‘e’,  ‘f’,  ‘g’, ‘a’,  ‘b’,  ‘C’ and when you press one you gonna hear the sound (within frequency creation) from the piezo.

The Arduino code is really simple, it just reads the signals from the buttons and it creates a frequency to produce sound with the piezo.

The code follows bellow :

int button_C = 2; int button_D = 3; int button_E = 4; int button_F = 5; int button_G = 6; int button_A = 7; int button_B = 8; int button_Cup = 9; int speaker = 13; int buttonstate_C = 0; int buttonstate_D = 0; int buttonstate_E = 0; int buttonstate_F = 0; int buttonstate_G = 0; int buttonstate_A = 0; int buttonstate_B = 0; int buttonstate_Cup = 0; //NOTES 'c' , 'd', 'e', 'f', 'g', 'a', 'b', 'C' int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; //freq int Cur_tone = 0; void setup() { pinMode(button_C, INPUT); pinMode(button_D, INPUT); pinMode(button_E, INPUT); pinMode(button_F, INPUT); pinMode(button_G, INPUT); pinMode(button_A, INPUT); pinMode(button_B, INPUT); pinMode(button_Cup, INPUT); pinMode(speaker, OUTPUT); } void loop() { buttonstate_C = digitalRead(button_C); buttonstate_D = digitalRead(button_D); buttonstate_E = digitalRead(button_E); buttonstate_F = digitalRead(button_F); buttonstate_G = digitalRead(button_G); buttonstate_A = digitalRead(button_A); buttonstate_B = digitalRead(button_B); buttonstate_Cup = digitalRead(button_Cup); if((buttonstate_C == HIGH) || (buttonstate_E == HIGH) || (buttonstate_G == HIGH) || (buttonstate_D == HIGH) || (buttonstate_F == HIGH) || (buttonstate_A == HIGH) || (buttonstate_B == HIGH) || (buttonstate_Cup == HIGH) ) { if (buttonstate_C == HIGH) { Cur_tone = tones[0]; } if (buttonstate_E == HIGH) { Cur_tone = tones[1]; } if (buttonstate_G == HIGH) { Cur_tone = tones[2]; } if (buttonstate_D == HIGH) { Cur_tone = tones[3]; } if (buttonstate_F == HIGH) { Cur_tone = tones[4]; } if (buttonstate_A == HIGH) { Cur_tone = tones[5]; } if (buttonstate_B == HIGH) { Cur_tone = tones[6]; } if (buttonstate_Cup == HIGH) { Cur_tone = tones[7]; } digitalWrite(speaker, HIGH); delayMicroseconds(Cur_tone); digitalWrite(speaker, LOW); delayMicroseconds(Cur_tone); } else //in case no button is pressed , close the piezo { digitalWrite(speaker, LOW); } }

As you see the frequencies for the notes are :

1915, 1700, 1519, 1432, 1275, 1136, 1014, 956

when you write this value of electricity into a piezo it produces those notes.

Источник: https://godspeech.wordpress.com/2012/06/06/simple-piezo-piano-using-arduino/

Мини ЧПУ плоттер на Arduino — Инструкции

В этом проекте я покажу вам как легко и просто построить свой дешевый мини ЧПУ плоттер на арудино. Конечно, ведь можно и просто взять и купить плоттер, но во первых это очень дорого, а во вторых не нужно мне

Источник: https://instructables.info/mini-chpu-plotter-na-arduino/

Arduino Piano

While I was free during my holiday, I decided to make a simple Arduino Piano playing musical notes. Playing musical notes is quite simple with the Arduino built in function Tone(). Overall this project’s difficulty should be easy. Another reason I wanted to make this mini project, is to make a piano with 12 keys, but using lesser amount of pins.

I came across with 74HC165 Parallel In, Serial Out Shift register which able to expand the input ports for microcontroller. This is a perfect time to include and learn how to use with it.

By using 74HC165 Shift register in this project, I can read 12 inputs by using only 4 pins, cool. In controlling 74HC165, I used the function shiftIn() which also includes in Arduino to read from the shift register.

I will try to cover a tutorial on how to use 74HC165 Shift Register when I have more free time.

74HC165 Parallel In, Serial Out Shift Register

To generate the tones for each keys, you would need to determine the frequency of each note. A good reference to obtain all the required frequencies, http://cs.nyu.edu/courses/fall03/V22.0201-003/notes.htm. Then you can just sound a tone by the following code, where pin is the pin number for speaker and frequency is frequency to be generated.

tone(pin, frequency)

Of course, when no keys is pressed, you want the speaker to play nothing. So you can stop playing by noTone() function.

How it operates? Each of the inputs at shift register are connected to a 10k ohm pull up resistor. The program will monitors the inputs from shift register.

It will read the inputs as a byte from each shift register. If there is any LOW detected, the program will determine which key is being pressed.

Each key is associated with different tone, and will be played from the Arduino pin through a speaker.

The code for Arduino is as below:

#define load 5
#define clock 6
#define data 7
#define enable 8
#define load1 9
#define clock1 10
#define data1 11
#define enable1 12
#define speaker 4
#define pot A0 void setup()
{
pinMode(speaker, OUTPUT);
pinMode(load, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(data, INPUT);
pinMode(enable, OUTPUT);
digitalWrite(load, HIGH);
digitalWrite(enable, HIGH);
pinMode(load1, OUTPUT);
pinMode(clock1, OUTPUT);
pinMode(data1, INPUT);
pinMode(enable1, OUTPUT);
digitalWrite(load, HIGH);
digitalWrite(enable, HIGH);
pinMode(pot,INPUT);
Serial.begin(9600);
} void loop()
{
unsigned int received=read_reg();
Serial.println(received,BIN);
int value=analogRead(pot);
if(value255&&value512&&value768)
{
switch(received)
{
case 65534:
tone(speaker,1046);
break;
case 65533:
tone(speaker,1108);
break;
case 65531:
tone(speaker,1175);
break;
case 65527:
tone(speaker,1245);
break;
case 65519:
tone(speaker,1319);
break;
case 65503:
tone(speaker,1397);
break;
case 65471:
tone(speaker,1480);
break;
case 65407:
tone(speaker,1568);
break;
case 65279:
tone(speaker,1661);
break;
case 65023:
tone(speaker,1760);
break;
case 64511:
tone(speaker,1865);
break;
case 63487:
tone(speaker,1976);
break;
default:
noTone(speaker);
break;
}
}
} int read_reg()
{
digitalWrite(load,LOW);
delayMicroseconds(5);
digitalWrite(load,HIGH);
digitalWrite(clock,HIGH);
digitalWrite(enable,LOW);
byte upper=shiftIn(data,clock,MSBFIRST);
byte lower=shiftIn(data,clock,MSBFIRST);
digitalWrite(enable,HIGH);
int incoming=lower|(upper

Источник: https://iamzxlee.wordpress.com/2014/02/28/arduino-piano/

Ссылка на основную публикацию