Немного лирического вступления.
После моего увлечения 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 комментариев на «“Универсальный шилд (для обучения)”»
Отличная идея! Делай в домашних масштабах и продавай недорого — спрос будет.
единственно я бы сделал более модульно, но тогда получается уже прото шилд.
Отличный шилд. только есть небольшой вопрос по обозначению на схеме. подключение светодиодов, на схеме не указано, где анод и катод. если можно, то объясните. спасибо
Ну, сорри. Не акцентировал на это внимание.
У светодиода длинный вывод — анод — сюда надо подавать плюсик (лог. единицу, HIGH) — Т.е., паять к резисторам.
А катод (короткая ножка) — на землю GND (катоды в схеме объеденены на землю).
Вот, почитай
P.S., если сделаешь пришли фото (очень любопытно)!!!
хорошо, как сделаю, пришлю. а какой термодатчик вы использовали? вот такой пойдет?
Я ставил терморезистор, который был выпаян из старой мат. платы (стояла такая капелька под процессором, вот примерно такой ). На плате было маркировка, что это терморезистор. Померял тестером — 10 кОм. Нагрел, сопротивление изменилось, остыл — вернулось. Значит — то, что мне нужно. Еще встречал такие в БП.
А тот вариант, что вы насмотрели, наверное тоже можно использовать, но скорее всего последовательно с ним нужной поставить резистор 🙂