Немного лирического вступления.
После моего увлечения Arduino , я, естественно, пытался подсадить заинтересовать этим делом многих своих знакомых. И одной из жертв моих попыток стал паренек лет 12. Очень страстно увлекался компьютерами. Ну как компьютерами, в основном игры и соц. сети. Даже так, ТОЛЬКО ИГРЫ и иногда соц. сети 🙂 Дай думаю, сделаю доброе дело, пускай займется чем-то полезным, пробует, творит, программирует и т.д. Я подарил ему плату Arduino (один из китайских клонов) и небольшую макетную плату с кучкой соединительных проводков. Несколько вечеров потратил на «вводную часть», распечатал для него какую-то книгу с примерами (что-то типа, «Ардуино для маленьких волшебников»), собрал небольшой Starter Kit (резисторы, светодиоды, пищалки…). Ну и вперед! Что-то у него получалось, что-то не очень. Причем иногда из-за проблем с соединениями на макетке, будь оно не ладно. И мне пришла мысль, что для таких целей было бы удобно иметь некий простенький шилд с необходимыми кусками схем из примеров. Помимо обучения, такой шилдик можно использовать для быстрой отладки какой-нибудь идеи… Как говориться: «Мужик сказал-мужик сделал!». Изготовление такого «Shield для обучения» у меня заняло один выходной. Готовое устройство было торжественно вручено юному «программисту»!
А у меня осталось несколько фоток процесса сборки и печатная плата в SprintLayout. И вот, наконец-то, поборов природную лень, я решил собрал все, что касалось этого шилда в некий законченный вид. (Нарисовать, в конце концов, схему хотя бы :)).
Вот схема (или даже набор схем) данного шилда:
Фактически, данный шилд — это набор полезных для обучения модулей, которые с помощью перемычек, подключаются к соответствующим пинам:
— Сдвиговый регистр 74НС595 с набором светодиодов
— Микрофонный усилитель на LM386
— терморезистор с обвязкой
— фоторезистор с обвязкой
— RGB светодиод
— обычный 5мм светодиод
— небольшой KeyPAD
— Буззер
И все это богатство на одной маленькой плате 🙂 Ну разве не клево?
Печатная плата вышла такая (не критикуйте сильно, это период моего освоения SprintLayout…):
Каждый узел отключается соответствующей перемычкой. Дефицитных деталей нету. Единственное, что я купил — это RGB-светодиод, фоторезистор и SMD резисторы. Буззер и терморезистор были «извлечены» из старой материнской платы. Ниже подготовка к запайке и сбор деталек:
Про ЛУТ и пайку писать особо нечего. Получившейся результат в разных ракурсах:
еще:
еще:
Немного поясняющих надписей:
Красным цветом я обозначил назначение перемычек. Поясню. Допустим для некого проекта нам нужны кнопки и RGB светодиод. Значит оставляем перемычки на выводах [Key En] и [RGB En], остальные можно снять…Ну и так далее. В правом верхнем углу нашлось место для выводов сигналов TX,RX,GND,+5В, это для возможного подключения всяких радио/блютуз и т.п. модулей. Чтобы не забыть, что куда подключается, я приклеил в левом нижнем углу платы небольшую бумажную памятку 🙂
Из примеров работы, я сумел отыскать у себя только вот такой скетч (я только немного дописал комментарии):
(Напомню, что для работы этого примера перемычки должны стоять на [74HC595 En], [Led En], [Mic En]).
/** Demo для универсального шилда сигнал с микрофона выводиться на линейку светодиодов **/ //хардварное подключение узлов const byte MicPin=3; // const byte TermoPin=2; // const byte PhotoPin=1; const byte ledPin=11; //это подключение 74HC595 byte latchPin = 9; byte clockPin = 8; byte dataPin = 10; int result=0; void setup() { Serial.begin(9600); //осталось от отладки pinMode(ledPin,OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(A0, INPUT); } void loop() { digitalWrite (ledPin,LOW); result = mic_level(MicPin);//сигнал будем брать с микрофона // result=Photo_level(PhotoPin)-80; //сигнал будем брать с фоторезистора // result = (1023-Termo_level(TermoPin)); //сигнал будем брать с терморезистора if (result>750) digitalWrite(ledPin,HIGH); //Отображение пикового сигнала, а-ля перегруз result = map(result, 0, 1023, 1, 256); //пересчет результата Show (result,0); //вывод результата // delay(200); } //процедура вывода результата на линейку светодиодов //второй параметр определяет как выводить результат // 1- в линейном виде // 0- в двоичном коде void Show (int result, boolean lin){ if (lin){ result=(result>>5); // result=result/32; result=255>>(8-result); } Serial.println(result); digitalWrite(latchPin, LOW); shiftOut (dataPin, clockPin, MSBFIRST, result); digitalWrite(latchPin, HIGH); } // Читаем данные с фоторезистора int Photo_level(int PhotoPin){ int val = analogRead(PhotoPin); return val; } // Читаем данные с терморезистора int Termo_level(int TermoPin){ int val = analogRead(PhotoPin); return val; } // Читаем данные с микрофона и считаем макс. амплитуду int mic_level(int MicPin){ int mn = 1024; // mn only decreases int mx = 0; // mx only increases for (int i = 0; i < 200; ++i) { int val = analogRead(MicPin); mn = min(mn, val); mx = max(mx, val); } return (mx-mn); }
Вот такая загогулина. Весь материал забираем одним архивом тут!
0 комментариев на «“Универсальный шилд (для обучения)”»
Отличная идея! Делай в домашних масштабах и продавай недорого — спрос будет.
единственно я бы сделал более модульно, но тогда получается уже прото шилд.
Отличный шилд. только есть небольшой вопрос по обозначению на схеме. подключение светодиодов, на схеме не указано, где анод и катод. если можно, то объясните. спасибо
Ну, сорри. Не акцентировал на это внимание.robocraft.ru/blog/arduino/1010.html.
У светодиода длинный вывод — анод — сюда надо подавать плюсик (лог. единицу, HIGH) — Т.е., паять к резисторам.
А катод (короткая ножка) — на землю GND (катоды в схеме объеденены на землю).
Вот, почитай
P.S., если сделаешь пришли фото (очень любопытно)!!!
хорошо, как сделаю, пришлю. а какой термодатчик вы использовали?robocraft.ru/shop/index.php?route=product/product&path=45&product_id=196 вот такой пойдет?
Я ставил терморезистор, который был выпаян из старой мат. платы (стояла такая капелька под процессором, вот примерно такойhttp://www.overclockers.ru/images/lab/2007/09/26/39b_sil35_DCE.jpg ). На плате было маркировка, что это терморезистор. Померял тестером — 10 кОм. Нагрел, сопротивление изменилось, остыл — вернулось. Значит — то, что мне нужно. Еще встречал такие в БП.
А тот вариант, что вы насмотрели, наверное тоже можно использовать, но скорее всего последовательно с ним нужной поставить резистор 🙂