Статьи » Разработки
Добавить статью

AnalogRead переводим в проценты с выводом данных на дисплей

2017-09-02 в 23:04 (последнее изменение 2020-03-02 в 23:32)

Кратко хотелось бы рассказать, как можно перевести значение из функции AnalogRead в Arduino в проценты.
Известно, что аналоговые порты замеряют напряжение и могут выдавать значения от 0 до 1023. Вот эти числа мы и можем перевести в проценты, составив обычную пропорцию.
К примеру, замеряем уровень освещения модулем с фоторезистором. Модуль выдает значение в аналоговом виде. Но разве нам будет интересно наблюдать на LCD дисплее значение от датчика освещения равное, допустим, 546? Думаю, нет. Поэтому мне и пришла идея переводить значения в проценты.

И так, вот скетч, который выводит на дисплей 128x64 пикселя значение от датчика освещения в процентах.

Код

#include "U8glib.h"

const int sensor1 = 0;

U8GLIB_ST7920_128X64_1X u8g( 13, 11, 10);

void setup() {
}

void loop () {

  u8g.firstPage();
  do {
    u8g.setColorIndex(1);
    u8g.setFont(u8g_font_10x20);

    int val = analogRead(sensor1);
    val = map(val, 0, 1023, 0, 100);
    u8g.setPrintPos( 45, 50); u8g.print(val);
    u8g.setPrintPos( 65, 50); u8g.print("%");
  }    while (u8g.nextPage());
  delay(1000);
}

На дисплее у нас появиться такая картинка.

значение в проценты

Некоторое пояснение по коду.

Указываем, к какому пину подключен датчик освещения. К аналоговому вводу 0.

Код
const int sensor1 = 0;

Выбираем цвет символов. Белый.

Код
u8g.setColorIndex(1);

Указываем, каким шрифтом будут выводиться символы на дисплее.

Код
u8g.setFont(u8g_font_10x20);

Теперь код целиком. Читаем данные, указав минимальное (0) и максимальное (1023) значение от датчика. Так же указываем минимальное (0) и максимальное (100) значение показаний, которые в конечном итоге будут отображаться на дисплее.

Код
    int val = analogRead(sensor1);
    val = map(val, 0, 1023, 0, 100);

Теперь выводим полученное значение в новом формате и дописываем отдельно символ процентов "%".

Код
    u8g.setPrintPos( 45, 50); u8g.print(val);
    u8g.setPrintPos( 65, 50); u8g.print("%");

analogread проценты

12864 arduino

12864 датчик освещения

Такой подход я иногда применяю в некоторых проектах. Может и вам он пригодится.


Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте.
Так же у нас есть Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!

Просмотров: 6667. Оценка статьи: 5.0 из 5. Уже оценило 2 читателя

Об авторе - Администратор

More by Администратор

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]