Stránka 1 z 1

nastavení proměnné - chyba ,, no matching..."

Napsal: 17 dub 2019, 00:57
od BB Scary
Ahoj. Chtěl bych si udělat malý teploměr, který by mi vypisoval hodnoty na displeji.
deska: Arduino Uno - klon
senzory teploty: AM2120
displej: OLED 0,91" 128 x 32 I2C

Kód mám tento:

Kód: Vybrat vše

#include "DHT.h"
#define pinDHT1 7
#define pinDHT2 12
DHT dht1(pinDHT1, DHT22);
DHT dht2(pinDHT2, DHT22);

#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);

void setup(void) {
  u8g2.begin();
  dht1.begin();
  dht2.begin();
}

void loop(void) {
  float venku = dht1.readTemperature();
  float doma = dht2.readTemperature();
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB08_tr);
  u8g2.drawStr(0, 10, "Venku -->   ");
  u8g2.drawStr(60, 10, venku);
  u8g2.drawStr(0, 30, "Doma: -->   ");
  u8g2.drawStr(60, 30, doma);
  u8g2.sendBuffer();
  delay(1000);
}
Ten displej normálně vypíše ,,Venku -->" a taky ,,Doma -->", ale když pak chcu za to dosadit číslo a použít proměnnou venku nebo doma tak napíše chybu no matching function for call to 'U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C::drawStr(int, int, float&)'

Poradíte mi prosím jak vytvořit proměnnou ze senzorů a pak ji použít pro výpis na displeji?

Re: nastavení proměnné - chyba ,, no matching..."

Napsal: 17 dub 2019, 08:07
od pavel1tu
"u8g2.drawStr" - Description: Draw a string. (Vypisuje pouze STRING)

Pomůže ?

Co vyzkoušet u8g2.print ? Koukni se na reference.
https://github.com/olikraus/u8g2/wiki/u ... ence#print

PS: Ještě technická poznámka - mimo dotaz. Některé fonty dost žerou paměť, tak pokud chceš třeba čísla/proměnné vypisovat jiným fontem, vyber si ten co má jen čísla - ušetříš paměť
https://github.com/olikraus/u8g2/wiki/fntgrpx11

Re: nastavení proměnné - chyba ,, no matching..."

Napsal: 17 dub 2019, 18:46
od BB Scary
děkuji pomohlo. já jsem zkoušel print a nešlo to protože jsem psal např print(10, 20, cislo;) nebo u8g2.pront(10, 20, cislo); ale podle toho odkazu jsem zjistil že se ty souřadnice nastavují zvlášť. Takže pomohlo toto:
u8g2.setCursor(10, 20);
u8g2.print("cislo");