Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

К вопросу о константах

Программирование микроконтроллеров

Есть ли в мире что либо более постоянное, чем временные переменные


Просматривая тематический форум, увидел традиционное «Не работает скетч, подскажите, в чем дело» — таких постов чуть меньше, чем все, но в заголовке фигурировала работа с SD карточкой, поэтому решил глянуть. Больше всего порадовала фраза, что «скорее всего, дело в карточке, но решил попросить посмотреть код, может, что интересного увидите» — не ручаюсь за точность цитаты, но смысл передал верно. Действительно, интересного там наблюдалось много, мой взгляд зацепился за выражение

unsigned long Interval = 2000; ....
while (micros() < StartInterval + Interval) {};

причем дальше эта переменная использовалась, как константа в запуске задержки. Оставим за скобками способ обращения с временем, сейчас речь не об этом.

Сначала я, действуя на автомате, написал, что следует применять #define, «да призадумалась, а сыр во рту держала». Может быть, я чего-то не знаю, и применение констант в таком формате может быть выгодно при определенных условиях? Вдумчивое чтение мануалов на разные микроконтроллеры (МК) привело к интересным находкам, которыми (вместе с ответом на мой вопрос) и собираюсь поделиться под катом.
Читать дальше →
Всего голосов 24: ↑19 и ↓5 +14
Просмотры7.1K
Комментарии 8

К вопросу о числах

Программирование микроконтроллеров

«Ну что, без драки? Волейбол — так волейбол!»
Ну что же, USB — так USB



Не в моих правилах баловать читателя КДПВ, но не мог удержаться.

Но начнем мы, как и было обещано, со службы времени в МК. Рассмотрим связанную с этой службой задачу — имеется набор чисел и среди них следует выделить те, которые не превосходят некоторое другое наперед заданное число. А переходя к времени, можно сказать, что нам нужно будет определить момент, когда наше текущее время (Т) станет на величину интервала (И) больше, чем начало отсчета интервала (С).

Как мы можем решить эту задачу, и причем тут Уроборос?
Читать дальше →
Всего голосов 23: ↑18 и ↓5 +13
Просмотры6.5K
Комментарии 15

Оптическое распознавание символов на микроконтроллере

ПрограммированиеАлгоритмыОбработка изображенийПрограммирование микроконтроллеровРазработка для интернета вещей


На сегодняшний день оптическое распознавание символов является частью решения таких прикладных задач, как распознавание и оцифровка текстов, распознавание документов, распознавание автомобильных номеров, определение номеров банковских карточек, чтение показаний счетчиков учета, определения номеров домов для создания карт (Google Street View) и т.д.

Распознавание символа означает анализ его изображения с целью получения некоторого набора признаков для сравнения их с признаками класса [ 1 ]. Выбор такого набора и способы его определения отличают разные методы распознавания, но для большинства из них необходима одномоментная информация обо всех пикселях изображения.

Последнее обстоятельство и достаточно большой объем вычислений делают невозможным использования маломощных вычислительных устройств (микроконтроллеров) для оптического распознавания символов. «Да и зачем?» — воскликнет информированный читатель, «мощности вычислительных устройств постоянно растут, а их цена падает!»[2, 3]. Допустим, что ответ будет такой: просто интересно, возможно ли упростить метод распознавания до такой степени, чтобы можно было бы использовать микроконтроллер?
Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Просмотры22.1K
Комментарии 27

МКА (машина конечных автоматов) для чайников на примере класса «кнопка» в arduino

C++Программирование микроконтроллеров

Зачем всё это нужно?


Когда чайник, уперевшись в необходимость отойти от простой последовательности действий, задаёт на хабре вопрос типа "как сделать вот это?", ему с вероятностью 70% отвечают "погугли конечные автоматы" и 30% "используй finite state machine" в зависимости от страны работодателя профессионала. На следующий вопрос "а как?" отправляют в гугл. Идёт такой чайник, что только закончил мигать светодиодом и вытер пот со лба, что учил в школе немецкий и всю жизнь работал бульдозеристом в этот гугл и видит там статьи типа Википедия про конечные автоматы с формулами и в которых понятны только предлоги.


Так как я тоже чайник, но до бульдозера работал программистом 30 лет назад, наступив на множество граблей по мере освоения программирования микроконтроллеров, решил написать эту статью простым языком для начинающих.

Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Просмотры38.6K
Комментарии 28

Начинающим на Arduino: Упаковываем конечный автомат в отдельный класс и библиотеку

C++Программирование микроконтроллеров

В прошлой статье про написание конечных автоматов я обещал упаковать наш гениальный код в виде класса на C++ для повторного удобного использования. Делать буду так же на примере своей старой разработки SmartButton. Итак, влезаем в непонятный мир ардуининых библиотек и ООП.


Папки с библиотеками

Читать дальше →
Всего голосов 15: ↑9 и ↓6 +3
Просмотры27.3K
Комментарии 59

Программируемое реле на Ардуино

Разработка под Arduino
Из песочницы
Идея банальна, понадобился контроллер для управления нагрузкой в доме:
1. Котел отопления.
2. Накопительный бойлер для водоснабжения.
3. Насос в скважине.

