Arduino uno цифровые часы без резистора и потенциометра

Самые простые цифровые часы на Ардуино Уно

26 ноября в 15:04

Уроки / Arduino

Самые простые часы на основе Arduino и LCD (ЖК дисплей) из тех что мы когда-то делали. Нам потребуются только Arduino UNO, 16×2 ЖК-дисплей и две кнопки. Никаких резисторов, никаких потенциометров.

Оглавление

  • Комплектующие
  • Что за идея
  • Схема проекта
  • Код
  • Результат

Начинаем с деталей, которые нам понадобятся для проекта цифровых часов на Ардуино Уно:

  • Arduino UNO & Genuino UNO x 1
  • Стандартный ЖК-дисплей Adafruit — 16×2 (белый на синем) x 1
  • Кнопочный переключатель SparkFun 12 мм × 2
  • Макетная плата половинного размера × 1
  • Провода перемычки (на выбор)

Что за идея

Ранее мы делали один сложный проект с цифровыми часами, о котором мы расскажем в следующих уроках, и нашли в процессе несколько проблем. После этого мы решили поделиться этой проблемой со всеми. Основная проблема в том как оценивается длительность секунды.

По факту — сделать правильную секунду в цифровых часах не так просто. Нужно правильно работать с циклами. Мы нашли много комментариев на англоязычных сайтах:

На скриншоте выше видно, что код реализован таким образом, что теперь инкремент s будет выполняться каждую 1 секунду и не больше, в зависимости от времени выполнения цикла loop{}.

В связи с этим резисторы и потенциометры мы полностью удалили.

Кнопки настройки времени вы можете использовать встроенные в микросхему ATmega328P.

pinMode(hs, INPUT_PULLUP) избегает использования внешнего Pullup. Подробнее о INPUT_PULLUP читайте в нашем Справочнике программиста Ардуино.

Избегайте потенциометра ЖК-дисплея.

Контрастность ЖК-дисплея может быть установлена с помощью сигнала PWM (Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM))) Arduino.

То же самое для подсветки, которая питается сигналом ШИМ (PWM) Arduino, поэтому её можно установить как вкл/выкл с помощью Arduino.

Схема проекта

Принципиальная схема нашего проекта выглядит таким образом:

Схема соединения всех комплектующих для наших цифровых часов Ардуино выглядит так:

Код

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

Также не забываем, что мы в самом начале подключаем библиотеку LiquidCrystal, которую вы можете скачать в разделе Библиотеки на нашем сайте.

Скачать arduino-cifrovie-chasi.ino/* ### Самые простые часы на Arduino UNO ### Для проекта часов нужны только жк-дисплей 16х2 LCD и 2 кнопки Никаких потенциометров для контраса, никаких резисторов Функции кнопок: — короткое нажатие одной из кнопок включает подсветку на 30 с Настройка времени — Нажмите H для увеличения Часов — Нажмите M для увеличения Минут и сброса секунд */ #include «LiquidCrystal.h» // Определяем соединение ЖК-дисплея с цифровыми контактами const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Настройка контрастности ЖК int cs=9;// пин 9 для контраста ШИМ const int contrast = 100;// контраст по умолчанию // Начальное отображение времени 12:59:45 PM int h=12; int m=59; int s=45; int flag=1; //PM // Кнопки установки времени int button1; int button2; // Определение пинов для Кнопок установки времени int hs=0;// pin 0 для настройки Часов int ms=1;// pin 1 для настройки Минут // Тайм-аут подсветки const int Time_light=150; int bl_TO=Time_light;// Тайм-аут подсветки int bl=10; // Пин подсветки const int backlight=120; // НЕ БОЛЕЕ 7mA !!! // Для точного считывания времени используйте часы реального времени Arduino, а не только задержку delay() static uint32_t last_time, now = 0; // RTC void setup() { lcd.begin(16,2); pinMode(hs,INPUT_PULLUP);// избегать внешних Pullup резисторов для кнопки 1 pinMode(ms,INPUT_PULLUP);// и кнопки 2 analogWrite(cs,contrast);// Настроить контрастность VO analogWrite(bl,backlight);// Включить подсветку now=millis(); // читать начальное значение RTC } void loop() { lcd.begin(16,2);// каждую секунду // Обновить ЖК-дисплей // Вывести время TIME в Hour, Min, Sec + AM/PM (часы, минуты, секунды) lcd.setCursor(0,0); lcd.print(«Time «); if(h

Источник: https://ArduinoPlus.ru/prostie-chasi-arduino-uno/

Подключение потенциометра к Ардуино

В робототехнике регулировка различных параметров, таких как громкость звука, мощность, напряжение и т.д., осуществляется при помощи переменных резисторов с регулируемым уровнем сопротивления.

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

В этой статье мы рассмотрим варианты подключения и примеры скетчей для работы с потенциометром.

Принцип работы потенциометра

Переменный резистор или потенциометр – это электрическое устройство, значение уровня сопротивления которого можно задать в определенных пределах.

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

Потенциометры получили широкое распространение в схемах регулировки громкости, напряжения, контрастности и т.д., за свою простоту и практичность.

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

В конкретный момент времени происходит закрытие только одного электронного выключателя, что задает определенную величину сопротивления. За счет количества шагов в лестнице определяется диапазон разрешения потенциометра.

Аналоговый потенциометр может изменять свое значение непрерывно, но, как правило, в более узком диапазоне и сам резистор будет иметь большие габариты.

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

Подключение потенциометра к платам Ардуино

Схема подключения

Подключение потенциометра к ардуино выполняется в соответствии со схемой, представленной на рисунке:

Для этого три вывода потенциометра необходимо соединить с указанными выводами платы:

  • Черный – GND;
  • Красный – питание 5В;
  • Средний – от центрального вывода к аналоговому входу А0.

Изменяя положение вала подключенного потенциометра, происходит изменение параметра сопротивления, которое вызывает изменение показателя на нулевом пине платы ардуино. Считывание полученного значения напряжения аналогового импульса происходит в скетче с помощью команды analogRead ().

