Arduino / Freeduino (в обычном — не Mega варианте) имеет 6 входов АЦП, позволяющих измерять значение напряжения (в диапазоне 0-5В). Скорострельность у него не шибко быстрая, поэтому цифровой осциллограф сделать не получится :). Зато у меня получилось сделать очень простой регулятор громкости для компьютера с тремя ползунками — отдельно Master, отдельно Wave, отдельно MIDI, и разместить его в 5" отсеке компьютера.
Под катом небольшое описание, ссылки на исходники, видео, и конкурс «угадай мелодию» :)
Действительно, на основе любого светодиода можно соорудить весьма недурственный датчик освещенности вроде того, который меряет освещенность на улице, чтобы автоматически включать лампу возле подъезда вечером.
Пост можно было озаглавить «удивительное рядом» — несмотря на то, что при внимательном рассмотрении принцип действия становится понятен довольно быстро, о подобном применении светодиодов знает, наверное, не каждый.
Допустим, Вы решили оформить написанные Вами функции/классы для Arduino в библиотеку, чтобы Вам самим было проще с ними работать, и главное, чтобы кто-то другой мог с помощью Вашей библиотеки спокойно решать данные задачи, поминая Вас добрым словом, а не выдумывать новый велосипед.
Опишу минимум особенностей, в расчете на читателя, хотя бы немного знакомого с программированием на C/C++.
Подцепил к Arduino пару здоровых амперметров — открутил от них шунты, и через сопротивления на ШИМ выходы повесил.
Сходу вспомнилось 3 варианта применения (пользы ноль, одно баловство :) ):
— измерение загрузки процессора (как раз сейчас процессоры 2-х ядерные пошли);
— вывод показаний спидометра и тахометра от гоночных игр;
— была еще идея VU-meter сделать для Winamp — пока руки не дошли.
Собственно вот фото, чтобы примерно прикинуть как это выглядит:
Хочется прояснить ситуацию с так называемым «языком программирования Arduino», который «основан на Wiring». Подобные сочетания слов часто встречаются на страничках, посвященных Arduino. На официальном сайте так и пишут: "...is programmed using the Arduino programming language (based on Wiring)". По факту нет никакого особого языка программирования, и фактически программы пишутся на C/C++, а компилируются и собираются с помощью широко известного avr-gcc.
Обнаружилась тут для Arduino занятная библиотечка, организующая сенсорное управление: www.arduino.cc/playground/Main/CapSense.
Принцип работы прост — соединяем две любые ноги резистором мегаом на несколько, одна нога будет выходом, вторая входом. Ко входу цепляем провод-сенсор, а еще лучше что-то плоское и проводящее – вроде куска медной фольги. Если выход переключать из 0 в 1 и обратно, то состояние входа тоже будет переключаться, но из-за различных паразитных емкостей процесс будет происходить с некоторой задержкой, и чем больше емкость (допустим, ближе находится рука человека), тем больше эта инерционность. Вот илюстрация от автора библиотеки: