Отображение переменной (из короткого замыкания FSR 400) на экране OLED с использованием arduino - PullRequest
0 голосов
/ 17 марта 2019

Я работаю над школьным проектом с использованием Arduino UNO и короткой FSR 400, чтобы получить лекцию в граммах, которая должна отображаться на экране OLED 128x32, когда FSR сжимается. Пока этот код дает мне нужную лекцию в виде «fsrGrams», но мне нужно отобразить эту переменную на OLED-экране, что-то вроде: «200 гр»

#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0); 


int fsrPin = 0;     
int fsrReading;     
int fsrVoltage;     
unsigned long fsrResistance; 
unsigned long fsrConductance; 
long fsrForce;       
 long fsrGrams=0 ;

void setup(void) {
  u8g2.begin();
  Serial.begin(9600);


}

void loop(void) {


  fsrReading = analogRead(fsrPin);  
  Serial.print("Analog reading = ");
  Serial.println(fsrReading);


  fsrVoltage = map(fsrReading, 0, 1023, 0, 5000);
  Serial.print("Lectura de volts en mV = ");
  Serial.println(fsrVoltage);  

  if (fsrVoltage == 0) {
    Serial.println("Sin presión");  
  } else {
    // The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V
    // so FSR = ((Vcc - V) * R) / V        
    fsrResistance = 5000 - fsrVoltage;     
    fsrResistance *= 10000;            
    fsrResistance /= fsrVoltage;
    Serial.print("Resistencia del fsr en ohms = ");
    Serial.println(fsrResistance);

    fsrConductance = 1000000;            
    fsrConductance /= fsrResistance;
    Serial.print("Conductancia en microMhos: ");
    Serial.println(fsrConductance);


    if (fsrConductance <= 1000) {
      fsrForce = fsrConductance / 80;
      Serial.print("Fuerza en Newtons: ");
      Serial.println(fsrForce);  
      fsrGrams = fsrForce*101.97162;         
          Serial.print("Gramos fuerza: ");
          Serial.println(fsrGrams);
    } else {
      fsrForce = fsrConductance - 1000;
      fsrForce /= 30;
      Serial.print("Fuerza en Newtons: ");
      Serial.println(fsrForce);           

delay(200);
    }
  }

 Serial.println("--------------------");
  delay(200);
}

Я довольно новичок в кодировании, есть ли команда, использующая библиотеку u8g или u8g2 для отображения переменной "fsrGrams" на экране OLED ?? Я нашел только такие команды, как:

void loop(void) {

u8g2.clearBuffer();          

u8g2.setFont(u8g2_font_logisoso28_tr);  

u8g2.drawStr(4,29,"HELLO WORLD!");  

u8g2.sendBuffer();         

delay(2000); //displays the text message for 2 seconds 

Но это работает только для отображения текстовых сообщений, а не переменных.

ЭТО ТО, ЧТО Я НАШЕЛ О GREYBEARD ЗАПРОСОВ:

U8g2 - это монохромная графическая библиотека для встроенных устройств (OLED и ЖК-дисплеи)

"drawStr ()" рисует строку. Первый символ помещается в позиции x и y. setFont используется для назначения шрифта перед рисованием строки на дисплее. Чтобы нарисовать символ с кодировкой от 127 до 255, используйте escape-последовательность C / C ++ / Arduino "\ xab" (шестнадцатеричное значение ab) или "\ xyz" (восьмеричное значение xyz). Эта функция не может нарисовать любой глиф с кодировкой, большей или равной 256. Используйте drawUTF8 или drawGlyph для доступа к глифам с кодировкой, большей или равной 256.

C++/Arduino Prototype:

u8g2_uint_t U8g2::drawStr(u8g2_uint_t x, u8g2_uint_t y, const char *s)   


C Prototype:

u8g2_uint_t u8g2_DrawStr(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, const char *s);

Аргументы:

u8g2: A pointer to the u8g2 structure.
x, y: Position of the first character on the display.
s: Text.

Относительно того, что показывает «Serial.println (fsrGrams)»: оно показывает числовое значение, которое постоянно изменяется в зависимости от силы, приложенной к датчику FSR, как: «Грамм сила: 305», мне нужно это числовое значение, которое будет отображаться на OLED как электронная шкала для граммов, показывая только «305 гр», и это все, что мне нужно ... Пожалуйста, помогите ...

...