Hőmérő

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése

Kellőkép részletes és mégis tömör-e a téma?

Lényegretörő
0
0 szavazat
Megfelel
0
0 szavazat
Lehetne jobb is
1
100%
 
Szavazatok száma: 1

Avatar
Tonic
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2013. szeptember 13. péntek, 22:03

Hőmérő

Hozzászólás Szerző: Tonic »

Sikerült összeollóznom az első programomat :D ami egy hőmérő.
Az alábiakból áll:
- 16*2 LCD kijelző (Kék háttér fehér karakter)
  • - Arduino Mega 2560 (r2)
    - 10K NTC Thermistor
    - 10K Ellenállás
    - 10K potméter
    - Maroknyi vezeték
A programot arduino 1.0.5-ből töltöttem rá a mikrokontrollerre.
A programkódot elküldöm privát üzenetben vagy emailban annak aki kéri.
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
A hozzászólást 1 alkalommal szerkesztették, utoljára Tonic 2013. december 13. péntek, 23:40-kor.
Avatar
Tonic
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2013. szeptember 13. péntek, 22:03

Hőmérő

Hozzászólás Szerző: Tonic »

Kedves fórumozók!

A remek kis programom sajnos az ö betünk kívül semmien ékezetes betüt nemtud megjeleníteni.
Próbálgattam valami használhatót kiszedni a Robert serial ékezetes programjából, de nem ment :cry:

Kérlek segítsetek!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Hőmérő

Hozzászólás Szerző: Robert »

A programkódot kérlek Code-ként illeszd be, vagy file-ként csatold.
Ékezetes betűt:
1, definiáltál az LCD-ben?
2, adatlapban megnézted?

A soros porti ékezetes és az LCD ékezetes közt nincs 1:1 megfeleltetés!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Hőmérő

Hozzászólás Szerző: Robert »

A képeket is kérlek máskor csatolmányként tedd fel.
Ferii
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2016. április 21. csütörtök, 11:41

Re: Hőmérő

Hozzászólás Szerző: Ferii »

Sziasztok!
Új vagyok itt, nemrég végeztem el a 60 napos és a plusz tanfolyamot, ezúton is köszönöm a lehetőséget Robi!
Lehet, hogy a kérdésem máshol meg lett válaszolva, de a fórumot átböngészve nem találkoztam vele. A problémám a következő: időjárás állomást barkácsolgatok otthonra, 2 hőmérő 2 páratartalom mérő, 1 légnyomásmérő, egy 4*20 soros karakteres lcd. Megy is a dolog, de van egy apró szépséghiba a dologban. Elmélkedéseim közepette leesett, hogy az LCD kiíratás közben, mikor helyiértékváltás történik (pl negatívról pzitívra, tehát csökken 1 helyiértéket a szám, vagy 10 fokról 9-re hül) akkor a kijelzőn marad egy fölösleges számocska. Ennek eltűntetésén gondolkodtam el. Több megoldást találtam a neten erre, és agyaltam én ki magam is, de érdekelne mi a véleményetek a dologról.
1. megoldás az, hogy minden ciklusban újraírom az egész sort, kiírásokkal, és a megjelenítendő számokkal. Ez működőképes megoldás, viszont enyhén villog tőle a kijelző, ami miatt nekem nem annyira tetszik. Talán ez a legjobb legegyszerűbb, ha valaki megvilágosít, hogy a villogástól hogyan szabadulhatok, akkor helyben is vagyunk.
2. megoldás fogok pár egymás után rakott if-et majd kizárom az összes lehetőséget, és csak akkor írom újra az egész sort mikor muszáj (10-> 9 váltáskor, negatív pozitív váltáskor és -10-> -9 váltáskor)
3. megoldás nem sokban különbözik a 2 estől csak switch case-el oldanám meg a problémát (ez igazából hosszabb kódot eredményezne, de talán szebb lenne, tehát csak kis kozmetika)
Még egyszer bocs, ha triviális a kérdés, és köszi, ha valaki megosztja a javaslatait.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Hőmérő

Hozzászólás Szerző: kapu48 »

Nem írjuk újra az egész sort, csak a számok helyét!

Törölsz x,y pozícióban " " 3-4 karaktert.
Megvizsgálod kisseb e a szám 10-nél? ha igen kiraksz 1 szóközt és a számot, az előző x,y pozícióba.

