»»
Добавить статью

Перевод значения AnalogRead в проценты

2017-09-02 в 23:04

Кратко хочется рассказать как можно перевести значение из функции AnalogRead в Arduino в проценты.
Известно что аналоговые порты замеряют напряжение и могут выдать значение о 0 до 1023. Вот эти цифры мы можем интерпретировать в проценты.
К примеру, замеряем уровень освещения модулем с фоторезистором. Модуль выдает значение в аналоговом виде. Но разве нам будет интересно наблюдать на дисплее значение от датчика освещения равное к примеру 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 датчик освещения

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

Радиобарахолка Вконтакте


Если Вы заметили ошибку, нажмите Ctrl+Enter и сообщите нам.
Оценка статьи: 5.0/5 Уже оценило 1
XLR разъем
Отличные разъемы. Для ремонта микшера отлично подходят.
LCD дисплей с аналоговым входом
Отличный дисплей, высокое разрешение. Поставил в машине.

Всего комментариев: 0
Добавить комментарий
Яндекс.Метрика Рейтинг@Mail.ru webmoney attestation Проверка орфографии