В плату Ардуино встроен аналого-цифровой преобразователь, способный  считывать напряжение и переводить его в цифровые показатели со значением от нуля до 1023.

При повороте указателя до конечного значения в одном из двух возможных направлений, напряжение на пине равно нулю, и, следовательно, напряжение, которое будет генерироваться составляет 0 В.

При повороте вала до конца в противоположном направлении на пин поступает напряжение величиной 5В, а значит числовое значение будет составлять 1023.

Пример проекта

Примером реализации схемы подключения потенциометра может стать макетная плата с подключенным переменным резистором и светодиодом. При помощи потенциометра будет выполняться управление уровнем яркости свечения.

Для проведения работ следует подготовить такие детали:

  • 1 плату Arduino Uno
  • 1 беспаячную макетную плату
  • 1 светодиод
  • 1 резистор с сопротивлением 220 Ом
  • 6 проводов «папа-папа»
  • 1 потенциометр.

Для использования меньшего количества проводов от макетной платы к контроллеру следует подключить светодиод и потенциометр проводом земли к длинному рельсу минуса.

Пример скетча

В этом примере важно понимать, что яркость свечения светодиода управляется не напряжением подаваемым с потенциометра, а кодом.

#define PIN_LED 11
#define PIN_POT A0 void setup()
{ // Пин, к которому подсоединяется светодиод определяем как выход pinMode(PIN_LED, OUTPUT); // Пин с переменным резистором является входом pinMode(PIN_POT, INPUT);
} void loop(){ // Определяем 2 переменные типа int int rotat, brightn; // Считывание в переменную rotat напряжения с переменного резистора: // микроконтроллер будет выдавать числа от 0 до 1023 // пропорциональны положению поворота вала rotat = analogRead(PIN_POT); // Преобразуем значение в яркость. Для этого делим rotat на 4, что с учетом округления даст нам число от 0 до 255. Именно это число мы подадим на шим-выход, с помощью которого можно управлять яркостью. brightn = rotat / 4; // Запись шим значения яркости на светодиод analogWrite(PIN_LED, brightn);
}

Источник: https://ArduinoMaster.ru/datchiki-arduino/potentsiometr-arduino/

Цифровой потенциометр X9C и Arduino

Подключение цифрового потенциометра X9C102( X9C103, X9C104) к Arduino.

Рассмотрим управление цифровым потенциометром X9C (X9C102, X9C103, X9C503, X9C104) при помощи Arduino, а также, какие области применения могут быть у данного устройства. Используем недорогой готовый модуль.

Потенциометр (переменный резистор) – это электротехническое устройство, которое позволяет изменять сопротивление электрическому току. Классический (механический) потенциометр представляет собой два вывода, между которыми располагается третий – подвижный (скользящий). Перемещение подвижного вывода изменяет сопротивление между ним и каждым из неподвижных вывода.

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

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

Чаще всего используется готовый модуль с цифровым потенциометром X9C102 (X9C103, X9C104, X9C503).

Цифровой потенциометр типа X9C может быть одного из следующих номиналов:

  • X9C102 — 1 кОм
  • X9C103 — 10 кОм
  • X9C503 — 50 кОм
  • X9C104 — 100 кОм

В названии потенциометра X9C, последние 3 цифры обозначают: значение и количество нулей, которое нужно приписать к значению, для получения номинала. К примеру: 102 это 10 и 2 нуля, или 1000 Ом (1 кОм); 503 – это 50 и 3 нуля, или 50000 (50 кОм) т.п.

Между 0 и максимальным значением с шагом 1/100 от максимума можно регулировать сопротивление на третьем «подвижном» выводе.

Управление положением «подвижного» вывода осуществляется при помощи ряда отрицательных импульсов. Каждый импульс смещает значение сопротивления на 1 шаг в сторону увеличения либо уменьшения.

Потенциометр управляется по трём линиям:

  • CS — Выбор устройства (LOW — устройство активно)
  • INC — Изменение сопротивления выхода (Отрицательные импульсы)
  • U/D — Направление изменения: U (вверх) – если напряжение на ножке микросхемы HIGH, D (вниз) – LOW

Временная диаграмма управляющих сигналов:

VW – напряжение на центральном выводе

Программа содержит простой алгоритм: каждые 100 мс с шагом 10% повышаем сопротивление от 0 до 100% максимального значения потенциометра.

Пример программы для работы цифровым потенциометром X9C: скачать

С помощью логического анализатора можно узнать, получилось ли соблюсти временную диаграмму управления потенциометром:

На рисунке виден положительный результат. Опускаем линию CS в LOW, а также U/D в LOW (уменьшение выходного сопротивления).

Когда на INC отсчитали 100 импульсов, поднимаем U/D в HIGH (изменяем сопротивление в сторону увеличения).

С помощью INC относительно выставленного нулевого сопротивления начинаем отсчитывать нужное значение (в данном случае 10 импульсов равны 10% от максимума потенциометра). 

Потенциометр X9C102/103/104 имеет 100 градаций сопротивления между минимальным и максимальным. Это позволяет не вводить дополнительных коэффициентов для пересчёта процентов в импульсы. Например: 10 импульсов INC меняют данное значение выходного сопротивления на 10%.

Если при помощи мультиметра проконтролировать сопротивление между центральным и одним из конечных выводов, то можно зафиксировать изменения сопротивления. Для наглядности можно подать напряжение 5 вольт между конечными выводами потенциометра, а к центральному контакту подключить осциллограф.

Источник: https://SmartModules.ru/digipot-x9c-arduino

Урок 4 — Подключаем потенциометр к Arduino. Пишем код в Ardiono IDE

Подключить потенциометр не составит труда. Тем более в интернете очень много примеров. Написать подходящий код для проекта это уже сложнее.

Читайте также:  Основы настройки и использования micro sd карт с arduino

Выводим значения с потенциометра в Serial port.

const int analogInPin = A0; // потенциометр int sensorValue = 0; // считанное значение void setup() { Serial.begin(9600); } void loop() { sensorValue = analogRead(analogInPin); Serial.print(«sensor = » ); Serial.println(sensorValue); delay(50); }

