Zobrazení dat ze sériového monitoru i na lcd

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
daggo
Příspěvky: 6
Registrován: 17 úno 2025, 12:21

Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od daggo » 17 úno 2025, 12:39

Dobrý den, chtěl bych vás poprosit o pomoc. S modulem DCF77 jsem na základě návodu ze stránky: https://navody.dratek.cz/navody-k-produ ... -dcf1.html "zprovoznil" hodiny. Nedaří se mi zprovoznit zobrazování údajů ze sériového monitoru (datum a čas) na LCD I2C 16x2. Zkoušel jsem to i přes chatGPT, bez výsledku. Děkuji předem za pomoc.
Doplňuji: knihovnu LiquidCrystal_I2C mám nainstalovanou, kód, kde se "objevuje" lcd... jsem doplnil já. Když modul chytne signál, na LCD svítí datum: a cas: Ale jak dostat datum a čas do kódu lcd.print, nevím.

Kód: Vybrat vše

// Přesný čas z Německa DCF1

// připojení potřebné knihovny
#include <dcf77.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
// nastavení čísla vstupního pinu
const uint8_t dcf1VstupPin = 3;
// nastavení čísla monitorovací LED diody
const uint8_t dcf1LedPin = 13;
// nastavení časové zóny oproti CEST (Středoevropský letní čas)
const int8_t CasovaZona = 0;
// podprogram pro výpočet počtu dnů v měsíci
uint8_t pocetDnuMesic(const Clock::time_t &aktualniCas) {
  switch (aktualniCas.month.val) {
    case 0x02:
      return 28 + ((aktualniCas.year.val != 0) && ((bcd_to_int(aktualniCas.year) & 0x03) == 0)? 1: 0);
    case 0x01: case 0x03: case 0x05: case 0x07: case 0x08: case 0x10: case 0x12: return 31;
    case 0x04: case 0x06: case 0x09: case 0x11: return 30;
    default: return 0;
  }
}
// podprogram pro úpravu načtených dat do čitelného tvaru
// se započítáním odchylky nastavené časové zóny
void upravaDat(Clock::time_t &time, const int8_t offset) {
  int8_t hour = BCD::bcd_to_int(time.hour) + offset;
  if (hour > 23) {
    hour -= 24;
    uint8_t day = BCD::bcd_to_int(time.day) + 1;
    if (day > pocetDnuMesic(time)) {
      day = 1;
      uint8_t month = BCD::bcd_to_int(time.month);
      ++month;
      if (month > 12) {
        month = 1;
        uint8_t year = BCD::bcd_to_int(time.year);
        ++year;
        if (year > 99) {
          year = 0;
        }
        time.year = BCD::int_to_bcd(year);
      }
      time.month = BCD::int_to_bcd(month);
    }
    time.day = BCD::int_to_bcd(day);
  }
  if (hour < 0) {
    hour += 24;
    uint8_t day = BCD::bcd_to_int(time.day) - 1;
    if (day < 1) {
      uint8_t month = BCD::bcd_to_int(time.month);
      --month;
      if (month < 1) {
        month = 12;
        int8_t year = BCD::bcd_to_int(time.year);
        --year;
        if (year < 0) {
            year = 99;
        }
        time.year = BCD::int_to_bcd(year);
      }
      time.month = BCD::int_to_bcd(month);
      day = pocetDnuMesic(time);
    }
    time.day = BCD::int_to_bcd(day);
  }
  time.hour = BCD::int_to_bcd(hour);
}
// podprogram pro načtení vstupních dat a ovládání indikační LED diody
uint8_t nacteniVstupDat() {
  const uint8_t nactenaData = digitalRead(dcf1VstupPin);
  digitalWrite(dcf1LedPin, nactenaData);
  return nactenaData;
}
// podprogram pro vytištění výsledku ve správném tvaru
void upravenyTisk(BCD::bcd_t n) {
    Serial.print(n.digit.hi);
    Serial.print(n.digit.lo);
}

