Arduino programmerings frågor.

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
nifelheim
Den första
Inlägg: 2474
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Arduino programmerings frågor.

Inlägg av nifelheim »

om du skriver ut "hela" displayen, så du skriver över allt gammalt, behöver du inte lcd.clear()

se till att gå igenom koden rad för rad , googla/fråga om det minsta är oklart.

Att någon annan skrivit lite bibliotek som man kan använda är ju bra för det går snabbt och enkelt att skriva program.
För att lära sig är det inte så dumt att kolla vad som händer, du borde ha en motsvarande sökväg på din dator:

E:\arduino\arduino-1.0.5-r2\libraries\LiquidCrystal

Där hittar du till exempel LiquidCrystal.cpp
kolla definitionerna av klassens (lcd) metoder (clear, home, cursor osv)

deklarationen av klassen hittar du i LiquidCrystal.h
Xoffis
Inlägg: 312
Blev medlem: 31 maj 2014, 19:13:37
Ort: Ingelstad
Kontakt:

Re: Arduino programmerings frågor.

Inlägg av Xoffis »

något jag har lärt mig av mitt arduino pillande med LCD är att man aldrig skall använda lcd.clear() då det bara skapar ett flimmer i displayen...

något som däremot funkar väldigt bra är att använda mellanslag...

tillexempel ifall du har texten

"Temp: 120°C Brännare: AV"

Kod: Markera allt

  lcd.setCursor(0,1);
  lcd.print("Temp: ");
  lcd.print(120);
  lcd.print((char)223);
  lcd.print("C");
  lcd.print(" Brännare:");
  lcd.print(" AV");
Men om den ändras till

"Temp: 90°C Brännare: PÅ"

Kod: Markera allt

  lcd.setCursor(0,1);
  lcd.print("Temp: ");
  lcd.print(" 90"); //notera mellanslag
  lcd.print((char)223);
  lcd.print(" Brännare:");
  lcd.print(" AV");
BTW: denna raden

Kod: Markera allt

  lcd.print((char)223);
ger dig gradertecknet på displayen! ;)

Mellanslaget implementerar du med if satser...
Användarvisningsbild
Icecap
Inlägg: 26612
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Arduino programmerings frågor.

Inlägg av Icecap »

Och med lite vett skriver man:
const char* Text_OnOff[] = {"AV", "PÅ"};
char Buffer[20];

sprintf(Buffer, "Temp:%4u\xDF" "C Brännare: %s", Temperature, Text_OnOff[Burner_Status]);
lcd.setCursor(0,1);
lcd.print(Buffer);

Burner_Status är en bit som anger om brännaren kör (1) eller inte (0).
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5973
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Arduino programmerings frågor.

Inlägg av orvar-e »

Xoffis skrev:något jag har lärt mig av mitt arduino pillande med LCD är att man aldrig skall använda lcd.clear() då det bara skapar ett flimmer i displayen...

något som däremot funkar väldigt bra är att använda mellanslag...
Också vad jag tycker mig ha kommit framtill.
Kan man använda lcd.clear i en IF sats?
Om man vill blanka hela skärmen av nån anledning innan. Fast det verkar fortfarande onödigt.
Användarvisningsbild
Icecap
Inlägg: 26612
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Arduino programmerings frågor.

Inlägg av Icecap »

Det är väl bara att räkna på tiden det tar att positionera cursorn och skriva blanksteg över hela displayen kontra en CLS.
Xoffis
Inlägg: 312
Blev medlem: 31 maj 2014, 19:13:37
Ort: Ingelstad
Kontakt:

Re: Arduino programmerings frågor.

Inlägg av Xoffis »

orvar-e skrev:
Xoffis skrev:något jag har lärt mig av mitt arduino pillande med LCD är att man aldrig skall använda lcd.clear() då det bara skapar ett flimmer i displayen...

något som däremot funkar väldigt bra är att använda mellanslag...
Också vad jag tycker mig ha kommit framtill.
Kan man använda lcd.clear i en IF sats?
Om man vill blanka hela skärmen av nån anledning innan. Fast det verkar fortfarande onödigt.
ett bra ställe att ha lcd.clear() är i setup-delen, så displayen nollas om man resettar arduinot (den behåller annars texten sålänge den har ström)
sodjan
EF Sponsor
Inlägg: 43231
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino programmerings frågor.

Inlägg av sodjan »

Lite förvirrat här kring "clear" funktionen i HD44780 displayer. :-)

Clear är en egen unik funktion i HD44780 gränssnittet. Det som
skiljer den från andra är att den tar mycket längre tid att utföra,
kan ta flera ms, medan en skrivning av ett tecken tar några
tiotal us. Så det kan vara snabbare att skriva blanktecken.

D.v.s att jag antar/utgår från att lcd.clear() använder clear
funktionen i HD44780, men den måste inte göra det rent tekniskt.

> då det bara skapar ett flimmer i displayen...

Det är bara om man gör det "onödigt" ofta.

> Kan man använda lcd.clear i en IF sats?

Varför inte?
Du kan väl använda vilken Arduino kod som helst var som helst?
Varför skulle det inte gå? D.v.s varför frågar du just det? :-)

> Fast det verkar fortfarande onödigt [att blanka hela skärmen]

Det är ju helt omöjligt att säga något generellt om, det beror
helt på den specifika applikationen och hur den fungerar.

Det kan ju vara bra att rensa skärmen ibland, det kan ju uppstå
störningar som kan störa skrivningen till skärmen t.ex. Det beror
också lite på hur man har organiserat skrivningen för övrigt.
Användarvisningsbild
)ExecutoR(
Inlägg: 258
Blev medlem: 11 juni 2008, 09:18:31
Ort: Hälsingland

Re: Arduino programmerings frågor.

Inlägg av )ExecutoR( »

Tänkte bara säga att jag också lärt mig en hel del när jag läst igenom tråden!

orvar-e, har du fortfarande kvar boken så tar jag den gärna, hänger inte heller med på all kod i tråden ännu.
Användarvisningsbild
Icecap
Inlägg: 26612
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Arduino programmerings frågor.

Inlägg av Icecap »

Satt med databladet i annan anledning och funderade lite över Clr-funktionen och den långa tid den tar. Och räknar man på det motsvarar tiden den tar exakt lika lång tid som att skriva 40 st mellanslag...

Alltså är det bara en intern sekvens som gör just detta.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5973
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Arduino programmerings frågor.

Inlägg av orvar-e »

Du får den bara min kollega är klar med den.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5973
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Arduino programmerings frågor.

Inlägg av orvar-e »

)ExecutoR( ..... Nu har jag fått hem boken, mot frakt så är den din.
Skriv svar