Мы получим значения от 0 до 1024. Это потому что у ардуино 10 bit АЦП. Данный вывод можно сгладить

#define analogInPin A0 // потенциометр const byte averageFactor = 5; // коэффициент сглаживания показаний (0 = не сглаживать) // чем выше, тем больше «инерционность» int sensorValue = 0; // считанное значение void setup() { Serial.begin(9600); } void loop() { int newSensorValue = analogRead(analogInPin); if (averageFactor > 0) // усреднение показаний для устранения «скачков» { sensorValue = (sensorValue * (averageFactor — 1) + newSensorValue) / averageFactor; // = (*4 + ) / 5 } else { sensorValue=newSensorValue; // не делаем усреднений, что прочитали то и считаем выводом } Serial.print(«sensor = » ); Serial.println(sensorValue); delay(50); }

Чем больше коэффициент сглаживания тем меньше верхний придел. Это видно по формуле. При коэффициенте = 2 максимальное значение будет 1022 при 5 максимум на выходе будет 1019.

sensor = 982 sensor = 990 sensor = 996 sensor = 1001 sensor = 1005 sensor = 1008 sensor = 1011 sensor = 1013 sensor = 1015 sensor = 1016 sensor = 1017 sensor = 1018 sensor = 1019 sensor = 1019 sensor = 1019

Это нужно учитывать при разработке программы. Можете конечно и не использовать сглаживание. Это ваш выбор.

Выводы Arduino 8bit. Как же нам быть? С потенциометра получаем от 0 до 1024 а на вывод можем подать от 0 до 255. Для решение данной задачи нам поможет функция map(value, fromLow, fromHigh, toLow, toHigh)

#define analogInPin A0 // потенциометр const byte averageFactor = 5; // коэффициент сглаживания показаний (0 = не сглаживать) // чем выше, тем больше «инерционность» int sensorValue = 0; // считанное значение void setup() { Serial.begin(9600); } void loop() { int newSensorValue = analogRead(analogInPin); if (averageFactor > 0) // усреднение показаний для устранения «скачков» { sensorValue = (sensorValue * (averageFactor — 1) + newSensorValue) / averageFactor; // = (*4 + ) / 5 } else { sensorValue=newSensorValue; // не делаем усреднений, что прочитали то и считаем выводом } int val = map(sensorValue, 0, 1023, 0, 255); Serial.print(«sensor = » ); Serial.println(val); delay(50); }

С помощью функции map() можно вывести инвертированные значения

int val = map(sensorValue, 0, 1023, 255, 0);

Если у вас есть предложения по реализации подключения потенциометра к Arduino или у вас возник вопрос. Пишите в коментарии.

Источник: https://portal-pk.ru/news/133-podklyuchaem-potenciometr-k-arduino-pishem-kod-v-ardiono-ide.html

Как подключить цифровой потенциометр X9C102, X9C103, X9C104 к Arduino

Рассмотрим управление цифровым потенциометром X9C (X9C102, X9C103, X9C503, X9C104) с помощью Arduino, а также то, какие области применения могут быть у данного устройства. Воспользуемся готовым модулем, который стоит меньше 1 доллара.

Потенциометр, или переменный резистор – это электротехническое устройство, которое позволяет изменять сопротивление электрическому току. Классический (механический) потенциометр представляет собой два вывода, между которыми располагается третий – подвижный («скользящий»). Перемещая подвижный вывод, мы меняем сопротивление между ним и каждым из неподвижных вывода.

Принцип работы механического потенциометра

Электронный потенциометр – это аналог механического потенциометра, но с рядом преимуществ: он не имеет механических частей, он может управляться удалённо с помощью, например, микроконтроллера, и он существенно меньше по размеру.

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

Будем использовать готовый модуль с цифровым потенциометром X9C102 (X9C103, X9C104, X9C503). Китайские друзья продают их меньше чем за 100 рублей.

Модуль с цифровым потенциометром X9C102, X9C103, X9C104

Цифровой потенциометр типа X9C может быть одного из следующих номиналов:

Название Максимальное сопротивление
X9C102 1 кОм
X9C103 10 кОм
X9C503 50 кОм
X9C104 100 кОм

В названии потенциометра X9C три цифры означают: значение и количество нулей, которое нужно приписать к значению, чтобы получить номинал. Например: 102 это 10 и 2 нуля, или 1000 Ом (1 кОм); 503 – это 50 и 3 нуля, или 50000 (50 кОм) т.п.

2Логика работы и схема подключения цифрового потенциометра X9C103 к Arduino

Между 0 и максимальным значением с шагом 1/100 от максимума можно регулировать сопротивление на третьем «подвижном» выводе.

Управление положением «подвижного» вывода осуществляется с помощью серии отрицательных импульсов. Каждый импульс смещает значение сопротивления на 1 шаг в сторону увеличения или уменьшения.

Потенциометр управляется по трём линиям:

Название выводаНазначениеПримечание
CS Выбор устройства LOW — устройство активно
INC Изменение сопротивления выхода Отрицательные импульсы
U/D Направление изменения U (вверх) – если напряжение на ножке микросхемы HIGH, D (вниз) – LOW

Вот так выглядит временная диаграмма управляющих сигналов:

Временная диаграмма управления потенциометром X9C102, X9C103, X9C104

Здесь VW – напряжение на центральном выводе.

Давайте соберём схему, как показано на рисунке:

Схема подключения цифрового потенциометра X9C102, X9C103, X9C104 к Arduino

Модуль требует питание +5 В.

3Скетч управления цифровым потенциометром X9C102, X9C103, X9C104

Теперь напишем вот такой скетч:

