Набор-компаньон для Arduino Nano — необходимые компоненты и инструменты для DIY-электроники
Компоненты и материалы
| Arduino Nano R3 | ×1 |
| Кабель USB-A — Mini-USB | ×1 |
| Резистор 10 кОм | ×4 |
| Однооборотный потенциометр 10 кОм | ×1 |
| Тактильная кнопка 12 мм (SparkFun) | ×2 |
| Колодка переключателей (slide switch) | ×3 |
| Женский заголовок 8 позиций 1 ряд (0.1") | ×4 |
| Мужской заголовок 36 позиций 1 ряд (0.1") | ×2 |
| RGB LCD с подсветкой 16×2 (Adafruit) | ×1 |
| Корпус для 4×АА батарей | ×1 |
Необходимые инструменты
- Паяльник
- Клеевой пистолет
О проекте

Companion IC — это компактный прибор в виде микросхемы, объединяющий часы, измеритель сопротивления, измеритель емкости и тестер диодов. Включается нажатием наPin 1 корпуса. Идеально для рабочего стола — быстрое тестирование компонентов и проверка времени. Работает от батарей или USB.
Идея пришла, когда мне нужно было проверить конденсаторы на исправность, а мультиметр не имел функции измерения емкости. Я узнал, что Arduino умеет это делать. Решил сделать свой прибор, но неиспользуемые пины Arduino не устраивали — добавил автодиапазонный омметр, быстрый тестер LED/диодов и RTC-часы. Хотелось измерять компоненты, просто вставляя их в гнездо, без щупов. После мозгового штурма родился дизайн в виде микросхемы (IC).
Обновление (07.01.2016): Добавлен опциональный тест на прозвонку, см. комментарии.
Статья подробно описывает процесс создания — повторяйте шаги сами. Проект подходит для новичков с 2–3 неделями опыта Arduino/электроники.
Дизайн модифицируем — можно добавлять/удалять функции. Корпус сделан из картона, но при навыках можно использовать дерево или 3D-печать.
Фотографий много — почти каждый шаг задокументирован. Код разбит на части и шаги, точно так, как я его создавал. Код прокомментирован и отформатирован. По мере продвижения мы объединяем всё в финальный прибор. Это должно помочь понять логику. Если нет — пишите в комментариях.
Даже если не будете собирать — попробуйте на макетной плате или просто прочитайте: найдете метод или трюк, который пригодится когда-нибудь.
Шаг 1: Инструменты и компоненты

Список компонентов и материалов (ссылки на магазины — для справки):
- 1× Arduino Nano V3 (клон с CH340G) — eBay
- Mini USB кабель для Nano — именно Mini, не Micro!
- Картон — коробка упаковочная, толщина ~2 мм. Спросите у соседей, друзей, поищите.
- 4× Резистор 10 кОм
- 2× Резистор 220 Ом
- 1× Набор резисторов (1к, 4.7к, 47к, 100к) Ом
- 1× Маленький потенциометр 10 кОм — для контраста LCD
- 2× Микро тактильные кнопки — для сброса и смены режима
- 3× Маленькие колодки переключателей — для подсветки, пинов 0 и 1 (нужно отключать при Serial)
- 1× Защелкивающийся/тумблер/ латчинг кнопка — для питания
- Некоторые конденсаторы, диоды, LED — для тестов
- 4× Женская колодка pin header — eBay (40 пинов на полосу)
- 2× Мужская колодка pin header — eBay (40 пинов на полосу)
- 1× Символьный LCD 16×2 — eBay
- 1× Модуль RTC DS3231 или DS1307 — не покупайте дешевые на eBay, там подделки. Купите проверенные модули.
- 4× АА батареи (или ААА) — ААА проще, но емкость меньше
- 1× Корпус для 4 АА (или ААА), плоский вариант — eBay
- Одно жильный провод (22 AWG, для макетных плат)
- Шлейфный кабель (или тонкая витая пара) — eBay
- 2× Маленькие гайка и болт — из старого набора Meccano (болты 1.3 см)
- Черная акриловая краска и кисти
Инструменты:
- Паяльник
- Посол
- Оплетка для распайки
- Клеевой пистолет
- Малярный скотч
- Прозрачный скотч
- Обкусыватель, кусачки
- Острый канцелярский нож
- Острые ножницы
Шаг 2: Омметр — концепция

Основа измерения сопротивления — делитель напряжения.
Значения резисторов можно менять, изменяйте r1, r2 и т.д. Устанавливайте диапазоны (для автодиапазона) соответственно. См. код ниже, скачайте из файлов в конце и протестируйте омметр на макетной плате.
Если настраиваете Nano впервые, драйвер CH340G можно скачать здесь (Windows 7/8/8.1/10). Для Mac — здесь.
В меню Boards выберите «Arduino Nano» и правильный COM-порт. Загрузите!
Код омметра
// Аналоговый пин для измерения сопротивления
int Apin=7;
// Значения эталонных резисторов
float r1=1000; float r2=4700; float r3=10000; float r4=47000; float r5=100000;
// Пины управления резисторами
int r1_pin=2; int r2_pin=3; int r3_pin=4; int r4_pin=5; int r5_pin=6;
float reading=0; float R=0; String finalR; int caseno;
#include <stdlib.h> // для String(float,n)
void setup() { Serial.begin(9600); }
void loop() {
// Сначала измеряем с 1кОм — отключаем R2-R5
digitalWrite(r2_pin, LOW); pinMode(r2_pin, INPUT);
digitalWrite(r3_pin, LOW); pinMode(r3_pin, INPUT);
digitalWrite(r4_pin, LOW); pinMode(r4_pin, INPUT);
digitalWrite(r5_pin, LOW); pinMode(r5_pin, INPUT);
pinMode(r1_pin, OUTPUT); digitalWrite(r1_pin, HIGH);
reading=analogRead(Apin);
R=(reading*r1)/(1023-reading);
if(R<2850){ caseno=1;
if(R<1000){ finalR = String(R,2) + "Ohm"; }
else { R=R/1000; finalR = String(R,2) + "kOhm"; }
}
else if(R>=2850 && R<7350){ caseno=2;
digitalWrite(r1_pin, LOW); pinMode(r1_pin, INPUT);
digitalWrite(r3_pin, LOW); pinMode(r3_pin, INPUT);
digitalWrite(r4_pin, LOW); pinMode(r4_pin, INPUT);
digitalWrite(r5_pin, LOW); pinMode(r5_pin, INPUT);
pinMode(r2_pin, OUTPUT); digitalWrite(r2_pin, HIGH);
reading=analogRead(Apin);
R=(reading*r2)/(1023-reading)/1000;
finalR = String(R,2) + "kOhm";
}
else if(R>=7350 && R<28500){ caseno=3;
digitalWrite(r1_pin, LOW); pinMode(r1_pin, INPUT);
digitalWrite(r2_pin, LOW); pinMode(r2_pin, INPUT);
digitalWrite(r4_pin, LOW); pinMode(r4_pin, INPUT);
digitalWrite(r5_pin, LOW); pinMode(r5_pin, INPUT);
pinMode(r3_pin, OUTPUT); digitalWrite(r3_pin, HIGH);
reading=analogRead(Apin);
R=(reading*r3)/(1023-reading)/1000;
finalR= String(R,2) + "kOhm";
}
else if(R>=28500 && R<73500){ caseno=4;
digitalWrite(r1_pin, LOW); pinMode(r1_pin, INPUT);
digitalWrite(r2_pin, LOW); pinMode(r2_pin, INPUT);
digitalWrite(r3_pin, LOW); pinMode(r3_pin, INPUT);
digitalWrite(r5_pin, LOW); pinMode(r5_pin, INPUT);
pinMode(r4_pin, OUTPUT); digitalWrite(r4_pin, HIGH);
reading=analogRead(Apin);
R=(reading*r4)/(1023-reading)/1000;
finalR = String(R,2) + "kOhm";
}
else if(R>=73500){ caseno=5;
digitalWrite(r1_pin, LOW); pinMode(r1_pin, INPUT);
digitalWrite(r2_pin, LOW); pinMode(r2_pin, INPUT);
digitalWrite(r3_pin, LOW); pinMode(r3_pin, INPUT);
digitalWrite(r4_pin, LOW); pinMode(r4_pin, INPUT);
pinMode(r5_pin, OUTPUT); digitalWrite(r5_pin, HIGH);
reading=analogRead(Apin);
R=(reading*r5)/(1023-reading)/1000;
finalR = String(R,2) + "kOhm";
}
Serial.println(finalR); Serial.println(" "); delay(1000);
}
Шаг 3: Измеритель емкости — концепция

Концепция кода взята у Paul Badger (2008). Напряжение на конденсаторе за одно время-константу составляет 63.2% от зарядного напряжения.
Код измерителя емкости
int analogPin=0; int chargePin=7; int dischargePin=12;
float resistorValue=10000.0; // 10кОм
unsigned long startTime, elapsedTime;
float microFarads, nanoFarads;
void setup(){
pinMode(chargePin, OUTPUT); digitalWrite(chargePin, LOW);
Serial.begin(9600);
}
void loop(){
digitalWrite(chargePin, HIGH); startTime = millis();
while(analogRead(analogPin) < 648){ } // 63.2% от 1023
elapsedTime= millis() - startTime;
microFarads = ((float)elapsedTime / resistorValue) * 1000;
Serial.print(elapsedTime); Serial.print(" mS ");
if (microFarads > 1){
Serial.print((long)microFarads); Serial.println(" microFarads");
} else {
nanoFarads = microFarads * 1000.0;
Serial.print((long)nanoFarads); Serial.println(" nanoFarads");
}
// Разряд конденсатора
digitalWrite(chargePin, LOW);
pinMode(dischargePin, OUTPUT); digitalWrite(dischargePin, LOW);
while(analogRead(analogPin) > 0){ }
pinMode(dischargePin, INPUT);
}
Шаг 4: Тест диодов

Аналоговый пин подтянут к 5В резистором 10 кОм — чтение 1023 при ничего не подключенном. D12 установлен как OUTPUT, LOW.
При прямом смещении диода между аналоговым пином (5В) и D12 (GND) аналоговый пин читает 100–400. При обратном — 900–1023. Так можно определить p и n сторону любого диода, быстро проверять LED и диоды.
Код теста диодов
String state = "null"; int checkPin1 = 12; int checkPin2 = 6;
void setup() { Serial.begin(9600); }
void loop() {
pinMode(checkPin1, OUTPUT); digitalWrite(checkPin1, LOW);
if(analogRead(checkPin2)<700){ state="forward"; }
Serial.println(state); Serial.println(analogRead(checkPin2));
state = "null"; delay(500);
}
Шаг 5: Часы реального времени (RTC)

RTC хранит секунды, минуты, часы, день, дату, месяц, год. Счет продолжается от встроенной батарейки при отключении питания. Автоматически корректирует концы месяцев и високосные годы.
Используем 4 пина: Vcc, GND, SDA, SCL. На Nano/Uno SDA=A4, SCL=A5. Для других — гуглите.
Библиотека «RTClib» упрощает работу со временем. Скачайте ZIP, распакуйте папку «RTClib-master» в libraries Arduino.
Для установки времени скачайте «RTC_set_time.ino», раскомментируйте:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // время компиляции
// или
rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); // год, месяц, день, час, мин, сек
Подключите, загрузите, откройте Serial Monitor на 9600 baud. Важно: закомментируйте строки установки времени и загрузите снова, иначе время будет сбрасываться при каждом ресете!
Код RTC
#include <Wire.h> #include <RTClib.h>
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
void setup() {
Serial.begin(9600); rtc.begin();
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
void loop() {
DateTime now = rtc.now();
Serial.print(now.year()); Serial.print('/');
Serial.print(now.month()); Serial.print('/');
Serial.print(now.day()); Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") ");
Serial.print(now.hour()); Serial.print(':');
Serial.print(now.minute()); Serial.print(':');
Serial.print(now.second()); Serial.println(); Serial.println();
delay(1000);
}
Шаг 6: Финальная сборка схемы

Финальная схема после объединения всех элементов. Основной код и файл Fritzing в конце.
Скачайте Fritzing с fritzing.org. Распакуйте Main_code.rar, откройте Main_file_rtc.ino. Переменные вынесены в definitions.h. Функции: Clock(), findResistance(), findCapacitance(), diodeTest() — в отдельных вкладках. Главный файл проверяет кнопку режима и вызывает нужные функции.
Примечание: Зуммер, если не используется, можно задействовать для функции прозвонки.
Шаг 7: Подготовка переключателей

Берем 3 колодки переключателей и 3 пары проводов ~10 см (разрезал шлейф). Снимаем изоляцию (не более 5 мм), скручиваем жилки. Припаиваем к 2 соседним пинам каждого переключателя. Припаиваем провода (залуживаем их). Тёмные провода — на одну сторону переключателей. Аналогично для кнопки сброса (не к нормально замкнутым контактам!).
Шаг 8: Корпус — раскрой разметки

Скачайте «Layout_Final_A3.pdf» или «Layout_Final_ANSI_B.pdf». Распечатайте на А3 (29.7×42 см) или ANSI B (11×17 дюймов). Выбирайте правильный формат бумаги, ориентацию и «Actual Size»! Проверьте: малый прямой угол внизу справа должен быть 2×2 см.
Вырежьте контур по линейке и ножу (нож лучше ножниц). Подложите картон/дерево для чистого реза. Не спешите — держите линейку точно по линии.
Шаг 9: Корпус — забоинки и складки

Ножом по линейке делайте забоинки по всем линиям сгиба, кроме средней линии в области LCD. Сгибайте, исправляйте незабоиненные места.
Для основания (дно): Зашкурте первые четыре края под углом, горячий клей по одному краю, соединяйте, держите 30–60 сек. Сделайте 2 отверстия под болты (гвоздиком, расширьте карандашом). Затяните гайку внутри, капните клей на гайку, дайте застыть, выкрутите болт. Сложите боковые клапаны внутрь и приклейте (внешняя часть наклонная, средняя плоская).
Шаг 10: Корпус — установка переключателей

На левой стороне корпуса (снаружи) отметьте и вырежьте прямоугольники под 3 переключателя. Зашкурте внутри. Установите переключатели, клея по бокам. Проводящие пины должны быть с одной стороны. Сделайте отверстие с другой стороны для кнопки сброса, зафиксируйте клеем. Сложите нижний клапан внутрь и приклейте.
Шаг 11: Корпус — верхняя половина (крышка)

Зашкурте края, заклейте боковые клапаны внутрь (как у основания).
Шаг 12: Корпус — установка LCD

Сделайте забоинку по средней линии (раньше не делали — деликатная). Сложите крышку на основание — проверьте зазоры для ножек IC. Вырежьте клапаны-крышки как на фото. Поставьте LCD в центр области LCD, обведите карандашом, вырежьте прямоугольник осторожно ножом. Сложите «окно» LCD, заклейте петли клеем. Вставьте LCD, при необходимости подправьте. Заклейте 4 угла LCD клеем (не слишком много).
Шаг 13: Корпус — финальные клапаны

Зашкурте, подстригите, заклейте треугольный клапан. Сделайте маленькую деталь как на фото, приклейте к крышке. Сделайте 2 отверстия, расширьте карандашом для болтов фиксации крышки к основанию.
Шаг 14: Плата — подгонка размеров

Вырежьте текстолит под размер корпуса (у меня 2×4 дюйма). Линейка и нож — много раз проведите по обеим сторонам, легко ломается. Положите внутрь. Если клей клапанов поднимает плату — нагрейте клей или уменьшите плату. Вырежьте выемку под 3 переключателя.
Шаг 15: Плата — Arduino Nano

Отрежьте женские колодки под размер Nano. Поставьте по центру края платы, припаяйте все пины.
Шаг 16: Плата — Омметр

Перед пайкой дважды проверяйте с финальной схемой!
Начните с резистора 1кОм на pin D2 Arduino. Отметьте пин, на обратной стороне согните и припаяйте. Тоже самое с 4.7к, 10к, 47к, 100к Ом. Хорошая практика: все золотые полосы толеранса с одной стороны (например, ВВЕРХ и ВПРАВО). Вторые выводы резисторов объедините и припаяйте к A7.
Шаг 17: Плата — Измеритель емкости и тест диодов

Измеритель емкости: 220 Ом от D12 к A0. 10 кОм от A0 к D7. Примечание: D7 также используется для LCD data pin D4.
Тест диодов: 10 кОм pull-up от A6 к +5V.
Шаг 18: Разъемы для LCD

Используем первые 6 и последние 6 пинов LCD. Пины D0–D3 не используются. Делаем разъемы только для используемых пинов — 16-пиновый разъем потом очень трудно вытащить.
Отрежьте 2× 6-пиновые женские и мужские колодки. Шлейф 6 проводов ~5–6 см. Снимите изоляцию, залудите. Припаяйте по одному как для переключателей. Зафиксируйте горячим клеем.
Шаг 19: Плата — Подключение LCD

Положите плату в корпус. Вставьте разъем в LCD — посмотрите, где должен быть женский разъем на плате, припаяйте. Оставьте 4–5 рядов точек за LCD-разъемом — там будет кнопка питания.
Измерьте длину проводов для data pins (D4, D5, D6, D7) LCD к digital pins (D7, D8, D9, D10) Arduino соответственно. Установите потенциометр 10 кОм: боковые выводы к Vcc, GND, средний к V0. Соедините Vss (GND) LCD с GND, Vdd с +5V, R/W с GND.
| Arduino Pin | LCD |
|---|---|
| D7 | D4 |
| D8 | D5 |
| D9 | D6 |
| D10 | D7 |
| GND | Vss (GND) |
| +5V | Vdd |
Шаг 20: Плата — Модуль RTC

Снял стандартные угловые колодки модуля, припаял прямые — чтобы лежал плоско на плате. Припаяйте 4-пиновую женскую колодку и соедините: Vcc, GND, SDA к A4, SCL к A5.
Шаг 21: Корпус — Кнопка режима

Отметьте круг ~1 см диаметром в углу pin1 корпуса IC. Сделайте отверстие (гвоздик, карандаш, до 1 см). Зашкурте внутри, зафиксируйте клеем. Вырежьте кусок текстолита ~10–11 точек × 5 точек. Вставьте и припаяйте кнопку, резисторы 220 и 10 кОм как на фото. 3-проводной шлейф ~15 см — залудите и припаяйте. Запишите, какой цвет куда идет. 2 кусочка ластика на концы платы (высота ~4 мм, чтобы кнопка была ниже уровня картона). Зафиксируйте клеем.
Шаг 22: Корпус — Точки тестирования

Отрежьте 6× 6-пиновые женские колодки. Зашкурте бока. Отметьте позиции, вырежьте щели. Вставьте, заклейте изнутри. Припаяйте все пины вместе обжатым перемычкой. Убедитесь, что все соединены. Не перегревайте — нагрев одного пина нагревает соседние. 6-проводной шлейф, залудите, припаяйте к каждому гнезду. Тёмные цвета — на минусовую сторону. Зафиксируйте клеем.
Шаг 23: Ножки

Скачайте «Legs_A4.pdf» или «Legs_ANSI_A.pdf». Распечатайте на А4 (21×29.7 см) или ANSI A (8.5×11 дюймов). Правильный формат, ориентация, «Actual Size». Проверьте прямоугольник: 8.4×11.8 см. Вырежьте, забоиньте, заклейте как основной корпус.
Шаг 24: Делаем блестящими!

Вырежьте фольгу 1×2 дюйма, аккуратно наклеивайте по сгибам на концы ножек клеем для металл-картона (Fevibond). Наклейте заплатку, закрывающую все верхушки ножек, аккуратно подрежьте ножом. Фольга рвется вбок — будьте осторожны. Используйте что-то плоское для прижима. Накройте прозрачным скотчем — защита от острых предметов.
Шаг 25: Кнопка питания

Измерьте и подрежьте ножку кнопки, держа её на месте. Временно зафиксируйте другие пины скотчем для точной позиции pin1. Замесите m-seal (эпоксидная запятка, твердеет каменно). Положите как на фото, сформируйте порошком и плоской поверхностью. Дайте высохнуть. Заделайте все щели в корпусе. Горячий клей здесь не подходит — нужен твердый материал.
Шаг 26: Кнопка питания к плате

После высыхания m-seal проверьте посадку. Отрежьте 3 пина женских и мужских колодок, поставьте на плату под пины кнопки. Припаяйте женскую часть. Залудите выводы кнопки и мужские пины, соедините. Проверьте посадку. Попробуйте нажать/выключить, держа палец за кнопкой для поддержки — опорную штангу добавим позже. Соедините боковой пин женской колодки (кнопка питания) с Vin. Я понял это поздно и пришлось переделывать. Зафиксируйте колодку горячим клеем.
Шаг 27: USB-порт

Положите плату с Arduino, вырежьте прямоугольник под mini USB. Снимите немного пластика с USB-кабеля, чтобы он входил в Arduino. Проверьте соединение.
Шаг 28: Прочие вещи

Снял все LED с Arduino Nano и питания на модуле RTC — лишнее потребление, важно на батареях. Зашкурте высохший m-seal для гладкости с картоном. Смойте пыль влажной салфеткой перед покраской. Добавил зуммер для сигналов. Зуммеры чувствительны — не перегревайте при пайке!
Шаг 29: Время красить!

Не наносите густую краску — будут следы кисти. Разбавьте водой. Избегайте пузырьков — не тыкайте кистью. Не красьте петлю крышки — краска заклинит её. Это базовый слой, второй будет при финише.
Шаг 30: Паяем все провода

Обязательно смотрите схему перед пайкой!
Сначала кнопка сброса: один конец к RST, другой к GND. Затем переключатель подсветки: один к +5V, другой к 'A' (анод) подсветки. 'K' (катод) к GND. Переключатель RS: один к RS, другой к D1 (TX). Переключатель Enable: один к 'E' (Enable), другой к D0 (RX).
| Переключатель | Куда |
|---|---|
| Сброс (кнопка) | RST и GND |
| Подсветка (колодка) | +5V и A |
| RS (колодка) | D1 (TX) и RS |
| Enable (колодка) | D0 (RX) и E |
Примечание: Пины D0 и D1 подключены через переключатели, так как их постоянное соединение мешает Serial (для отладки). Базовая проводка готова. Проверьте, зафиксируйте клеем.
Потом 3 провода кнопки режима: 10 кОм pull-down к GND. 220 Ом к D11. Входной пин к +5V (VCC).
Наконец 6 проводов от тестовых гнезд к их местам (на фото).
| Тест | Позитив | Негатив |
|---|---|---|
| Сопротивление | A7 | GND |
| Емкость | A0 | GND |
| Диод | A6 | D12 |
Примечание: Все +5V и GND общие — подключайте к ближайшему удобному месту.
Шаг 31: Установка батарейного отсека

Положите батарейный отсек на крышку, сделайте вырезы, чтобы крышка закрывалась. Припаяйте провода к отсеку, снимите изоляцию, залудите. Плюс к среднему пину кнопки питания, минус на землю. Заклейте плату к основанию после всех соединений. Скрутите провода, уложите. Вставьте батареи (отсек немного расширится) и заклейте отсек к крышке.
Шаг 32: Установка ножек

Подрежьте внутреннюю часть ножек для посадки. Приклейте. Проверьте пин кнопки питания — входит ли идеально. Выньте, добавьте металлическую штангу/деревянную палочку/что-то крепкое нужной длины, чтобы кнопка не проваливалась внутрь. Заклейте. Проверьте переключение — должно быть плавным. Включите IC, протестируйте все функции. Если не работает — к разделу устранения неисправностей.
Шаг 33: Финальные штрихи

M-seal (или аналог) заделайте мелкие щели вокруг тестовой зоны и кнопки режима. После высыхания зашкурте и нанесите второй слой краски. Сделайте кнопку режима из кусочка картона, покрасьте в черное, обклейте скотчем (блестящий эффект). Каплю клея — приклейте кнопку.
Шаг 34: Проблемы и устранение неисправностей

Делайте всё правильно. Это самая скучная часть проекта, и вы не хотите сюда попасть из-за неправильной пайки!
- Перепроверьте каждый паяный контакт — нет ли замыканий на соседние. Мультиметр в режиме прозвонки поможет.
- После подрезки выводов убедитесь, что обрезки не попали под плату — могут замыкать контакты.
- Записывайте важное в блокнот, не доверяйте памяти.
- Если LCD не показывает — проверьте контраст. Убедитесь, что переключатели pin0 и pin1 ВКЛЮЧЕНЫ. Прозвонкой проверьте все связи LCD–Arduino. Перемычки макетной платы помогут там, где щупы не доходят.
- Загрузите программу Hello World для LCD — проверьте, в коде ли проблема.
- Если конкретная функция не работает — проверьте её соединения и сравните с кодом.
- И главное — держите любопытных питомцев с их злыми умами подальше от рабочего места! :)
Шаг 35: Что я сделал и ошибки, которые допустил

