Stránka 1 z 1
lcd,string,1 desatine miesto
Napsal: 02 pro 2018, 13:38
od Sperhak
Riešim jednu meteostanicu a narazil som na malý problém,na lcd sa zobrazujú 2 desatine miesta ja by som chcel jedno, a neviem si s tým rady.
Kód: Vybrat vše
int napetiePin = A3;
int napetieRaw;
float napetie;
String napetieVypis;
napetie = (napetieRaw * (5.0 / 1023) * ((100000 + 33000) / 33000)) + 0, 7;
napetieRaw = analogRead(napetiePin);
if (napetie >= 10) {
napetieVypis = napetie;
}
else {
napetieVypis = "ERR";
lcd.print(napetieVypis);
}
Ked dám namiesto float napetie; int napetie; tak sa zas nezobrazuju ziadne desatine miesta
Ked napíšem lcd.print(napetieVypis, 1); tak to nezoberie lebo je to string.
Re: lcd,string,1 desatine miesto
Napsal: 02 pro 2018, 14:47
od martinius96
Však chceš vypisovať string. Vypisuješ ERR.
S číslom to nemá nič spoločné.
Kód: Vybrat vše
if (napetie >= 10) { //ak je napätie viac, alebo rovne 10, priraď premennej napetievypis hodnotu napetie
napetieVypis = napetie;
//ziaden vypis
}
else {//inak, prirad premennej napetieVypis string ERR
napetieVypis = "ERR";
lcd.print(napetieVypis); //vypis tento string
}
Myslím, že problém nebude v programe ako takom, keďže vypisuješ text a nie číslo.
preto si výpis urob takto:
Kód: Vybrat vše
if (napetie >= 10) { //ak je napätie viac, alebo rovne 10, priraď premennej napetievypis hodnotu napetie
lcd.print(napetie, 1); //vypis float s jednym desatinnym miestom
}
else {//inak, prirad premennej napetieVypis string ERR
napetieVypis = "ERR";
lcd.print(napetieVypis); //vypis tento string
}
Re: lcd,string,1 desatine miesto
Napsal: 02 pro 2018, 16:26
od Sperhak
Ano lenže to by bolo komplikovanejšie kedže sa to posiela aj na server a ešte cez 433Mhz modul musel by som to tam dať 3x pre každú vec zvlášť.Ono ten string vypíše načítané číslo ale v tvare napr 10,44 a ja by som chcel 10,4 .Chcel by som tú premennú String napetieVypis aby raz obsahovala ERR a raz napr 11.5 a nie 11.58
Teraz som si všimol že som to sem zle prepísal ušla mi jedna zátvorka možno to Vás zmýlilo.
Kód: Vybrat vše
int napetiePin = A3;
int napetieRaw;
float napetie;
String napetieVypis;
napetie = (napetieRaw * (5.0 / 1023) * ((100000 + 33000) / 33000)) + 0, 7;
napetieRaw = analogRead(napetiePin);
if (napetie >= 10) {
napetieVypis = napetie;
}
else {
napetieVypis = "ERR";
}
lcd.print(napetieVypis);
Re: lcd,string,1 desatine miesto
Napsal: 02 pro 2018, 17:46
od martinius96
Tak by to šlo asi takto, nemám tu Arduino aby som to vykúšal..
Kód: Vybrat vše
int napetiePin = A3;
int napetieRaw;
float napetie;
String napetieVypis;
napetie = (napetieRaw * (5.0 / 1023) * ((100000 + 33000) / 33000)) + 0, 7;
napetieRaw = analogRead(napetiePin);
if (napetie >= 10) {
napetieVypis = (napetie,1);
}
else {
napetieVypis = "ERR";
}
lcd.print(napetieVypis);
Re: lcd,string,1 desatine miesto
Napsal: 02 pro 2018, 18:08
od Sperhak
Nie nefunguje.Stále sú 2 desatine miesta.
Re: lcd,string,1 desatine miesto
Napsal: 08 pro 2018, 00:33
od rejze69
Ahoj.
Pokud můžu něco doporučit, projdi si formátování pomocí snprintf. Tím si můžeš naformátovat přesně co potřebuješ.