Hőmérsékletérzékelő esete a négyszámjegyű kijelzővel - 2. rész
2018. február 09. írta: hahópihehh

Hőmérsékletérzékelő esete a négyszámjegyű kijelzővel - 2. rész

Az előző részben a hőmérőt és a kijelzőt kötöttem össze az Arduino-val, ami sétagalopp ahhoz képest, ami a mostaniban lesz, legalábbis szerintem. Ez volt az, ami azért ML-t is sűrű guglizásra fogta, ugyanis a hőmérő finomhangolása egy pettyet körülményes volt, de sikerült, és a végleges verzió txt formátumban itt megtekinthető.

Na de ne szaladjunk ennyire előre, kezdjük ott, hogy a kijelző programozásához felhasználtuk ezt az oldalt, aminek az előnye a hátrányai is, ha az ember lánya még annyira nincs képben, hogy mit is csinál, mert egy zip file tartalmazza az összes beállítást, ami kell a kijelzőhöz (említettem korábban a fejlesztők újrahasznosítási technikáját, ez egy tökéletes példa rá, hogy ha valamit már egyszer kitalált valaki, azt meg is osztják egymással ezért nem kell minden alkalommal újra létrehozni ugyanazt, csak átalakítani az igényeknek megfelelően), viszont így nem tudom lekövetni, hogy mit honnan vesz, mert annyira nem tudom még összerakni fejben a függvények logikáját. Többek között ezért is jó egy informatikus a háznál, mert így pár perc értetlenkedés után át is ugorhattunk az érdekesebb részekhez.

Az első ezek közül az, hogy itt a rácsoslinzerrel (#) kezdődő sort is be kell írni, mert ez hivatkozik a letöltött zip fájlra (unzip után a "cpp" és a "h" fájlokat be kell másolni az Arduino aktuáis mappájába),  a függvényeket pedig az első futtatásnál odacsapja két külön tabra, és tádááám, anélkül, hogy mindent oda bepötyögtünk volna, ott van.

tabok.JPGsevseg.jpgA dupla sevseg rész annyit takar, hogy (idézem) "objektumorientáltan van létrehozva a könyvtár", és ebben a második sevseg jelenti azt a változót, amit létrehoztunk és hivatkozunk rá a következőkben, de ez a változó maga már egy olyan dolog, ami eleve tartalmaz adatokat, amiket "behoz" magával.. Kb. olyan, mint a többi hivatkozás, csak itt már alapból egy konténerre hivatkozunk. Hivatkozásception :D

A setup részben a szokásos dolgokat írtam be, ilyen az, hogy most négy számjeggyel szeretnénk dolgozni (byte numDigits = 4), a számjegyek melyik pinre vannak kötve (2-5), valamint azt, hogy a ledeket melyik pineken kell keresni (6-13). A pinekkel meggyűlt a bajom, mert megint elfelejtettem, hogy ezeket az alkatrészeket nem sorrendben számozzák be, így fordulhat elő, hogy három számjegy a felső három lábhoz, a negyedik meg az egyik alsó lábhoz tartozik. Ám legyen, ha sokszor leírom, egyszer biztos megjegyzem.

A sevseg.begin zárójelei közé azok a paraméterek kerülnek, amik a "cpp" tabon részletesen kifejtett függvény szeretne használni (+ a COMMON_CATHODE, ami a vezérlésmód), a következő sorban pedig az szerepel, hogy mekkora fényerővel.

Most pedig ugorjunk  a hőmérőre, amihez a setup elé be kellett szúrni, hogy az Arduino-n hol található (szeretném megjegyezni, hogy ezt magamtól irtam be :))))))))))))))))))))))))))))))))))) ), és azt, hogy mit szeretnénk vele csinálni (olvasni, jelen esetben):

tempnew.jpg

A hőmérőhöz kapcsolódó megfelelő képlet magtalálása viszont tovább tartott, bár alig pár sor, de a netes lehetőségek néha félrevezetnek, viszont az itt található átváltást csak kicsit kellett módosítani, így nem csak végre pontosan mutatja a hőmérsékletet, de beállítottuk azt is, hogy ne villogjon egyfolytában, amikor vált az értékek között :)

És akkor jöjjön az átdolgozott verzió.

A loop-on belülre tesszük a függvényeket, hogy folyamatosan mérhessük az eredményt:

Az első "int" kell ahhoz, hogy a hőmérőből kiolvassa a feszültség értékét, a milivolts nevű "float" változóval a kiolvasott értéket kell átváltani milivoltba, amit aztán a következő "int" sorral átváltunk celsius-ba (oda azért kell még egy "int", hogy ha esetleg az osztás törtszámra jön ki, akkor is egész számot kapjunk), és a kiolvasott értéket átküldjük a kijelzőnek. Az utolsó "for" való arra, hogy az egész ne villogjon, mint egy stroboszkóp, hanem szépen váltson egyik számról a másikra szükség esetén, mert ezzel lehet beállítani azt, hogy hányszor frissíti a kijelzőt, mielőtt újra mér (i<60000 --> a hatvanezredik frissítés után).

Pofonegyszerű, megint tiszta németóra, amikor értem, amit mondanak, de magamtól már (még) nem menne :D

void loop() {
  int value = analogRead (temp);
  float milivolts = (value / 1024.0) * 5000;
  int celsius = (int) milivolts/10;
  sevseg.setNumber(celsius, 0);
  for(unsigned int i =0; i<60000; i++)
    sevseg.refreshDisplay();
}

 

Záróakkordként pedig következzen a videó, a megszokott remek minőségben. Igen, a hajszárítót direkt vontuk be a sztoriba, így mégis mennyivel hangulatosabb :)

E.

A bejegyzés trackback címe:

https://nemertekalovakhozdeazertvanegy.blog.hu/api/trackback/id/tr9013643690

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása