cart

Продуктов в корзине: 0

Поиск товаров

Новинки



Подключаем первые модули, делаем часы и термометр с LCD экраном.

 Для урока вам понадобятся

Arduino UNO

Модуль часов DS1302

Датчик температуры и влажности DHT11

Набор проводов папа-мама.

Жк-экран LCD 1602

Макетная плата для удобства, но не обязательно( с ней нужны провода папа-папа).

3.1 Поехали ?

Первым делом познакомимся с портом передачи данных Serial. Helloworld, как же без него. Код простейший:

void setup() {

Serial.begin(9600); //Активируем порт на скорость 9600 бод

}

void loop() {

Serial.print("Hello "); // Печатаем в серийный порт Hellо без перевода строки

Serial.println("world"); // добавляем world и переводим строку

}

Вроде все понятно ?  В разделе установок активируем, в цикле печатаем. Жмем кнопку вгрузить. После успешной загрузки жмем кнопку с лупой (с правой стороны Arduino IDE) и открываем монитор серийного порта и видим

6

Рисунок 6. Вывод информации  серийный порт.

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

3.2 Давайте рассмотрим модуль часов 1302.

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

Для работы с часами нам потребуется библиотека RTC

Скачать ее можно тут 

После скачивания ее нужно установить в Arduino IDE.

Для этого нажмите Эскиз => Импорт библиотек => Добавить библиотеку и выберите скачанный файл. Он добавится в список библиотек вашей среды программирования Arduino IDE.

Ну что читать не устали?  Тогда займемся подключением.

7

 

Рисунок 7. Схема подключения часов DS1302 к Arduino UNO

Ну и сам код

#include <RTC.h> // подключаем библиотеку RTC

RTC time; // задаем переменную time как библиотеку для удобства обращения

void setup() {

Serial.begin(9600); // активируем серийный порт на скорости 9600 бод

time.begin(RTC_DS1302,11,13,12); // на базе чипа DS1302, вывод RST, вывод CLK, вывод DAT доступны любые выводы

// запись даты и времени

time.settime(0,33,19,19,02,16,5); // 0 сек, 33 мин, 19 час, 19, февраля, 2016 года, четверг

// time.settime(35,10,20); // 35 сек, 10 мин, 20 час, дату оставить без изменений

// time.settime(-1,-1,-1,31,12,15); // 31, декабря, 2015 года, время и день недели оставить без изменений

}

void loop(){

   if(millis()%1000==0){ // если прошла 1 секунда

      Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводимвремя

     delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс

     }

}

void loop(){

   if(millis()%1000==0){ // если прошла 1 секунда

      Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводимвремя

     delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс

     }

}

Разберем скетч подробнее. Как вы видите существует 3 способа задать время и дату в часы, выбирайте сами что вам удобнее.

Во вторых мы познакомились с новым оператором if. Это опретаор проверки, или ЕСЛИ чтобы быть правильнее.

Оператор if (условие)

и операторы сравнения ==, !=, < , >

Оператор if используется в сочетании с операторами сравнения, он проверяет, дос-

тигнута ли истинность условия — например, превышает ли входное значение за-

данное число. Формат оператора if следующий:

if (someVariable > 50){

// выполнять действия

}

Программа проверяет, значение  больше чем 50 или нет. Если да, то

выполняются определенные действия. Говоря иначе, если выражение в круглых

скобках истинно, выполняются операторы внутри фигурных скобок. Если нет, про-

грамма пропускает этот код.

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

го или нескольких операторов.

Операторы сравнения:

_ x == y (x равно y);

_ x != y (x не равно y);

_ x < y (x меньше чем y);

_ x > y (x больше чем y);

_ x <= y (x меньше чем или равно y);

_ x >= y (x больше чем или равно y).

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

Функция millis()

Возвращает количество миллисекунд с момента начала выполнения текущей про-

граммы на плате Arduino. Это количество сбрасывается на ноль вследствие пере-

полнения значения приблизительно через 50 дней.

Параметров нет.

Возвращаемое значение — количество миллисекунд с момента начала выполнения

программы (тип unsigned long).

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

Вгружаем программу, жмем серийный порт и видим:

Рисунок 8. Результат работы скетча часов.

 

Продолжение следует 

Добавить комментарий


Защитный код
Обновить

Go to top