Pevná pozice dlouhého čísla
Pevná pozice dlouhého čísla
Zdravám,
poraďte mi, jak mohu zobrazite číslo (např. frekvenci) tak, aby se zarovnala zprava.
To znamená, že potřebuju zobrazit třeba 50 Hz a nebo 5600000 Hz, ale tak,
že to Hz musí být na stejném místě a čísla se posunují vlevo. Prázdné nuly vlevo nejsou.
díky
poraďte mi, jak mohu zobrazite číslo (např. frekvenci) tak, aby se zarovnala zprava.
To znamená, že potřebuju zobrazit třeba 50 Hz a nebo 5600000 Hz, ale tak,
že to Hz musí být na stejném místě a čísla se posunují vlevo. Prázdné nuly vlevo nejsou.
díky
Re: Pevná pozice dlouhého čísla
Pardon, zapomněl jsem, že se jedná o LCD display.
Re: Pevná pozice dlouhého čísla
Převeď si číslo na textový řetězec a pak si to múžeš zarovnávat po libosti.
Re: Pevná pozice dlouhého čísla
No to právě se mi zdá, že to je stejné...
na Display LCD 4x16 posílám nejprve pozici a pak číslo... tak nevím
Nevím, jak couvat anebo jak tam poslat třeba 8 čísel na místo, kam patří
na Display LCD 4x16 posílám nejprve pozici a pak číslo... tak nevím

Nevím, jak couvat anebo jak tam poslat třeba 8 čísel na místo, kam patří

Re: Pevná pozice dlouhého čísla
Objednal jsem si 6-Digit 7 Segment LCD Display Module HT1621. Už se těším, až ho vyzkouším
.

Re: Pevná pozice dlouhého čísla
Tak sem zkus dát nějaký, co nejjednodušší, příklad, jak to u sebe děláš (s tím, že víme, že se ti to neukáže tak, jak chceš) - a zkusíme ho tu upravit tak, aby to chodilo.
(Použij tag code - to tlačítko </> a dej sem kód, kterým píšeš nějaké číslo na nějakou pozici)
(Použij tag code - to tlačítko </> a dej sem kód, kterým píšeš nějaké číslo na nějakou pozici)
Re: Pevná pozice dlouhého čísla
No... už jsem to nějak trapně vyřešil...
z nějakého programu na webu.
f je frakvence a fq je pořadí čísla.
z nějakého programu na webu.
f je frakvence a fq je pořadí čísla.
Kód: Vybrat vše
unsigned long f;
byte fq[8];
void loop() {
lcdPosition(0,0); LCD.print("Input: ");
fq[6]= f/1000000%10; LCD.print(fq[6]);
LCD.print(" ");
fq[5]= f/100000%10; LCD.print(fq[5]);
fq[4]= f/10000%10; LCD.print(fq[4]);
fq[3]= f/1000%10; LCD.print(fq[3]);
LCD.print(" ");
fq[2]= f/100%10; LCD.print(fq[2]);
fq[1]= f/10%10; LCD.print(fq[1]);
fq[0]= f%10%10; LCD.print(fq[0]);
lcdPosition(0,17); LCD.print("Hz");
}
Re: Pevná pozice dlouhého čísla
Nešlo by to třeba takhle jednoduše:
A nebo použití funkce sprintf(), ale ta zabírá moc paměti.
Kód: Vybrat vše
unsigned long frekvence = 12345;
lcdPosition(0,0); // pozice jednotek MHz
if (frekvence < 1000000UL) lcd.print(' ');
// lcd.print(' '); // pripadny oddelovac MHz a stovek kHz
if (frekvence < 100000UL) lcd.print(' ');
if (frekvence < 10000UL) lcd.print(' ');
if (frekvence < 1000UL) lcd.print(' ');
// lcd.print(' '); // pripadny oddelovac kHz a stovek Hz
if (frekvence < 100UL) lcd.print(' ');
if (frekvence < 10UL) lcd.print(' ');
lcd.print(frekvence);
A nebo použití funkce sprintf(), ale ta zabírá moc paměti.
Re: Pevná pozice dlouhého čísla
Omlouvám se, až teď jsem si to vyzkoušel.
Ty oddělovací mezery samozřejmě v tom mém příkladu fungovat nemůžou.
Ten příklad jen doplňuje mezery před číslo na správný počet míst.
Celé číslo se pak printuje najednou bez oddělovačů tím posledním příkazem.
Tady je upravený příklad s tou funkcí sprintf().
Testoval jsem to jen v sériovém terminálu, ale na dispelji by to mělo fungovat taky.
Výstup při zadávání různých čísel:
Ty oddělovací mezery samozřejmě v tom mém příkladu fungovat nemůžou.
Ten příklad jen doplňuje mezery před číslo na správný počet míst.
Celé číslo se pak printuje najednou bez oddělovačů tím posledním příkazem.
Tady je upravený příklad s tou funkcí sprintf().
Testoval jsem to jen v sériovém terminálu, ale na dispelji by to mělo fungovat taky.
Kód: Vybrat vše
unsigned long frekvence;
char vystupni_retezec[10];
void setup(void)
{
Serial.begin(9600);
}
void loop(void)
{
if (Serial.available())
{
frekvence = Serial.parseInt();
Serial.print("Frekvence=");
sprintf(vystupni_retezec, "%7lu", frekvence); // maximalne 7 mist (9 999 999 Hz)
// lu = unsigned long
// rozlozeni na trojice cisel s oddelovacimi mezerami
Serial.print(vystupni_retezec[0]);
Serial.print(' ');
Serial.print(vystupni_retezec[1]);
Serial.print(vystupni_retezec[2]);
Serial.print(vystupni_retezec[3]);
Serial.print(' ');
Serial.print(vystupni_retezec[4]);
Serial.print(vystupni_retezec[5]);
Serial.println(vystupni_retezec[6]);
}
}
Výstup při zadávání různých čísel:
Kód: Vybrat vše
Frekvence= 0
Frekvence= 8
Frekvence= 12
Frekvence= 123
Frekvence= 1 234
Frekvence= 12 345
Frekvence= 123 456
Frekvence=1 234 567
Frekvence=9 999 999
Re: Pevná pozice dlouhého čísla
To se mi líbí
díky...

Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti