DS18B20 — первый серьезный датчик, который можно применять не только в образовательных целях, но и в реальных системах умного дома. Диапазон измеряемых температур составляет -55...+125°C, при этом точность в 0,5°C (полградуса) обеспечивается в диапазоне -10...+85°C. Такие характеристики и герметичность позволяют использовать данный датчик для измерения температуры в различных агрессивных для обычных микросхем средах, таких как жидкости и почва, служить уличным датчиком температуры и т. д.
В то же время этот датчик не так прост как кажется — он снабжен энергонезависимой памятью EEPROM в которой хранятся значения триггеров срабатывания тревоги, а также данные регистра конфигурации.
В предыдущей статье было представлено описание работы с датчиком температуры DS18B20. И если выводить информацию на какой-либо многострочный дисплей, то эта часть статьи будет неинтересна. Необходимость в ней возникает, когда данные нужно отображать на светодиодных матрицах, либо семисегментных дисплеях различной разрядности. Все дело в том, что принцип их работы построен на постоянном переборе напряжений на анодах/катодах, таким образом выстраивая незаметную для человеческого инерционного зрения общую картину из мозаики комбинаций.
Те, кто работает с Arduino в 99% случаях имеют дело с логическими (цифровыми) сигналами — 0 (LOW) и 1 (HIGH). Даже вывод аналогового сигнала Arduino осуществляется посредством генерации ШИМ — что тоже, по сути, является комбинацией логических уровней — 0 и 1. Масса популярных протоколов и интерфесов — I2C, SPI, MODBUS и др., для обмена данными используют именно нули и единицы. Именно для визуализации, анализа, расшифровки и сравнения таких сигналов и предназначены логические анализаторы. Можно сказать, что логический анализатор — это осциллограф, который понимает только 2 уровня сигнала — 0 и 1. Он следит за изменением сигналов во времени и незаменим в отладочных работах при работе с цифровой техникой.
Несмотря на кажущуюся схожесть с другой парой функций digitalRead() и digitalWrite(), которые работают по одному механизму, только в разных направлениях, функции analogRead() и analogWrite() имеют в корне разную природу, в первую очередь на аппаратном уровне. Поэтому и рассматривать их нужно в отрыве друг от друга — функционал analogRead() целиком и полностью реализован на «железном уровне» в аналого-цифровом преобразователе (АЦП), analogWrite() — в регистрах выходного сравнения OCR (ШИМ-генераторам), работающим на одном из встроенных таймеров.
Речь в статье пойдет о двух разных схемах подключения большого количества кнопок к одному аналоговому входу Arduino. Принцип работы схем основан на чтении и интерпретации аналого-цифровым преобразователем микроконтроллера индивидуального напряжения, формируемого разными комбинациями отдельных участков схемы.
Обе схемы, вне зависимости от количества кнопок (в разумных пределах), в каждый активный (нажатие кнопок/кнопки) момент времени представляют из себя классический резистивный делитель напряжения. Но принципиальные отличия и особенности работы каждой из них имеют различные алгоритмы расчета элементов и конечное поведение.
Несмотря на кажущуюся схожесть с другой парой функций digitalRead() и digitalWrite(), которые работают по одному механизму, только в разных направлениях, функции analogRead() и analogWrite() имеют в корне разную природу, в первую очередь на аппаратном уровне. Поэтому и рассматривать их нужно в отрыве друг от друга — функционал analogRead() целиком и полностью реализован на «железном уровне» в аналого-цифровом преобразователе (АЦП), analogWrite() — в регистрах выходного сравнения OCR (ШИМ-генераторам), работающим на одном из встроенных таймеров.
В статье раскрывается смысл понятия стягивающего/подтягивающего резистора, рассказывается для чего он нужен и в каких случаях используется.
Для понимания сути раскрываемой темы проведем небольшой эксперимент — соберем небольшую схему с кнопкой и напишем скетч, который в Serial будет выдавать значение состояния кнопки...
Если вы попали на эту страницу, значит вас перестало устраивать быстродействие вашей платы Arduino, вы понимаете, что что-то не так, но не можете понять что. Именно для вас эта статья.
Может я сделаю открытие, но стандартные для Arduino-версии языка C++ самые распространенные функции pinMode, digitalWrite, digitalRead, analogWrite, analogRead, Serial.print, Serial.println (и другие) — это всего лишь удобные обертки для тех, кто не желает лезть в дебри программирования. Эти функции-обертки содержат определенные механизмы проверок корректности исполнения, которые увеличивают время получения результата в разы!
ЛУТ: Изготовление печатных плат при помощи лазерно-утюжной технологии (2 способа: хлорное железо и перекись водорода с лимонной кислотой и солью — сравнение)
В статье показано, как в домашних условиях можно изготовить печатную плату с необходимым рисунком для монтажа на ней заданных электронных компонентов.
Изготавливать плату мы будем путем травления меди. В двух словах — на медную поверхность наносится защитный слой лазерного тонера, который защитит её в нужных местах во время травления. Таким образом на плате останутся только те участки (дорожки, контактные площадки), которые не подверглись химическому воздействию (были изолированы тонером).
В статье показывается работа с датчиком температуры и влажности DHT11 в модульном исполнении: