zobrazení teploty na LCD s přesností na desetiny °C

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, ...)
ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: zobrazení teploty na LCD s přesností na desetiny °C

Příspěvek od ondraN » 13 dub 2021, 15:20

nosac píše:
13 dub 2021, 14:41

Vědomě jsem žádné makro nevytvořil, leda že by bylo někde v použité knihovně. Zkusil jsem použít "and" a ono v Arduinu IDE zezelenalo jako by to nebyl pouze text. Testoval jsem to před chvíli i v jednoduchém kódu s blikáním LEDkou, taky funguje.
U displeje vím že pozice teploty skáče, když se posune hodnota z 9na10 nebo 99na100 nebo pod nulu o znak -
To makro je asi někde vytvořené, ale pokud nevíš přesně jaké je, tak doporučuji používat klasiku. Nebo když odstraníš to něco, kde je makro vytvořené, tak to najednou nepůjde zkompilovat.
Posun z menšího na větší je v pohodě, ale při posunu z většího na menší, ti tam pár znaků zůstane, takže pokud bude jedno měření 10.1 a druhé 9.8 tak tam uvidíš 9.81, protože ten poslední znak z předchozího údaje nebyl smazaný (nahrazený mezerou).

nosac
Příspěvky: 11
Registrován: 06 lis 2019, 10:31
Reputation: 0

Re: zobrazení teploty na LCD s přesností na desetiny °C

Příspěvek od nosac » 13 dub 2021, 15:46

Ale nevím kde. Tady je napsaný kod na kterem jsem zkoušel "AND"

Kód: Vybrat vše

const int ledPin =  LED_BUILTIN;


int ledState = LOW;             
int start = 0;  // když ho nechám v 0, tak LED bliká a když nastavím na 1, tak nebliká


unsigned long previousMillis = 0;       

// constants won't change:
const long interval = 1000;           

void setup() {
  
  pinMode(ledPin, OUTPUT);
}

void loop() {
  
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    
    previousMillis = currentMillis;

    
    if (ledState == LOW and start == 0) {  // tady jsem použil and
      ledState = HIGH;
    } else {
      ledState = LOW;
    }
    
    digitalWrite(ledPin, ledState);
  }
}
Jo toho zůstávání znaků jsem si ze začátku všiml když jsem zrušil

Kód: Vybrat vše

lcd.clear();
Proto jsem to ošetřil mezerou za písmenem C

Kód: Vybrat vše

 lcd.print("C ");

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: zobrazení teploty na LCD s přesností na desetiny °C

Příspěvek od pavel1tu » 13 dub 2021, 16:18

nevím jestli to bude fungovat s "and", tedy netušil jsem že to jde, dle mne to kdysi nešlo ...
žiji v domění, že jedině takto
https://www.arduino.cc/reference/en/lan ... ogicaland/
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

TabHornby
Příspěvky: 5
Registrován: 12 led 2022, 03:22
Reputation: 0

Re: zobrazení teploty na LCD s přesností na desetiny °C

Příspěvek od TabHornby » 12 led 2022, 09:00

Pokud myslíš formátovaný výstup pomocí funkce sprintf a placeholderů a formátovacích znaků, tak to je většinou pro začátečníky dost těžko stravitelné, zabere to spoustu paměti a jednoduchý výstup to stejně moc nezjednoduší.


_________________
fjallraven kanken

Odpovědět

Kdo je online

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