A legnehezebb nap
2018. január 18. írta: hahópihehh

A legnehezebb nap

 

Nagyon elteltem önbizalommal az elmúlt napok sikereitől, úgyhogy új kihívás után néztem, ami egy hétledes apró kijelző programozása lett.

Az első meglepetés akkor ért, amikor a php-s felsülés után a tömböt ezen a példán rögtön értettem:

int gomb=2;
int num_array[10][7] = {  { 1,1,1,1,1,1,0 },    // 0
                          { 0,1,1,0,0,0,0 },    // 1
                          { 1,1,0,1,1,0,1 },    // 2
                          { 1,1,1,1,0,0,1 },    // 3
                          { 0,1,1,0,0,1,1 },    // 4
                          { 1,0,1,1,0,1,1 },    // 5
                          { 1,0,1,1,1,1,1 },    // 6
                          { 1,1,1,0,0,0,0 },    // 7
                          { 1,1,1,1,1,1,1 },    // 8
                          { 1,1,1,0,0,1,1 }};   // 9
int szam=0;

 

Bár szerintem inkább az a kettő közötti különbség, hogy itt - mivel egy olyan feladatról van szó, amit utána kézzelfogható formában létre is hozok - látom a végeredményt. Egy lednél már akkor is tudom, hogy hogyan fog kinézni később, mert látom, hogy melyik led az, amit pl. a 0 megjelenítéséhez be kell kapcsolni, és melyik az, amelyiket nem.

Ennél a feladatnál megint látszik, hogy mennyire nem az én észjárásom szerint megy a programozás, mert a tömb maga érthető (1=ON, 0=Off, szal a ledek állapotát mutatja, hogy be- vagy kikapcsolva kell, hogy legyenek egy szám megjelenítéséhez), viszont az, hogy melyik érték melyik ledhez tartozik, az csak egy lejjebb hozzáadott kódban (Num_Write) van megírva. Ez nálam még mindig 404 :D

Miután megvoltunk a ledekkel, azt tűztem ki célul, hogy mutassa a kijelző, hogy hányszor nyomom meg a gombot. Ehhez viszont egy új parancsot kellett megtanulnom: 

 attachInterrupt(digitalPinToInterrupt(gomb),gombnyomas,FALLING);

 

Bár mondjuk annak feldolgozása, hogy ebben a függvényben van már olyan, amit korábban meghatároztunk (gomb a kettes porton már az első sorban) és az is, amit még csak ezzel a paranccsal írunk bele ( gombnyomás maga), és az, hogy a gombnyomás melyik részénél reagáljon (FALLING, azaz felengedésnél) kissé komplikált. Hát kösz.

Ahhoz, hogy kiírja a számot, megint segítségre volt szükségem, mert a kódírás leginkább a német nyelvtudásomra hasonlít: megértem, de nem megy magamtól :D a végére azért összehoztuk, és a legszebb az egészben, hogy még mindig értem :3 mondjuk nem egy nagy durranás, na de csak számolgat vele a led :)

void gombnyomas()
{
delay(500);
szam++;
if (szam>9) szam=0;
Num_Write(szam);
}

void Num_Write(int number) 
{
  int pin= 3;
  for (int j=0; j < 7; j++) {
   digitalWrite(pin, num_array[number][j]);
   pin++;
  }

 

Itt látható a híres-neves Num_Write, amiben a digitalWrite első paramére mondja meg, hogy melyik ledről van szó, a második pedig, hogy világítson-e vagy ne. Nekem ez a sorrend nem tetszik, de nem is azért csinálják így, hogy nekem jó legyen :)

Itt kaptam a következő vérszemet, hogy lehet-e gépről is irányítani? És mivel lehet, meg is csináltuk, mondjuk volt egy kis kavarodás az ASCII körül (két sorral korábban lett megemlítve a kelleténél, de no para), a végére mégis egyben maradt a lakás és a led is pöpecül működött :)

void loop() 
{
if (Serial.available())
  {
    char ch = Serial.read();
    if (ch >= '0' && ch <= '9')
    {
      Num_Write(ch-48);
      Serial.println("Szam atallitva.");
    }
    else
    {
      Serial.println("Hibas input!");
    }
  }
}

 

Még párszor azért meg kell ismételni ezt a gyakorlatot, mert ez magamtól sose jutna az eszembe, bár hallottam már párszor azt a biztatást, hogy a fejlesztő lusta állatfaj, ha valaki már írt valaha hasonló parancsot, akkor azt bizony nem kell újra megírni magamtól :D 

A biztonság kedvéért azért kinéztem már magamnak a következő project-et, a kis ledlámpákkal szívesen játszom addig, amíg futófény nem lesz belőlük :)

Addig itt van a videó a számkijelzésről, enjoy :)

 

 

E.

A bejegyzés trackback címe:

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

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