Arduino programmerings frågor.
Re: Arduino programmerings frågor.
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
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
Re: Arduino programmerings frågor.
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"
Men om den ändras till
"Temp: 90°C Brännare: PÅ"
BTW: denna raden
ger dig gradertecknet på displayen! 
Mellanslaget implementerar du med if satser...
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");
"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");
Kod: Markera allt
lcd.print((char)223);

Mellanslaget implementerar du med if satser...
Re: Arduino programmerings frågor.
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).
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).
Re: Arduino programmerings frågor.
Också vad jag tycker mig ha kommit framtill.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...
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.
Re: Arduino programmerings frågor.
Det är väl bara att räkna på tiden det tar att positionera cursorn och skriva blanksteg över hela displayen kontra en CLS.
Re: Arduino programmerings frågor.
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)orvar-e skrev:Också vad jag tycker mig ha kommit framtill.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...
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.
Re: Arduino programmerings frågor.
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.

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.
- )ExecutoR(
- Inlägg: 258
- Blev medlem: 11 juni 2008, 09:18:31
- Ort: Hälsingland
Re: Arduino programmerings frågor.
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.
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.
Re: Arduino programmerings frågor.
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.
Alltså är det bara en intern sekvens som gör just detta.
Re: Arduino programmerings frågor.
)ExecutoR( ..... Nu har jag fått hem boken, mot frakt så är den din.