Вот и дотянулись мои руки крюки до микроконтроллеров. Радиоэлектроники боюсь как огня, ибо не догоняю, но если где то начинает пригорать, держите семеро.
Задача - заколхозить уберагрегат для аквариума, чтобы и светом мигал и CO2 давал и УДО лил назначенными порциями.
Вчера получил заказ, Mass duino (md-328d), шилд на четыре реле, пара светодиодов на плате, сегментный индикатор, "часики" и еще по мелочи.
Я в предвкушении скачал софт и воткнул microUSB в плату.
Первые два часа убедили меня, что Mass duino не во всем Arduino, и к стандартной IDE надо таки скачать индивидуальный набор файликов.
Тип ошибки при заливке скетча сменился на "avrdude stk500_getsync() not in sync resp=XXX"
И вот тут началось. На такой текст ссылалось пол интернета, куча тредов на русском и не очень, куча флейма и издевок, масса советов и на одно "помогло!" тут же писали десять "а мне нет(((".
Предлагали:
1. В диспетчере устройств, в свойствах COM-порта последовательно перебрать все возможные варианты скорости и на них попробовать upload скетча.
2. Проверить, что джампер питания стоит правильно (не поясняя, а как)
3. Что выбран нужный порт (тут сложно ошибиться).
4. Перепрошить контроллер.
+. Еще сто советов.
Из дельного предложили проверить кабель замкнув RX-TX контакты, в этом случае в мониторе порта, послав строку мы получаем ее обратно. Проверил - работает, значит кабель и порт верные. Попробовал на компе жены - та же фигня.
При этом многие писали, что раньше ошибки не было и все работало. Многие писали, что ошибка ушла сама собой.
В полночь я уже настрочил письмо на возврат Дуньки в магазин. Перед сном пошел подключить телефон сына на зарядку и увидел еще два "непопробованных" кабеля. Внезапно, с одним из них все сработало. Как же я матерился!
На следующий день я взял "годный" кабель и придя на работу все подключил, запустил и ... снова здорова. Помогло перетыкание USB в другой разъем, благо их много.
Ок, дальше по плану выставление верного времени на RTC DS1302, тут все очень просто, в setup() пишем установку времени на час X, в loop() вывод времени в строку на серийный порт, заливаем, запускаем, с дикой погрешностью, но время выставлено, 08:09:00, щелкает, супер!
Надо проверить, отключаем от USB, ждем пять минут, включаем, запускаем монитор порта, вуаля - 08:09:00, щелкает, блин... Оказалось, setup() автоматически запускается при подключении к компу. Ладно, решаема.
Теперь подключение RGB светодиода, ногу на землю, RGB по пинам, pinMode(LED_R, OUTPUT), digitalWrite(LED_R, HIGH) и - ничего. Матьегоети, каждое движение вперед как об стенку с размаха. Через 10 минут нашел, что не все диоды одинаково полезны, и мой отличается от собратьев "общим анодом" и подрубается не на землю, а на +5V, и чем меньше на пин даешь, тем ярче светит. То есть зажечь красный не analogWrite(LED_R, 255), а analogWrite(LED_R, 0)!
О сколько нам открытий чудных...
А мне еще предстоит подключать реле на свет и газ, шилд моторов на перистальтические насосы, запись логов на microSD, объемы памяти заставляют вспомнить времена Электроники МК-61, и асма на КР580.