Читал массу увлекательных статей на тему ХХ на Ардуино, читая которые четко фиксировал в голове мысль «хочу Ардуино». Прикинув стоимость компонентов и готовых решений, посчитал явную выгоду от внедрения Ардуино.

image

Итак, программа минимум:


1. 4 реле, часы (RTC), ЖК экран;
2. Режимы работы каждого реле: включено, выключено, суточный таймер, одноразовое включение;
3. Кнопки управления для настройки времени и режимов реле;

В доме установлен двухтарифный счетчик, поэтому бойлер нагревает воду с 23 до 7 утра. Аналогично отопление: два из трех тэнов, по моей задумке будут включаться ночью. Управление температурой пока остается родное на штатном пульте. Одноразовое включение в качестве резерва пойдет на насос, программируем включение, например, на набор емкости или прокачку скважины, после чего реле переходит в режим выключено. Основная особенность: изготовлено законченное устройство, управляемое кнопками, и не требующее подключения к ПК.
Далее сборка и код
Всего голосов 14: ↑14 и ↓0 +14
Просмотры66.7K
Комментарии 72

MP8036multi: пример работы таймером

МАСТЕР КИТDIY или Сделай самЭлектроника для начинающих
Недавно у Мастер Кит появилась новинка: модуль MP8036multi, который представляет собой многофункциональный конфигурируемый контроллер с простыми и понятными командами.



Уникальность модуля MP8036multi заключается в гибкости его конфигурации: состояние выходов контроллера может зависеть от различных комбинаций состояний входов. Вместе с тем программирование этого модуля для любой конкретной задачи не должно вызвать никаких сложностей. На базе MP8036multi можно автоматизировать систему освещения, управление отоплением, аварийное питание дома или дачи, автоматизировать полив и вентиляцию теплицы, а также реализовать много других решений.

В качестве первого простого примера мы расскажем, как построить систему управления диорамой.
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры7.6K
Комментарии 0

Программирование микрокомпьютера LEGO NXT Mindstorms 2.0. Введение

Робототехника
Tutorial
Здравствуйте. В своих статьях я хочу Вас познакомить с основами программирования микрокомпьютера LEGO NXT Mindstorms 2.0. Для разработки приложений я буду использовать платформы Microsoft Robotics Developer Studio 4 (MRDS 4) и National Instruments LabVIEW (NI LabVIEW). Будут рассматриваться и реализовываться задачи автоматического и автоматизированного управления мобильными роботами. Двигаться мы будем от простого к сложному.



Читать дальше →
Всего голосов 15: ↑11 и ↓4 +7
Просмотры10.3K
Комментарии 8

Управляем автономным питанием загородного дома

МАСТЕР КИТУмный домDIY или Сделай самЭлектроника для начинающих
У большинства из нас есть дачи, а кто-то вообще круглогодично проживает в частном доме или коттедже. Проблема перебоев с электроэнергией на периферии знакома не понаслышке. Самый простой выход из ситуации – зажечь свечку и смиренно ждать лучшего, но в наше время это не всегда приемлемо. Более продвинутые дачники обзавелись генераторами, вот только их запуск и остановку нужно производить вручную. В темноте и в холодное время года это делать некомфортно. А бывают ситуации, когда хозяев вообще нет дома, однако прекращение подачи энергии может привести к останову систем управления обогревом дома и другим критическим ситуациям. В таких случаях просто необходимо автоматизировать процессы перехода с основного питания на резервное, и наоборот. В первой части мы рассмотрим пример работы модуля MP8036multi в режиме контроллера (смешанный режим, пример 1), управляющего автономным питанием загородного дома. А также приведем схему подключения и пример рабочей отлаженной программы.


Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры20.8K
Комментарии 19

STM32F103C8T6 — делаем осциллограф. Часть 3

DIY или Сделай самЭлектроника для начинающих
Третья часть (первая и вторая) про то как я делаю осциллограф из отладочной платы ценой менее $3. Демонстрационное видео работы:

А описание некоторых ключевых особенностей под катом.

Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры51.4K
Комментарии 19

Подключаем «отечественный» LCD 16x2 MT-16S2S по SPI. Часть 2. Программа

Компьютерное железоЭлектроника для начинающих
Recovery mode


Продолжение темы про работу с индикатором от фирмы МЭЛТ МТ-16S2S на ST7070.

Первая часть.

В этой части будут разобраны основные команды библиотеки. А именно: инициализация, передача команды (сдвиг, очистка, курсор), вывод символа, вывод строки, создание своего символа.
Читать дальше →
Всего голосов 38: ↑37 и ↓1 +36
Просмотры8.8K
Комментарии 5

Азбука электронщика: увлекательная теория, занимательная практика и полезные решения для начинающих

МАСТЕР КИТDIY или Сделай самЭлектроника для начинающих
Я слушаю и забываю,
я вижу и запоминаю,
я делаю и понимаю.
Конфуций

Замечали ли вы, что интерес к электронике, радиотехнике, конструированию радиоэлектронных приборов в последнее время заметно возрос?