const int CS = 10; const int INC = 9; const int UD = 8; void setup() { pinMode(CS, OUTPUT); pinMode(INC, OUTPUT); pinMode(UD, OUTPUT); digitalWrite(CS, HIGH); // X9C в режиме низкого потребления digitalWrite(INC, HIGH); digitalWrite(UD, HIGH); } void loop() { for (int i=0; i

Источник: https://soltau.ru/index.php/arduino/item/492-kak-podklyuchit-tsifrovoj-potentsiometr-x9c102-x9c103-x9c104-k-arduino

Управление с помощью Arduino цифровым потенциометром AD5206 через протокол SPI

В данном руководстве мы изучим, как управлять цифровым потенциометром AD5206 с помощью Arduino, используя последовательный периферийный интерфейс SPI. Для более подробной информации об этой библиотеке смотрите статью «Библиотека SPI для Arduino».

Цифровые потенциометры полезны, когда вам нужно изменять сопротивление в цепи электронным способом, а не вручную. Примеры применений цифровых потенциометров включают в себя управление яркостью светодиодов, обработку аудиосигналов и так далее.

В данном примере мы будем использовать шестиканальный цифровой потенциометр для управления яркостью шести светодиодов. Этапы, через которые мы пройдем, реализуя связь по SPI, могут быть изменены для использования большинства других SPI устройств.

Необходимые комплектующие

Кратко о цифровом потенциометре AD5206

Ссылка на техническое описание AD5206

Структурная схема микросхемы цифрового потенциометра AD5206Распиновка микросхемы AD5206Назначение выводов микросхемы AD5206

AD5206 – это 6-канальный цифровой потенциометр. Это означает, что он имеет шесть переменных резисторов (потенциометров), встроенных для независимого электронного управления.

Для каждого из шести встроенных переменных резисторов на корпусе микросхемы выделено по три вывода, их можно подключить так же, как если бы вы использовали обычный механический потенциометр. Выводы отдельных переменных резисторов обозначены как Ax, Bx и Wx, например, A1, B1 и W1.

В этом руководстве мы будем использовать каждый потенциометр в качестве делителя напряжения, подключив один крайний вывод (вывод A) к напряжению питания, второй крайний вывод (вывод B) – к шине земли, а со среднего вывода (Wiper) будем брать изменяющееся напряжение.

В этом случае AD5206 обеспечивает максимальное сопротивление 10 кОм, сопротивление изменяется в 255 шагов (максимум при 255, минимум при 0).

Схема

Схема соединенийПринципиальная схема

Код программы

/* Управление цифровым потенциометром. Этот пример управляет цифровым потенциометром Analog Devices AD5206. AD5206 включает в себя 6 каналов потенциометров. Выводы каждого канала, отмеченные как A — подключен к напряжению питания W — средний вывод потенциометра, положение которого мы будем менять B — подключен к корпусу.

AD5206 управляется через SPI, и чтобы управлять им, необходимо послать команду из двух байтов, один байт с номером канала (0 — 5), а другой байт со значением сопротивления канала (0 — 255).

Схема: * Все выводы A AD5206 подключены к +5В * Все выводы B AD5206 подключены к земле * Светодиод и последовательно соединенный с ним резистор 220 Ом подключен между каждым выводом W и землей * CS — к цифровому выводу 10 (вывод SS) * SDI — к цифровому выводу 11 (вывод MOSI) * CLK — к цифровому выводу 13 (вывод SCK) */ // подключить библиотеку SPI: #include // выбрать вывод 10 как вывод выбора ведомого для цифрового потенциометра: const int slaveSelectPin = 10; void setup() { // настроить slaveSelectPin на выход: pinMode(slaveSelectPin, OUTPUT); // инициализация SPI: SPI.begin(); } void loop() { // пройтись по шести каналам цифрового потенциометра: for (int channel = 0; channel < 6; channel++) { // изменить сопротивление на этом канале с минимума на максимум: for (int level = 0; level < 255; level++) { digitalPotWrite(channel, level); delay(10); } // немного подождать на максимуме: delay(100); // изменить сопротивление на этом канале с максимума на минимум: for (int level = 0; level < 255; level++) { digitalPotWrite(channel, 255 - level); delay(10); } } } void digitalPotWrite(int address, int value) { // установить на выводе SS лог.0, чтобы выбрать чип: digitalWrite(slaveSelectPin, LOW); // отправить адрес и значение через SPI: SPI.transfer(address); SPI.transfer(value); // установить на выводе SS лог.1, чтобы отменить выбор чипа: digitalWrite(slaveSelectPin, HIGH); }

Оригинал статьи:

  • Controlling a Digital Potentiometer Using SPI

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

Источник: https://radioprog.ru/post/248

Что такое подтягивающий (стягивающий) резистор

Чтобы ответить на этот вопрос давайте посмотрим на следующую схему:
Мы бы хотели отслеживать нажатие кнопки для выполнения каких-то действий.

Для этого мы подключили линию +5В через резистор и кнопку к цифровому выводу Ардуино, полагая, что при нажатии на кнопку ток потечет через нее и Ардуино считает на цифровом входе 2 сигнал высокого уровня. Соответственно, при размыкании контакта мы рассчитываем получить на входе сигнал низкого уровня. Так ли это? Проверим.

Подключим кнопку по приведенной схеме и загрузим в Ардуино следующий скетч. Результат его работы посмотрим в мониторе порта.void setup() { Serial.begin(9600); pinMode(2, INPUT);
} void loop() { Serial.

println(digitalRead(2)); delay(1000);
}При нажатии на кнопку Ардуино, действительно, зафиксирует на входе сигнал высокого уровня, при этом в монитор порта будет выводиться значение «1». Но при отпускании кнопки в мониторе порта будут выводиться как «0», так и «1».

Я даже больше скажу: можно исключить из схемы кнопку (все равно она разомкнута), у нас останется только провод, подключенный к порту 2 Ардуино, результат опроса порта будет таким же непредсказуемым. Особенно это хорошо заметно с длинным куском провода.

Почему так происходит? Дело в том, что вход Ардуино не подключен ни к линии питания, ни к земле — он находится «ни в каком» состоянии. Такое состояние называется высокоимпедансным или Z-состоянием. Провод в данном случае выполняет роль антенны, на которую оказывают воздействие окружающие ее электромагнитные поля.

В результате Ардуино непредсказуемо фиксирует то высокий, то низкий уровень сигнала на данном входе.

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

Иногда подтягивающим называют резистор, который подтягивает именно к питанию, также используют англоязычный термин pull-up (pull-up резистор). А для обозначения резистора, подтягивающего к земле, можно использовать термин стягивающий или pull-down резистор.

Ниже приведены схемы подключения кнопки к логическому входу (не обязательно Ардуино) с использованием подтягивающего и стягивающего резисторов.Попробуйте подключить кнопку к Ардуино используя одну из приведенных схем. В этот раз в мониторе порта не будет никаких неожиданных значений.

Читайте также:  Ардуино сканер отпечатков пальцев своими руками

Как вы понимаете, подтягивающие резисторы весьма востребованы в электронике.

Они нужны не только для подключения кнопок, но также при подключении выводов устройств с Z-состоянием или открытым коллектором. Поэтому многие контроллеры имеют встроенные подтягивающие резисторы, в том числе и Ардуино (а точнее используемые в них микроконтроллеры).

Чтобы подтянуть порт Ардуино к питанию необходимо функцией pinMode установить для данного порта режим INPUT_PULLUP. Давайте немного изменим схему и скетч из начала этой статьи. Из схемы уберем резистор и установим кнопку между вторым портом и землей:

А в скетче изменим режим работы порта на INPUT_PULLUP, чтобы задействовать внутренний подтягивающий резистор:void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP);
} void loop() { Serial.println(digitalRead(2)); delay(1000);
}Загрузите этот код в Ардуино и убедитесь, что схема работает как нам нужно без дополнительных (внешних) резисторов. В тот момент когда кнопка разомкнута порт Ардуино не остается подвешенным в воздухе: он подтянут к питанию внутренним резистором. Поэтому на нем гарантирован сигнал высокого уровня. А при нажатии кнопки будет считываться сигнал низкого уровня. Не забывайте о встроенных подтягивающих резисторах Ардуино. Я довольно часто замечаю, что люди, пишущие статьи про Ардуино, не знают об их наличии и вешают для тех же кнопок внешние подтягивающие резисторы.

Что такое сильный (strong pull-up) и слабый (weak pull-up) подтягивающий резистор? Чем ниже сопротивление подтягивающего резистора, тем больший ток протекает через него и тем сильнее он подтягивает сигнал к питанию (или земле, если речь о pull-down резисторе). Отсюда и название сильный подтягивающий резистор. Соответственно, чем выше сопротивление, тем слабже резистор подтягивает сигнал, поэтому его называют слабым.

Как выбрать номинал для подтягивающего резистора? Общая рекомендация — это, как правило, 10кОм. Где-то от 5кОм и ниже считается сильной подтяжкой, 20..100кОм — слабая. Подтягивающие резисторы Ардуино имеют номинал 20кОм, т.е. являются слабыми, поэтому в документации к различным устройствам можно увидеть рекомендации использовать более сильные подтягивающие резисторы.

На этом всё. А дочитавшим до конца в качестве бонуса функциональная схема порта ввода/вывода микроконтроллера ATmega328, используемого в Arduino UNO. На схеме показан подтягивающий резистор и условия для его включения:

  • бит PUD (PULLUP DISABLE) регистра MCUCR должен быть сброшен;
  • регистр DDxn (Data Direction) должен быть установлен в 0, т.е. порт сконфигурирован на ввод;
  • регистр PORTxn должен быть установлен в 1.

Источник: https://tsibrov.blogspot.com/2018/02/pullupresistors.html

Урок 2. arduino и потенциометр

Главная/Arduino/Arduino уроки/Урок 2. arduino и потенциометр

Урок 2. Arduino и Потенциометр. Принципиальная схема

В этом опыте мы будем работать с потенциометром. Потенциометр еще можно называть переменным резистором.

Когда потенциометр одним из своих контактов, нижним по схеме соединен с землей (минус питания), а другим (верхним) к +5 вольт, то на среднем контакте мы получим напряжение от 0 до 5 вольт, в зависимости от положения ручки потенциометра. Потенциометры обычно используют для регулировки различных параметров, например громкости или яркости.

Из этого опыта, вы узнаете, как использовать потенциометр для управления яркостью светодиода на Arduino.

Набор для экспериментов ArduinoKit
Код программы для опыта №2: sketch 02

Собранный проект на макетная плата. Урок 2. Arduino и Потенциометр

Программа демонстрирует работу аналогового входа. Изменяя положение ручки потенциометра изменяется скорости мигания светодиода. Потенциометры имеют три ножки.

Которые мы используем в качестве делитель напряжения, внешние ножки присоединены на +5 Вольт и землю.

Средний контакт будет сигнальным (напряжение на нем изменяется от 0 вольт до +5 вольт в зависимости от положения ручки), ее поворот меняет сопротивление в его плечах, что делает мигание быстрее или медленнее!

Потенциометр
Подключите среднюю ножку на аналоговый порт 0 на плате Arduino. Подключите одну из внешних ножек к +5В. Подключите другую внешнюю ножку к земле.

Светодиод У большинства Arduino есть встроенный в плату светодиод и резистор, подключенные к порту 13, так что в принципе наш светодиод — дубль имеющегося.

Но если вы хотите подключить свой светодиод к контакту 13, или использовать другой контакт, выполните следующие действия: Подключите положительную ножку светодиода (длинная нога) к Arduino цифровой вывод 13 (или любой другой цифровой вывод, но не забудьте внести изменения в код программы).

Подключите минусовую ножку светодиода (короткая нога), к резистору 330 Ом (оранжевый-оранжевый-коричневый). Подключите другую ножку резистора на землю.

В зависимости от считанного значения с сенсора, в данном случае сенсором является потенциометр, подключенный к аналоговому входу А0. Программа включает и выключает светодиод, подключенный к цифровому выводу Arduino — Pin13. Время пребывания светодиода во включенном или выключенном состоянии зависит от значения, полученного при считывании с analogRead(), движка потенциометра.

Схема соединений. Урок 2. Arduino и Потенциометр

Скачать код программы ко второму уроку Arduino и потенциометр в статье чуть выше.

Источник: http://arduinokit.ru/arduino/lessons-arduino/urok-2-arduino-potentsiometr.html

Подключение часов реального времени DS1302 к Arduino и дисплея 1602 i2C — часы на ардуино !

  • Отличительные особенности:
  • Подсчет реального времени в секундах, минутах, часах, датах месяца, месяцах, днях недели и годах с учетом высокосности текущего года вплоть до 2100 г.
  • Дополнительное ОЗУ 31 x 8 для хранения данных
  • Последовательный ввод – вывод информации для сокращения выводов микросхемы
  • Выполнение всех функций при напряжении питания 2.0-5.5 В    — выполнение всех функций при напряжении 2.0-5.5 В на дополнительном выводе питания
  • Потребление не более 300 нA при 2.5 В питания
  • Чтение и запись информации по одному байту или потоком
  • Исполнение в 8-ми выводном корпусе DIP, а также по заказу в 8-ми выводном SOIC корпусе для поверхностного монтажа
  • Простой 3-проводной интерфейс
  • Совместимость с TTL-микросхемами (Vcc= 5V)
  • Возможность поставки в промышленном диапазоне температур: от -40°C до+85°C
  • Совместимость с DS1202
  • Отличия от DS1202:    возможность подключения встроенной цепи подзарядки к выводу Vcc1    два вывода питания для подключения основного и резервного источника питания    увеличено ОЗУ на 7 байт

Описание выводов:

X1, X2 подключение кварцевого резонатора 32.768 кГц
GND общий
RST сброс
I/O ввод — вывод данных
SCLK синхронизация последовательной связи
VCC1, VCC2 выводы питания

Структурная схема DS1302:

Расположение выводов DS1302:

Общее описание:

Микросхема DS1302 содержит часы реального времени с календарем и 31 байт статического ОЗУ. Она общается с микропроцессором через простой последовательный интерфейс. Информация о реальном времени и календаре представляется в секундах минутах, часах, дне, дате, месяце и годе.

Если текущий месяц содержит менее 31 дня, то микросхема автоматически определит количество дней в месяце с учетом высокосности текущего года. Часы работают или в 24-часовом или 12-часовом формате с индикатором AM/PM (до полудня/ после полудня).

Подключение DS1302 к микропроцессу упрощено за счет синхронной последовательной связи. Для этого требуется только 3 провода: (1) RST (сброс), (2) I/O (линия данных) и (3) SCLK (синхронизация последовательной связи). Данные могут передаваться по одному байту или последовательностью байтов до 31.

DS1302 разработан, чтобы потреблять малую мощность и сохранять данные и информацию часов при потреблении менее 1 мкВт. DS1302 — преемник DS1202.

В дополнение к основным функциям хранения времени DS1202, DS1302 имеет два вывода питания для подключения основного и резервного источника питания, возможность подключения программируемой цепи заряда к выводу VCC1 и семь дополнительных байтов ОЗУ.

Подключение:

Подключение DS1307 к Arduino:

RTC DS1307Arduino UNO
GND GND
VCC +5V
SDA A4
SCL A5

Подключение DS1302 к Arduino:

RTC DS1302Arduino UNO
GND GND
VCC +5V
RST 6 (Можно изменить на другие в скетче)
CLK 7 (Можно изменить на другие в скетче)
DAT 8(Можно изменить на другие в скетче)

Подключение DS3231 к Arduino:

RTC DS3231Arduino UNO
GND GND
VCC +5V
SDA A4
SCL A5

Код программы для модуля 1302 и дисплей 1602 I2C

В зависимости от того какой модуль Вы подключаете, необходимо в программе указать

Для DS1302

time.begin(RTC_DS1302,10,13,12);

Так же не забываем о экономии при покупке товаров на Алиєкспресс с помощью кэшбэка 

Преимущества библиотеки:

— библиотека имеет внутренние функции аппаратной обработки протоколов передачи данных I2C и SPI, а следовательно не требует подключения дополнительных библиотек, но и не конфликтует с ними, если таковые всё же подключены.

— библиотека имеет внутренние функции программой обработки протокола передачи данных 3-Wire

— для инициализации модуля необходимо вызвать функцию begin с названием модуля.

— подключение модулей осуществляется к аппаратным выводам arduino используемой шины (за исключением 3-Wire)

— простота установки и чтения времени функциями settime и gettime

функция settime может устанавливать дату и время, как полностью, так и частично (например только минуты, или только день, и т.д.)

функция gettime работает как функция date в php, возвращая строку со временем, но если её вызвать без параметра, то функция ничего не вернёт, а время можно прочитать из переменных в виде чисел.

— библиотека расширяемая, то есть для того, чтоб она работала с новым модулем, нужно указать параметры этого модуля в уже существующих массивах файла RTC.h (тип шины, частота шины в кГц, режимы работы, адреса регистров и т.д.), как всё это сделать, описано в файле extension.txt

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

— при вызове функции begin, библиотека читает флаги регистров модуля и при необходимости устанавливает или сбрасывает их так, чтоб модуль мог работать от аккумуляторной батареи, а на программируемом выводе меандра (если таковой у модуля есть) установилась частота 1Гц, тогда этот вывод можно использовать в качестве внешнего посекундного прерывания.

— при работе с модулем DS1302 не нужны никакие резисторы на выводе GND (которые нужны для его работы с другими библиотеками этого модуля), это достигнуто тем, что для шины 3-Wire указана конкретная частота 10кГц, не зависимо от частоты CPU arduino.

— в библиотеке реализована еще одна не обязательная функция period, принимающая в качестве единственного аргумента — количество минут (от 1 до 255)

если в течении указанного времени была вызвана функция gettime несколько раз, то запрос к модулю по шине будет отправлено только в первый раз, а ответом на все остальные запросы будет сумма времени последнего ответа модуля и времени прошедшего с этого ответа.

Функцию period достаточно вызвать один раз.