void setup() {
  // zahájení komunikace po sériové lince
  Serial.begin(9600);
  Serial.println("Inicializace...");
  // nastavení vstupního pinu jako vstup a LED diody jako výstup
  pinMode(dcf1VstupPin, INPUT_PULLUP);
  pinMode(dcf1LedPin, OUTPUT);
  // inicializace LCD
  lcd.init();
  lcd.backlight();

  lcd.setCursor(0, 0);
  lcd.print("nacitani dat");
  lcd.setCursor(0, 1);
  lcd.print("z modulu dcf77");
  
  // nastavení komunikace s modulem DCF1
  DCF77_Clock::setup();
  DCF77_Clock::set_input_provider(nacteniVstupDat);
  // vyčkávací smyčka, v které čekáme na získání dat z DCF vysílače,
  // při dobrém signálu trvá navázání obvykle 2-5 minut,
  // při špatném signálu může trvat až 30 minut
  for (uint8_t state = Clock::useless;
    state == Clock::useless || state == Clock::dirty;
    state = DCF77_Clock::get_clock_state()) {
    Clock::time_t aktualniCas;
    DCF77_Clock::get_current_time(aktualniCas);
    static uint8_t count = 0;
    // každou vteřinu vytiskneme jednu tečku
    Serial.print('.');
    ++count;
    // po 60 tečkách odřádkujeme
    if (count == 60) {
      count = 0;
      Serial.println();
    }
  }
  Serial.println();
  Serial.println("Navazano spojeni s DCF vysilacem.");
}

void loop() {
  // vytvoření proměnné pro uložení času
  Clock::time_t aktualniCas;
  // načtení času pomocí modulu DCF1 s následnou úpravou
  // v podprogramu upravaDat
  DCF77_Clock::get_current_time(aktualniCas);
  upravaDat(aktualniCas, CasovaZona);
  // pokud má načtený měsíc hodnotu větší než 0,
  // zkontrolujeme stav načtených dat
  if (aktualniCas.month.val > 0) {
    // zjištění stavu načtených dat a vytištění informace
    switch (DCF77_Clock::get_clock_state()) {
      case Clock::useless: Serial.print("Nepouzitelna data  : "); break;
      case Clock::dirty:   Serial.print("Zarusena data      : "); break;
      case Clock::synced:  Serial.print("Synchronizovan cas : "); break;
      case Clock::locked:  Serial.print("Blokovana data, cas: "); break;
    }
    // vytištění všech načtených dat po sériové lince
    Serial.print("20");
    upravenyTisk(aktualniCas.year);
    Serial.print('-');
    upravenyTisk(aktualniCas.month);
    Serial.print('-');
    upravenyTisk(aktualniCas.day);
    Serial.print(' ');

    upravenyTisk(aktualniCas.hour);
    Serial.print(':');
    upravenyTisk(aktualniCas.minute);
    Serial.print(':');
    upravenyTisk(aktualniCas.second);
    // načtení informací o časové zóně a vytištění informace
    // o posunu vůči UTC (Koordinovaný světový čas)
    const int8_t posunOdUTC = CasovaZona + (aktualniCas.uses_summertime? 2: 1);
    Serial.print(" UTC");
    Serial.print(posunOdUTC<0? '-':'+');
    if (abs(posunOdUTC) < 10) {
      Serial.print('0');
    }
    Serial.println(abs(posunOdUTC));
    
    
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("datum: ");
    lcd.setCursor(0, 1);
    lcd.print("cas: ");
  }
}

daggo
Příspěvky: 6
Registrován: 17 úno 2025, 12:21

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od daggo » 17 úno 2025, 15:32

V příkladech nemám žádný s výstupem na LCD, jen na sériový monitor.

Uživatelský avatar
kiRRow
Příspěvky: 1313
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od kiRRow » 17 úno 2025, 15:34

Co provede tohle ?

Kód: Vybrat vše

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("datum: ");
    lcd.print(aktualniCas.day);
    lcd.print(".");
    lcd.print(aktualniCas.month);
    lcd.print(".");
    lcd.print(aktualniCas.year);

    lcd.setCursor(0, 1);
    lcd.print("cas: ");
    lcd.print(aktualniCas.hour);
    lcd.print(":");
    lcd.print(aktualniCas.minute);
    lcd.print(":");
    lcd.print(aktualniCas.second);

daggo
Příspěvky: 6
Registrován: 17 úno 2025, 12:21

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od daggo » 17 úno 2025, 18:17

Díky za tip, žel program se nenahraje- viz chybové hlášky. Jelikož s ardu začínám, tak nevím jak ty chyby odstranit.

Kód: Vybrat vše

Arduino: 1.8.19 (Linux), Vývojová deska: "Arduino Uno"

/home/user/Arduino/dratek_14-02-3/dratek_14-02-3.ino: In function ‘void loop()’:
dratek_14-02-3:197:30: error: no matching function for call to ‘LiquidCrystal_I2C::print(BCD::bcd_t&)’
     lcd.print(aktualniCas.day);
                              ^
In file included from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Stream.h:26:0,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.h:29,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:233,
Byly nalezené násobné knihovny "dcf77.h"
 Použitý: /home/user/Arduino/libraries/dcf77
                 from sketch/dratek_14-02-3.ino.cpp:1:
 Nepoužitý: /home/user/Arduino/libraries/dcf77_xtal
Byly nalezené násobné knihovny "LiquidCrystal_I2C.h"
 Použitý: /home/user/Arduino/libraries/LiquidCrystal_I2C
 Nepoužitý: /home/user/Arduino/libraries/LiquidCrystal_I2C-master
Byly nalezené násobné knihovny "TimeLib.h"
 Použitý: /home/user/Arduino/libraries/Time-master
 Nepoužitý: /home/user/Arduino/libraries/Time
 Nepoužitý: /home/user/Arduino/libraries/Time
 Nepoužitý: /home/user/Arduino/libraries/Time
 Nepoužitý: /home/user/Arduino/libraries/Time
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note: candidate: size_t Print::print(const __FlashStringHelper*)
     size_t print(const __FlashStringHelper *);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const __FlashStringHelper*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note: candidate: size_t Print::print(const String&)
     size_t print(const String &);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const String&’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note: candidate: size_t Print::print(const char*)
     size_t print(const char[]);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const char*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note: candidate: size_t Print::print(char)
     size_t print(char);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note: candidate: size_t Print::print(unsigned char, int)
     size_t print(unsigned char, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note: candidate: size_t Print::print(int, int)
     size_t print(int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note: candidate: size_t Print::print(unsigned int, int)
     size_t print(unsigned int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note: candidate: size_t Print::print(long int, int)
     size_t print(long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note: candidate: size_t Print::print(long unsigned int, int)
     size_t print(unsigned long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note: candidate: size_t Print::print(double, int)
     size_t print(double, int = 2);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘double’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note: candidate: size_t Print::print(const Printable&)
     size_t print(const Printable&);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const Printable&’
dratek_14-02-3:199:32: error: no matching function for call to ‘LiquidCrystal_I2C::print(BCD::bcd_t&)’
     lcd.print(aktualniCas.month);
                                ^
In file included from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Stream.h:26:0,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.h:29,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:233,
                 from sketch/dratek_14-02-3.ino.cpp:1:
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note: candidate: size_t Print::print(const __FlashStringHelper*)
     size_t print(const __FlashStringHelper *);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const __FlashStringHelper*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note: candidate: size_t Print::print(const String&)
     size_t print(const String &);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const String&’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note: candidate: size_t Print::print(const char*)
     size_t print(const char[]);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const char*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note: candidate: size_t Print::print(char)
     size_t print(char);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note: candidate: size_t Print::print(unsigned char, int)
     size_t print(unsigned char, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note: candidate: size_t Print::print(int, int)
     size_t print(int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note: candidate: size_t Print::print(unsigned int, int)
     size_t print(unsigned int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note: candidate: size_t Print::print(long int, int)
     size_t print(long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note: candidate: size_t Print::print(long unsigned int, int)
     size_t print(unsigned long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note: candidate: size_t Print::print(double, int)
     size_t print(double, int = 2);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘double’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note: candidate: size_t Print::print(const Printable&)
     size_t print(const Printable&);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const Printable&’
dratek_14-02-3:201:31: error: no matching function for call to ‘LiquidCrystal_I2C::print(BCD::bcd_t&)’
     lcd.print(aktualniCas.year);
                               ^
In file included from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Stream.h:26:0,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.h:29,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:233,
                 from sketch/dratek_14-02-3.ino.cpp:1:
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note: candidate: size_t Print::print(const __FlashStringHelper*)
     size_t print(const __FlashStringHelper *);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const __FlashStringHelper*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note: candidate: size_t Print::print(const String&)
     size_t print(const String &);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const String&’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note: candidate: size_t Print::print(const char*)
     size_t print(const char[]);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const char*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note: candidate: size_t Print::print(char)
     size_t print(char);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note: candidate: size_t Print::print(unsigned char, int)
     size_t print(unsigned char, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note: candidate: size_t Print::print(int, int)
     size_t print(int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note: candidate: size_t Print::print(unsigned int, int)
     size_t print(unsigned int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note: candidate: size_t Print::print(long int, int)
     size_t print(long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note: candidate: size_t Print::print(long unsigned int, int)
     size_t print(unsigned long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note: candidate: size_t Print::print(double, int)
     size_t print(double, int = 2);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘double’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note: candidate: size_t Print::print(const Printable&)
     size_t print(const Printable&);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const Printable&’
dratek_14-02-3:205:31: error: no matching function for call to ‘LiquidCrystal_I2C::print(BCD::bcd_t&)’
     lcd.print(aktualniCas.hour);
                               ^
In file included from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Stream.h:26:0,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.h:29,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:233,
                 from sketch/dratek_14-02-3.ino.cpp:1:
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note: candidate: size_t Print::print(const __FlashStringHelper*)
     size_t print(const __FlashStringHelper *);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const __FlashStringHelper*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note: candidate: size_t Print::print(const String&)
     size_t print(const String &);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const String&’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note: candidate: size_t Print::print(const char*)
     size_t print(const char[]);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const char*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note: candidate: size_t Print::print(char)
     size_t print(char);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note: candidate: size_t Print::print(unsigned char, int)
     size_t print(unsigned char, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note: candidate: size_t Print::print(int, int)
     size_t print(int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note: candidate: size_t Print::print(unsigned int, int)
     size_t print(unsigned int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note: candidate: size_t Print::print(long int, int)
     size_t print(long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note: candidate: size_t Print::print(long unsigned int, int)
     size_t print(unsigned long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note: candidate: size_t Print::print(double, int)
     size_t print(double, int = 2);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘double’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note: candidate: size_t Print::print(const Printable&)
     size_t print(const Printable&);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const Printable&’
dratek_14-02-3:207:33: error: no matching function for call to ‘LiquidCrystal_I2C::print(BCD::bcd_t&)’
     lcd.print(aktualniCas.minute);
                                 ^
In file included from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Stream.h:26:0,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.h:29,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:233,
                 from sketch/dratek_14-02-3.ino.cpp:1:
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note: candidate: size_t Print::print(const __FlashStringHelper*)
     size_t print(const __FlashStringHelper *);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const __FlashStringHelper*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note: candidate: size_t Print::print(const String&)
     size_t print(const String &);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const String&’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note: candidate: size_t Print::print(const char*)
     size_t print(const char[]);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const char*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note: candidate: size_t Print::print(char)
     size_t print(char);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note: candidate: size_t Print::print(unsigned char, int)
     size_t print(unsigned char, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note: candidate: size_t Print::print(int, int)
     size_t print(int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note: candidate: size_t Print::print(unsigned int, int)
     size_t print(unsigned int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note: candidate: size_t Print::print(long int, int)
     size_t print(long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note: candidate: size_t Print::print(long unsigned int, int)
     size_t print(unsigned long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note: candidate: size_t Print::print(double, int)
     size_t print(double, int = 2);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘double’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note: candidate: size_t Print::print(const Printable&)
     size_t print(const Printable&);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const Printable&’
dratek_14-02-3:209:33: error: no matching function for call to ‘LiquidCrystal_I2C::print(BCD::bcd_t&)’
     lcd.print(aktualniCas.second);
                                 ^
In file included from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Stream.h:26:0,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/HardwareSerial.h:29,
                 from /usr/share/arduino/hardware/arduino/avr/cores/arduino/Arduino.h:233,
                 from sketch/dratek_14-02-3.ino.cpp:1:
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note: candidate: size_t Print::print(const __FlashStringHelper*)
     size_t print(const __FlashStringHelper *);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:65:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const __FlashStringHelper*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note: candidate: size_t Print::print(const String&)
     size_t print(const String &);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:66:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const String&’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note: candidate: size_t Print::print(const char*)
     size_t print(const char[]);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:67:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const char*’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note: candidate: size_t Print::print(char)
     size_t print(char);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:68:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note: candidate: size_t Print::print(unsigned char, int)
     size_t print(unsigned char, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:69:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned char’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note: candidate: size_t Print::print(int, int)
     size_t print(int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:70:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note: candidate: size_t Print::print(unsigned int, int)
     size_t print(unsigned int, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:71:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note: candidate: size_t Print::print(long int, int)
     size_t print(long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:72:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note: candidate: size_t Print::print(long unsigned int, int)
     size_t print(unsigned long, int = DEC);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:73:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘long unsigned int’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note: candidate: size_t Print::print(double, int)
     size_t print(double, int = 2);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:74:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘double’
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note: candidate: size_t Print::print(const Printable&)
     size_t print(const Printable&);
            ^~~~~
/usr/share/arduino/hardware/arduino/avr/cores/arduino/Print.h:75:12: note:   no known conversion for argument 1 from ‘BCD::bcd_t’ to ‘const Printable&’
exit status 1
no matching function for call to ‘LiquidCrystal_I2C::print(BCD::bcd_t&)’


Táto zpráva by měla mít víc informacií v
"Zobrazení podrobného výstupu při kompilaci"
podle zapnuté volby v Soubor -> Nastavení.


Uživatelský avatar
gilhad
Příspěvky: 849
Registrován: 07 bře 2018, 11:22

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od gilhad » 17 úno 2025, 23:59

Asi by to mohlo opravit prevedeni těch hodnot na normalní čísla podle tohoto vzoru

BCD::bcd_to_int(time.month);

tedy

lcd.print(aktualniCas.day);

na

lcd.print(BCD::bcd_to_int(aktualniCas.day));

a tak podobně

daggo
Příspěvky: 6
Registrován: 17 úno 2025, 12:21

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od daggo » 18 úno 2025, 08:44

gilhad píše:
17 úno 2025, 23:59
Asi by to mohlo opravit prevedeni těch hodnot na normalní čísla podle tohoto vzoru

BCD::bcd_to_int(time.month);

tedy

lcd.print(aktualniCas.day);

na

lcd.print(BCD::bcd_to_int(aktualniCas.day));

a tak podobně
Děkuji ti za tip, LCD je funkční. Kód jsem upravil - viz níže. Ještě poladím zobrazení celého roku (2025), zobrazuje se jen 25.
Ještě jednou ti moc děkuji.

Kód: Vybrat vše

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("cas: ");
lcd.print(BCD::bcd_to_int(aktualniCas.hour));
lcd.print(":");
lcd.print(BCD::bcd_to_int(aktualniCas.minute));
lcd.print(":");
lcd.print(BCD::bcd_to_int(aktualniCas.second));

lcd.setCursor(0, 1);
lcd.print("datum: ");
lcd.print(BCD::bcd_to_int(aktualniCas.day));
lcd.print(".");
lcd.print(BCD::bcd_to_int(aktualniCas.month));
lcd.print(".");
lcd.print(BCD::bcd_to_int(aktualniCas.year));

 
delay(1000);  // Aktualizace každou sekundu

daggo
Příspěvky: 6
Registrován: 17 úno 2025, 12:21

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od daggo » 18 úno 2025, 11:21

Ještě bych poprosil o pomoc. Nadefinoval jsem, od jakého místa na LCD se bude zobrazovat čas i datum. Z estetického hlediska bych byl rád, kdyby se čísla u času zobrazovala ve tvaru hh:mm:ss a datumu dd.mm (rok už mám vyřešenej). Na sériové lince to je v pořádku.
Zkoušel jsem to podmínkama (if), co jsem ponacházel různě na netu, bezúspěšně.
Ještě doplňuji, že je toto můj první rozumný projekt v arduinu. Blikání LEDkama mě už omrzelo :-))

Kód: Vybrat vše

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("cas:");
lcd.setCursor(6, 0);
lcd.print(BCD::bcd_to_int(aktualniCas.hour));
lcd.print(":");
lcd.print(BCD::bcd_to_int(aktualniCas.minute));
lcd.print(":");
lcd.print(BCD::bcd_to_int(aktualniCas.second));

lcd.setCursor(0, 1);
lcd.print("datum:");
lcd.setCursor(6, 1);
lcd.print(BCD::bcd_to_int(aktualniCas.day));
lcd.print(".");
lcd.print(BCD::bcd_to_int(aktualniCas.month));
lcd.print(".");
lcd.print("20");
lcd.print(BCD::bcd_to_int(aktualniCas.year));

delay(1000);  // Aktualizace každou sekundu


AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od AstroMiK » 18 úno 2025, 15:43

Kód: Vybrat vše

...

lcd.setCursor(6, 0);
if (BCD::bcd_to_int(aktualniCas.hour) < 10)       lcd.print('0');      // kratke hodiny se doplni nulou
lcd.print(BCD::bcd_to_int(aktualniCas.hour));
lcd.print(":");
if (BCD::bcd_to_int(aktualniCas.minute) < 10)     lcd.print('0');      // kratke minuty se doplni nulou
lcd.print(BCD::bcd_to_int(aktualniCas.minute));
lcd.print(":");
if (BCD::bcd_to_int(aktualniCas.second) < 10)     lcd.print('0');      // kratke sekundy se doplni nulou
lcd.print(BCD::bcd_to_int(aktualniCas.second));

lcd.setCursor(0, 1);
lcd.print("datum:");
lcd.setCursor(6, 1);
if (BCD::bcd_to_int(aktualniCas.day) < 10)        lcd.print(' ');      // pred kratky den se misto nuly muze tisknout treba mezera  
lcd.print(BCD::bcd_to_int(aktualniCas.day));
lcd.print(".");
if (BCD::bcd_to_int(aktualniCas.month) < 10)      lcd.print(' ');      // pred kratky mesic se misto nuly muze tisknout treba mezera  
lcd.print(BCD::bcd_to_int(aktualniCas.month));

...



Uživatelský avatar
Diego
Příspěvky: 208
Registrován: 23 črc 2017, 09:43
Kontaktovat uživatele:

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od Diego » 19 úno 2025, 04:43

daggo píše:
18 úno 2025, 11:21
Ještě bych poprosil o pomoc. Nadefinoval jsem, od jakého místa na LCD se bude zobrazovat čas i datum. Z estetického hlediska bych byl rád, kdyby se čísla u času zobrazovala ve tvaru hh:mm:ss a datumu dd.mm (rok už mám vyřešenej). Na sériové lince to je v pořádku.
Zkoušel jsem to podmínkama (if), co jsem ponacházel různě na netu, bezúspěšně.
Ještě doplňuji, že je toto můj první rozumný projekt v arduinu. Blikání LEDkama mě už omrzelo :-))

Kód: Vybrat vše

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("cas:");
lcd.setCursor(6, 0);
lcd.print(BCD::bcd_to_int(aktualniCas.hour));
lcd.print(":");
lcd.print(BCD::bcd_to_int(aktualniCas.minute));
lcd.print(":");
lcd.print(BCD::bcd_to_int(aktualniCas.second));

lcd.setCursor(0, 1);
lcd.print("datum:");
lcd.setCursor(6, 1);
lcd.print(BCD::bcd_to_int(aktualniCas.day));
lcd.print(".");
lcd.print(BCD::bcd_to_int(aktualniCas.month));
lcd.print(".");
lcd.print("20");
lcd.print(BCD::bcd_to_int(aktualniCas.year));

delay(1000);  // Aktualizace každou sekundu

Ahoj, zrovna na takovíhle doladění funkčního kódu používam AI nejvíc a de jí to nejlíp. Hodíš kus kódu řekneš co chceš přidat a přidá. Celkové programování zvládá taky ale chce to postupně a věci si dodělávat sám.
Ať se daří ;)
https://arze.cz - ARduino Zapojení Elektronika
https://hackaday.io/projects/hacker/1326779 - Moje probíhající i dokončené projekty

daggo
Příspěvky: 6
Registrován: 17 úno 2025, 12:21

Re: Zobrazení dat ze sériového monitoru i na lcd

Příspěvek od daggo » 19 úno 2025, 10:29

Zdravím, a děkuju za funkční radu od AstroMiKa (zkusmo jsem to pak zkusil i přes ChatGPT a dostal jsem stejný výsledek).
Ještě jednou děkuji všem, kteří mi pomohli. Mějte pěkné dny.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host