Тестируя цепи и имея представление о приборе, решил сделать дизайн IC. Измерил реальные микросхемы, взял пропорции длины, угол ~80° по тригонометрии. Задал внутренние длину/ширину коробки и построил разметку. Сначала рисовал вручную на большом листе — после борьбы с точностью понял: это работа для CAD! Выучил основы CAD и сделал разметку на компьютере. :) Но первая разметка не сработала — пришлось переделывать весь раскрой и корпус.
Снимая LED на Nano, излишним усилием сдернул упрямый светодиод и сдирал контактную площадку на плате. Всегда распаивайте без давления на контакты — площадки нежные и легко отходят, если не сохранять спокойствие.
Когда все пайки были готовы и проект почти закончен, от волнения и спешки заклеил плату в корпус ДО установки батарейного отсека. Пришлось расплавить горячий клей паяльником (аккуратно, не плавя изоляцию проводов) и вынуть плату, чтобы припаять провода батарей. Паяльник потом можно почистить.
Батарейка RTC мешала батареям при закрывании — отпаял держатель батарейки (Внимание: распаивайте только с извлеченной батарейкой!) и добавил удлинительные провода, чтобы батарейку можно было разместить сбоку, где есть место.
Все PDF-разметки, CAD-файлы и основной код можно скачать здесь: Google Drive
Код
В репозитории 4 фрагмента кода: омметр, измеритель емкости, тест диодов, RTC. Полный код в Main_code.rar.
Фрагмент 1: Омметр
// См. полный код выше в разделе «Шаг 2»
Фрагмент 2: Измеритель емкости
// См. полный код выше в разделе «Шаг 3»
Фрагмент 3: Тест диодов
// См. полный код выше в разделе «Шаг 4»
Фрагмент 4: RTC
// См. полный код выше в разделе «Шаг 5»
GitHub: https://github.com/adafruit/RTClib
Схемы
Main_Schematic.fzz
Производственный процесс
- Умный датчик полива «Thirst Alert» на Arduino — DIY сигнализация засухи для растений
- Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
- Экономия пинов Arduino: подключение 4×3 клавиатуры по трём аналоговым входам
- Надежный счетчик кВт·ч на Sigfox с Arduino MKR Fox 1200
- Bluetooth-монитор температуры на Arduino Nano с NTC-термистором
- Бесконтактный жестовый замок: APDS-9960 + Arduino для безопасного доступа
- Набор USB-MIDI адаптера для Arduino Micro / Leonardo — полный список деталей
- Гальванически разделённый аналоговый вход для Arduino на LM331 и оптопаре 4N25
- RGB 32-полосный аудио-спектрум анализатор на Arduino и матрице WS2812B 8x32
- Точный тест времени реакции на Arduino UNO