U.ez a helyzet az előjelekkel is.
Ferii
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2016. április 21. csütörtök, 11:41

Re: Hőmérő

Hozzászólás Szerző: Ferii »

Köszi a gyors választ,
az jó, hogy csak a számok helyén írok újra, de akkor mögötte az összes szöveg is hátrébb kerül...
vagy a szöveget úgy rakjam ki, hogy a leghosszabb helyet hagyjam ki amit a szám felvehet? akkor meg a szám és a C betű között lesz egy nagy rés, vagy pedig a felirat és a szám között lesz.
bocs, hogy akadékoskodok.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Hőmérő

Hozzászólás Szerző: kapu48 »

Inkább gondolkoz!
valahogy igy gondolom

Kód: Egész kijelölése

lcd.setCursor(0,1);
  lcd.print("Time: ");	// 7chr
  lcd.setCursor(6,1);  
  lcd.print("      "); // 6chr
// ide még johet a szám hosszának a figyelése
  lcd.setCursor(6+szokozok,1);   
  lcd.print(millis()/1000); // 6chr
  lcd.setCursor(7+6,1);   
  lcd.print(" millis"); // ez összesen 20 chr?
Ezt 1* kirakod.

Utánna már csak figyeled, hogy változot a kirakandó érték?

És csak ezt a részt ismétled:

Kód: Egész kijelölése

 lcd.setCursor(6,1);  
  lcd.print("      "); // 6chr
// ide még johet a szám hosszának a figyelése
  lcd.setCursor(6+szokozok,1);   
  lcd.print(millis()/1000); // 6chr
Ki sakkozod, hogy szépen mindig ugyan ott legyenek az egyesek.
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: Hőmérő

Hozzászólás Szerző: csegebiga »

amit keresel, azt a worben decimális tabulátornak hívják.
lényege, hogy a szám tizedespontja/vesszője/ legyen fix helyen

Kód: Egész kijelölése

   2.12334.12-12.0
esetedben ezt egyszerűsítheted azzal, ha fixen két tizedesig íratsz ki értéket, mert akkor a végével nem kell foglalkozni, csak az elejével

Kód: Egész kijelölése

   2.12
  34.12
 -12.00
mit kell tenned?
EGYSZER kiiratod a lcdre a nem változó részét, kihagyva a változók leghosszabb értékének megfelelő helyet
pl -99.00 az 6 karakter. ebbe a 111.00 is belefér.

Kód: Egész kijelölése

T1:XXX.XXC H:XXX.XX%
T2:XXX.XXC H:XXX.XX%
tehát megtervezed a kinézetet, egyszer kiíratod a lcd-re,
és jön a varázslat:
a változó kiratásakor a változó helyének1 karakterére pozicionálsz,
összeállítod a teljes (példánkban 6 karakteres) stringet,
és azt iratod ki a lcd-re
ez így kitakarítja az előző kiíratást, és nem hagy szemetet maga után

érdemes a string összeállítást kitenni egy függvénybe, és azt hivogatni
bemenő paraméter a kiirandó érték, visszatérő a 6karakteres string
(a fenti kis példában is négyszer hívtam volna meg)
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: Hőmérő

Hozzászólás Szerző: csegebiga »

pl így:

Kód: Egész kijelölése

//tesztágy a LeftSixChar() függvényhez
//bemenő paraméter: lebegőpontos érték
//visszaadott érék: 6 karakteren, két tizedes pontossággal, az elején szóközökkel feltöltve a bemeneti érték stringben
void setup() {
  float mertho=-1.63456;       // érték a függvény paraméterébe
  String kiirando=LeftSixChar(mertho);  //a függvény meghívása
}
void loop() {}  //do nothing...

//************************************** a lényeg :) *****************************************************-
String LeftSixChar(float fErtek)    //függvény neve
{
  String munka="      " ;           //6 space
  String valtozo= String(fErtek,2); //"-1.63"
  munka=munka+valtozo;              //"      -1.63"
  int hossz= munka.length();        // 11
  munka=munka.substring(hossz-6);   //" -1.63"
  return munka;
}
Ferii
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2016. április 21. csütörtök, 11:41

Re: Hőmérő

Hozzászólás Szerző: Ferii »

Köszönöm a gyors segítséget, nagyon elegáns megoldás, használni fogom.
Válasz küldése