Учебные заведения все чаще обращают свой взор в сторону подготовки инженеров в области радиотехники и электроники. Многие специалисты, достигшие определенных успехов в своей профессии, с удовольствием делятся своими знаниями на просторах всемирной паутины. Но есть проблема – отрыв теории от практики. Одно дело знать из школьного курса закон Ома, а совсем другое – спалить транзистор или микросхему, подав неверное напряжение. Как начинающему разобраться, понять причину и навсегда запомнить этот закон и этот примечательный случай?



Понимая это, Мастер Кит начал выпуск серии наборов «Азбука электронщика».
Читать дальше →
Всего голосов 16: ↑12 и ↓4 +8
Просмотры31.1K
Комментарии 15

Умная плата для управления силовыми 3-х фазными нагрузками

Промышленное программированиеПрограммирование микроконтроллеровИнтернет вещей

Продолжаем разработку на микроконтроллерах семейства Kinetis.

Умный дом или здание не ограничиваются только датчиками температуры или освещением. Там также присутствуют лифты, различные подъемники для людей с ограниченными физическими возможностями, грузовые подъемники, ворота, шлагбаумы, насосы, вентиляторы и прочее хозяйство. Традиционно это консервативные области, в них концепции умного дома проникают с трудом. Данная плата позволяет модернизировать устоявшиеся решения и добавить в них интеграцию в IoT (интернет вещей).
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры17.1K
Комментарии 4

“Умный дом” на скорую руку

МАСТЕР КИТУмный домDIY или Сделай самЭлектроника для начинающих
С нами продолжают делиться решениями на основе модулей Мастер Кит:
«В качестве эксперимента решил я тут попробовать сделать некий прототип “умного дома” на скорую руку и с минимальными затратами. “Хотелок” оказалось много: и свет, и вентиляция, и окна, и вода, и ИК-управление электроприборами. На первых порах решил ограничиться минимумом задач: вентиляция и освещение в комнате.


Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры20.7K
Комментарии 8

STM32F103C8T6 — первые шаги. Начинаем делать осциллограф

DIY или Сделай самЭлектроника для начинающих
О радостях и трудностях первого знакомства с STM32 после AVR. Как я реализовывал простейшую задачу — передачу данных на ПК.

Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Просмотры188.2K
Комментарии 44

Проснись с комфортом — делаем светобудильник своими руками

МАСТЕР КИТ3D-принтерыDIY или Сделай самЭлектроника для начинающих
Вот и настала осень…
Впереди неумолимо маячит зима – утром темно, вечером темно.
Просыпаться по будильнику в полной темноте равносильно нырянию под лед. Стресс с утра – гарантированно унылый день.

Решение-то есть, светобудильник называется, но цена этой штуки от 5000 руб. Колется, однако. К тому же, алгоритм работы жестко запрограммирован, а ведь совершенно очевидно, что, по результатам просыпания, захочется что-то подкорректировать или расширить функционал.
А что, если на основе подручных средств соорудить что-то в этом духе? Хорошая задачка для DIY!


Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры16.9K
Комментарии 46

STM32F103C8T6 — первые шаги. Продолжаем делать осциллограф

DIY или Сделай самЭлектроника для начинающих
Продолжение статьи. На этот раз попробуем подключить USB без падения частоты измерений и соберём одноканальную аналоговую часть.

Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры62.4K
Комментарии 25

MBED, или о дырявых абстракциях

Электроника для начинающих
Понадобилось взглянуть в сторону mbed. На первый взгляд выглядело весьма интересно – железонезависимый фреймворк, на С++, с поддержкой кучи микроконтроллеров и демо-плат, онлайн-компилятор с интеграцией в систему контроля версий. Куча примеров, еще более убеждающих в элегантности фреймворка. Прямо «из коробки» доступны практически все интерфейсы микроконтроллера при помощи соответствующих, уже реализованных классов. Вот прямо из коробки бери и программируй на С++, не заглядывая в даташит от микроконтроллера – ну не мечта ли?

Тестовой платформой стала давно лежащая без дела STM Nucleo F030, поддерживаемая этой платформой. О том, как зарегистрироваться и начать первый проект, есть много хороших туториалов, об этом не будем. Перейдем сразу к интересному.
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры11K
Комментарии 13

MP8036multi: пример работы термостатом

МАСТЕР КИТDIY или Сделай самЭлектроника для начинающих
В прошлой публикации мы привели пример работы BM8036multi в режиме таймера. В этой части рассмотрим работу модуля в режиме термостата.



Во многих дачных домах установлен газовый котёл, обеспечивающий обогрев дома и подачу горячей воды. Зачастую эти котлы – старого образца либо очень бюджетные, не имеющие достаточного уровня автоматизации. Возникает естественное желание доработать эти котлы и повысить комфорт и безопасность при их использовании.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры6.1K
Комментарии 1

Ипользование SPI Flash памяти дисплея для хранения графических ресурсов или дисплей домашней метеостанции

DIY или Сделай сам
Данная статья призвана рассказать о возможности использования имеющейся на борту дисплея Flash памяти для нужд проекта.
Для кого это актуально или просто интересно — добро пожаловать под кат.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры9K
Комментарии 9