Содержание

Эксперимент 18. Тестер батареек

← Пантограф | Оглавление | Светильник, управляемый по USB →

В этом эксперименте мы выводим на жидкокристаллический дисплей данные о напряжении, измеренном на батарейке.

Список деталей для эксперимента

Принципиальная схема

Схема на макетке

Обратите внимание

Скетч

p180_lcd.ino
// Подключаем библиотеку для работы с жидкокристаллическим
// экраном (англ. Liquid Crystal Display или просто LCD)
#include <LiquidCrystal.h>
// на диоде, защищающем от неверной полярности, падает доля
// напряжения (англ. voltage drop). Необходимо это учитывать
#define DIODE_DROP  0.7 
// Объявляем объект, для управления дисплеем. Для его создания
// необходимо указать номера пинов, к которым он подключен в
// порядке:       RS   E DB4 DB5 DB6 DB7
LiquidCrystal lcd(13, 12, 11, 10,  9,  8);
 
void setup() 
{
  // начинаем работу с экраном. Сообщаем объекту количество
  // строк и столбцов. Опять же, вызывать pinMode не требуется:
  // функция begin сделает всё за нас
  lcd.begin(16, 2);
  // печатаем сообщение на первой строке
  lcd.print("Battery voltage:");
}
 
void loop() 
{
  // высчитываем напряжение подключенной батарейки
  float voltage = analogRead(A0) / 1024.0 * 10.0;
  // если напряжение на делителе напряжения было зафиксировано,
  // нужно прибавить напряжение на диоде, т.к. оно было съедено
  if (voltage > 0.1)
    voltage += DIODE_DROP;
  // устанавливаем курсор, колонку 0, строку 1. На деле — это
  // левый квадрат 2-й строки, т.к. нумерация начинается с нуля
  lcd.setCursor(0, 1);
  // печатаем напряжение в батарейке с точностью до сотых долей
  lcd.print(voltage, 2);
  // следом печатаем единицы измерения
  lcd.print(" Volts");
}

Пояснения к коду

Вопросы для проверки себя

  1. Из-за чего измерения напряжения в этом эксперименте могут быть неточными (на что мы можем повлиять)?
  2. Какая библиотека облегчает работу с нашим текстовым экраном? Какие шаги нужно предпринять до начала вывода текста на него?
  3. Каким образом мы задаем позицию, с которой на экран выводится текст?
  4. Можем ли мы писать на экране кириллицей? Как?

Задания для самостоятельного решения

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

  1. Создайте секундомер, который будет отсчитывать время, прошедшее с начала работы Arduino и выводить секунды и сотые секунд на экран.
  2. Совместите отсчет времени и измерение напряжения. Отобразите все данные на дисплее. Отправляйте их раз в 10 секунд на компьютер.

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


← Пантограф | Оглавление | Светильник, управляемый по USB →