Подробное описание:

}// ОПИСАНИЯ ПАРАМЕТРОВ ФУНКЦИЙ: // // Подключение библиотеки: // #include // iarduino_RTC time(название модуля [, вывод SS/RST [, вывод CLK [, вывод DAT]]]); // если модуль работает на шине I2C или SPI, то достаточно указать 1 параметр, например: iarduino_RTC time(RTC_DS3231); // если модуль работает на шине SPI, а аппаратный вывод SS занят, то номер назначенного вывода SS для модуля указывается вторым параметром, например: iarduino_RTC time(RTC_DS1305,22); // если модуль работает на трехпроводной шине, то указываются номера всех выводов, например: iarduino_RTC time(RTC_DS1302, 1, 2, 3); // RST, CLK, DAT // // Для работы с модулями, в библиотеке реализованы 5 функции: // инициировать модуль begin(); // указать время settime(секунды [, минуты [, часы [, день [, месяц [, год [, день недели]]]]]]); // получить время gettime(«строка с параметрами»); // мигать времем blinktime(0-не_мигать / 1-мигают_сек / 2-мигают_мин / 3-мигают_час / 4-мигают_дни / 5-мигают_мес / 6-мигает_год / 7-мигают_дни_недели / 8-мигает_полдень) // разгрузить шину period (минуты); // // Функция begin(): // функция инициирует модуль: проверяет регистры модуля, запускает генератор модуля и т.д. // // Функция settime(секунды [, минуты [, часы [, день [, месяц [, год [, день недели]]]]]]): // записывает время в модуль // год указывается без учёта века, в формате 0-99 // часы указываются в 24-часовом формате, от 0 до 23 // день недели указывается в виде числа от 0-воскресенье до 6-суббота // если предыдущий параметр надо оставить без изменений, то можно указать отрицательное или заведомо большее значение // пример: settime(-1, 10); установит 10 минут, а секунды, часы и дату, оставит без изменений // пример: settime(0, 5, 13); установит 13 часов, 5 минут, 0 секунд, а дату оставит без изменений // пример: settime(-1, -1, -1, 1, 10, 15); установит дату 01.10.2015 , а время и день недели оставит без изменений // // Функция gettime(«строка с параметрами»): // функция получает и выводит строку заменяя описанные ниже символы на текущее время // пример: gettime(«d-m-Y, H:i:s, D»); ответит строкой «01-10-2015, 14:00:05, Thu» // пример: gettime(«s»); ответит строкой «05» // указанные символы идентичны символам для функции date() в PHP // s секунды от 00 до 59 (два знака) // i минуты от 00 до 59 (два знака) // h часы в 12-часовом формате от 01 до 12 (два знака) // H часы в 24-часовом формате от 00 до 23 (два знака) // d день месяца от 01 до 31 (два знака) // w день недели от 0 до 6 (один знак: 0-воскресенье, 6-суббота) // D день недели наименование от Mon до Sun (три знака: Mon Tue Wed Thu Fri Sat Sun) // m месяц от 01 до 12 (два знака) // M месяц наименование от Jan до Dec (три знака: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) // Y год от 2000 до 2099 (четыре знака) // y год от 00 до 99 (два знака) // a полдень am или pm (два знака, в нижнем регистре) // A полдень AM или PM (два знака, в верхнем регистре) // строка не должна превышать 50 символов // // если требуется получить время в виде цифр, то можно вызвать функцию gettime() без параметра, после чего получить время из переменных // seconds секунды 0-59 // minutes минуты 0-59 // hours часы 1-12 // Hours часы 0-23

Читайте также:  Инженер-электронщик (avr-микроконтроллеры)

Источник: http://www.electronica52.in.ua/proekty-arduino/podkluchenie-chasov-realnogo-vremeni-ds1302—k-arduino-i-displeya-1602-i2c—chasy-na-arduino—

Arduino часы с датчиком температуры и без RTS

Добрый день, сегодня я поделюсь инструкцией по изготовлению часов с комнатным термометром. Часы работают на Arduino UNO, для отображения времени и температуры служит графический экран WG12864B.

В качестве датчика температуры — ds18b20. В отличие от большинства других часов я не буду использовать RTS (Real Time Clock), а попробую обойтись без этого дополнительного модуля.

Для данной самоделки необходимы следующие компоненты:

— Arduino UNO (Или любая другая Arduino совместимая плата)- Графический экран WG12864B- Датчик температуры ds18b20- Резистор 4.7 Ком 0.25 Вт- Резистор 100 ом 0.25 Вт- Батарейный отсек для 4 батареек типа АА «пальчиковых»- Подходящая коробка- Мелкий напильник- Лак для ногтей (черный или под цвет корпуса)- Немного тонкого пластика или картона- Изолента- Соединительные провода- Монтажная плата- Кнопки- Паяльник- Припой, канифоль- Двусторонний скотч

Шаг 1 Подготовка корпуса.

Итак, наши часы должны где-то располагаться. Необходимо найти подходящую коробку. Главное чтобы в нее поместились экран WG12864B, Arduino и маленькая монтажная плата для кнопок. Минимальный размер коробки 7х7х10 см. Если использовать маленькую плату Arduino можно впихнуть в коробку и поменьше, но я буду описывать процесс на примере Arduino UNO.

Материал из которого сделана коробка предпочтительно пластик, если, как у меня, она железная, стоит позаботиться об изоляции, чтобы внутри нечего не «коротнуло». Пластик предпочтительнее и потому что его проще резать. С коробкой, он же корпус наших часов, определились. Теперь необходимо прорезать окошко под экран размером 6.5х4 см.

Если коробка железная, сделать аккуратно это крайне сложно. Как ни старайся около реза будут сколы краски и неровности. Поэтому вначале вырезаем, для этого можно использовать «болгарку», дрель с насадкой для реза или фрезой, в общем на ваш выбор, тем что есть под руками. После этого зачищаем напильником края. Все сколы краски закрашиваем лаком для ногтей, подходящего цвета.

В итоге должно получиться следующее:

Шаг 2 Подготовка графического экрана.

С подключение экрана, на первый взгляд, возникает много проблем и сложностей. Но если вначале разобраться с их видами, станет намного легче и понятнее. Существует много разновидностей и типов экранов на контролере ks0107/ks0108.

Все экраны принято делить на 4 типа:Вариант A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-TВариант B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG12864J4, QY-12864F, TM12864L-2, 12864J-1Вариант C: Shenzhen Jinghua Displays Co Ltd. JM12864Вариант D: Wintek- Cascades WD-G1906G, Wintek — GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS19264/HD61202Список не полный, их очень много. Самый распространённый и, на мой взгляд, удобный WG12864B3 V2.0. Дисплей можно подключить к Arduino по последовательному или параллельному порту. При использовании с Arduino UNO лучше выбрать подключение по последовательному порту – тогда нам потребуется всего 3 выхода микроконтроллера, вместо минимум 13 линий при подключении по параллельному порту. Подключается все довольно просто. Есть еще один нюанс, в продаже можно встретить два варианта дисплеев, со встроенным потенциометром (для регулировки контраста) и без него. Я выбрал, и советую тоже сделать вам, со встроенным.Это уменьшает количество деталей и время пайки. Также стоит поставить токоограничительный резистор номиналом 100 Ом для подсветки. Подключая напрямую 5 вольт, существует риск сжечь подсветку. WG12864B – Arduino UNO1 (GND) — GND2 (VCC) — +5V4 (RS) – 105 (R/W) – 116 (E) – 1315 (PSB) – GND19 (BLA) – через резистор — +5V20 (BLK) – GNDУдобнее всего это все собрать сзади экрана и вывести от него 5 проводов подключения к Arduino UNO. В итоге должно получится примерно так:Для тех кто все-таки выберет параллельное подключение приведу таблицу подключения.И схема для экранов варианта B:

Шаг 3 Подключение датчика температуры.

Как я уже говорил, для измерения температуры будем использовать интегральный датчик DS18B20. Выбрал его за высокую точностью измерения, погрешность не более 0,5 °C. Датчик откалиброван при изготовлении, какой-либо дополнительной настройки не требуется. Диапазон измерения температуры -55 … + 125 °C. Есть два режима работы: с внешним источником питания и «паразитного питания».

При работе в режиме внешнего питания подключение следующее:При использовании «паразитного питания» датчик получает питание от линии связи. В этом режиме для подключения ds18b20 к микроконтроллеру достаточно двух проводов. Внутренний конденсатор датчика заряжается за счет энергии на линии связи при низком уровне на шине.

У режима «паразитного питания» много особенностей и поэтому я не рекомендую его использовать. Но если вы все-таки решили использовать его, вот схема:Или можно использовать улучшенную схему подключения при использовании «паразитного питания»:На одну линию связи может быть включено несколько датчиков. Для наших часов достаточно одного.

Подключаем провод от контакта «DQ» ds18b20 к «pin 5» Arduino UNO.

Шаг 4 Подготовка платы с кнопками.

Для установки времени и даты на часах будем использовать три кнопки. Для удобства спаиваем три кнопки на монтажной плате и выводим провода.Подключаем следующим образом: общий для всех трех кнопок провод подключаем к «GND» Arduino.

Первую кнопку, она служит для входа в режим установки времени и переключения по времени и дате, подключаем к «Pin 2». Вторая, кнопка увеличения значения, — к «Pin 3», а третья, кнопка уменьшения значения, — к «Pin 4».

Шаг 5 Сборка всего воедино.

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

Получилось следующее:Спереди экрана по краю клеим двусторонний скотч на вспененной основе, желательно черный.Подключаем экран к Arduino:Плюс от батарейного отсека подключаем к «VIN» Arduino, минус к «GND». Размещаем его сзади Arduino. Перед установкой в корпус, не забудьте подключить датчик температуры и плату с кнопками.

Шаг 6 Подготовка и заливка скетча.

Для датчика температуры нужна библиотека OneWire.

onewire.rar [16.75 Kb] (скачиваний: 106)

Вывод на экран осуществляется через библиотеку U8glib:

u8glib.rar [906.95 Kb] (скачиваний: 102)

Для редактирования и заливки скетча надо установите эти две библиотеки. Сделать это можно двумя способами. Просто распаковать эти архивы и поместить распакованные файлы в папку «libraries», находящуюся в папке с установленной Arduino IDE. Или второй вариант установить библиотеки прямо в среде программирования.

Не распаковывая скачанные архивы, в среде Arduino IDE выберите меню Скетч – Подключить библиотеку. В самом верху выпадающего списка выберите пункт «Добавить .Zip библиотеку». В появившемся диалоговом окне выберете библиотеку, которую вы хотите добавить. Снова откройте меню Скетч – Подключить библиотеку.

В самом низу выпадающего списка вы должны увидеть новую библиотеку. Теперь библиотеку можно использовать в программах. Не забудьте после всего этого перезагрузить Arduino IDE. Датчик температуры работает по протоколу One Wire и имеет уникальный адрес для каждого устройства — 64-разрядный код. Каждый раз искать этот код нецелесообразно.

Поэтому необходимо вначале подключить датчик к Arduino, залить в нее скетч находящийся в меню Файл – Примеры – Dallas Temperature – OneWireSearch. Далее запускаем Инструменты — Монитор порта. Arduino должна найти наш датчик, написать его адрес и текущие показания температуры. Копируем или просто записываем адрес нашего датчика.

Открываем скетч Arduino_WG12864B_Term, ищем строку:byte addr[8]={0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97};//адрес моего датчика Записываем адрес вашего датчика между фигурными скобками, заменяя адрес моего датчика. Стока://u8g.setPrintPos( 44, 64); u8g.print(sek); // Выводим секунды для контроля правильности ходаСлужит для вывода секунд рядом с надписью «Data».

Это необходимо для точной установки хода времени. Если часы спешат или отстаю следует поменять значение в строке:if (micros() — prevmicros >494000) { // поменять на другое для корректировки было 500000Я опытным путем определил число, при котором часы идут достаточно точно. Если ваши часы спешат следует увеличить это число, если отстаю – уменьшить.

Для определения точности хода и нужен вывод секунд. После точной калибровки числа, секунды можно закомментировать и таким образом убрать с экрана.Заливаем скетч.

arduino_wg12864b_term.rar [3.64 Kb] (скачиваний: 200)

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Источник: https://USamodelkina.ru/9839-arduino-chasy-s-datchikom-temperatury-i-bez-rts.html

Ссылка на основную публикацию