Szeretnék kérni egy ledmátrixot, és küldöm mindenkinek, aki szereti
2018. január 23. írta: hahópihehh

Szeretnék kérni egy ledmátrixot, és küldöm mindenkinek, aki szereti

Visszatértem mint a terminátor, tisztára hiányzott már ez a kis esti meló utáni levezető, a hétvégén muszáj volt a karácsony előtti állapotokat visszaállítani a lakásban, amire a ledvillogtatás miatt valahogy sosem volt idő eddig :)

Ha már visszatérés, ígértem magamnak egy ledmátrixot, és most teljesítem is, bár valszeg ez is két lépéses lesz, mert belenéztem a kódba, és visszasírtam a középiskolai földrajzórákat...node mindegy is, szóval ebből a kupac színes csodából kellett kiválogatni potom 16 db hosszú jumper wire-t (nyilván ennyi nincs a kezdőcsomagban, de már úton van a nagyobb pakk!), amihez Mesterem és Lektorom (a továbbiakban ML) felajánlott a saját készletéből egy FM (female/male, az egyik oldalon tű, a másikon lyuk) csomagot, úgyhogy az én kicsijeimet az ő nagyjaival pótoltam, hogy lehetőleg látszódjon is majd valami a ledmátrixból a végén. Eleinte próbáltam a nagyokkal azonos színű kicsiket passzintani, de a kicsikből nem volt elég nagy a színválaszték :( Sedebaj, sem az Arduino board sem a breadboard nem fog megsértődni a lila-piros párosítástól.

img_2649_1.JPG

A kötözgetés első ránézésre birkatürelmet igényel, hét perc múlva este nyolc, nézzük, mennyi ideig tart ez a labirintus:

ledmatrix.JPG

Nahh, hát negyed kilenc, és ebbe még egy félrekötés is belefért :) Megzavart a túl sok szín....

Most jöjjön az, amit a legkevésbé szeretek a programozásban: a programozás. Még jó, hogy lehet honnan kopipésztelni hozzá a kódokat, különben nem sokra mennék egy gyönyörűen bekötött, ámde működésképtelen dologgal :)

Bemásoltam a kódokat, viszont ARUDINO helyett sikeresen nem ír ki semmit, cserébe villog össze-vissza, ráadásul mindezt olyan fényerővel, hogy kiégett a retinám. Elsőre ML azt gyanította, hogy a bekötésnél sikerült valamit elcseszerintenem (NEM!), úgyhogy megkért rá, hogy írjak olyan parancsot bele, ami bekapcsolja az összes ledet (szkúzi?). Elsőre nem találtam el sem a függvényt, sem a helyet, ahova be kellett volna írnom, viszont az megvolt, hogy melyik sor azt, amit majd használni kell. Miután visszaállíttatta velem a totál kikommentelt loop-ot lezárásostul (lol), csak meglett, melyik sor és oszlop a bűnös:

img_2652_1.JPG

Mondanám, hogy nem rossz arány, de nem vígasztal. Most kezdhetem el nézegetni a bekötéseket, hogy melyik vezeték nem akarja az igazságot. Nos, átnézettem ML-el is a dolgot, és kiderült, hogy tényleg nem kötöttem rossz helyre a madzagokat, csak amikor véletlenül kicsúszott a minibreadboardból a ledmátrix, egy sorral arrébb raktam vissza, és azt már nem ellenőriztem le még egyszer. Blama :/

Nahh, és akkor következzék a(z ML által) szépen átdolgozott program (aminek írása közbe egy Szex és New York részt beillesztettem pihenésnek), és csak egyetlen egy résztvevő maradt, amit képtelen vagyok visszafejteni.

Edit: egy óra vitatkozás után visszafejtettem, és szerintem jogosan akadtam fenn rajta: 

1
2
3
4
void  drawScreen(byte letter[]){
     
 for (int i = 0; i < 8; i++) {
      setColumns(letter[i]);  

 

Arra voltam ugyanis kíváncsi, hogy honnan a manóból tudja a függvény, hogy a "letter" paramétere honnan kerül oda. Az világos, hogy utána az "i"-edik csomagokat olvassa be hozzá, de hogyan szedi oda a betűket?

Na, mint kiderült, két lépésből: először is elmegy a drawScreen parancsokhoz: 

1
2
3
4
5
6
7
void loop() 
{
delay(10); //0 makes it brighter, higher value makes it vibrating
timeCount++;

  if(timeCount <  70) {
    drawScreen(A);

 

Ide szépen le van rajzolva, hogy a loop a "drawScreen(A)"-val kezdődik, tehát ott megadja, hogy melyik tömböt kell megkeresnie a bitcsomaghoz, amik pedig fent vannak részletezve: 

1
2
3
byte ALL[] = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111}; //if blocks are put under each other, it shows the letter
byte EX[] = {B00000000,B00001000,B00001000,B00001000,B00001000,B00000000,B00001000,B00000000};
byte A[] = {B00000000,B00011000,B00100100,B00100100,B00111100,B00100100,B00100100,B00000000};

 

Az öleb ezek szerint ott volt elhantolva, hogy a drawScreen-hez hozzácsapott (A) nem csak azért van ott, hogy egy A betűt rajzoljon a ledekkel, hanem konkrétan jelezni szeretné, hogy a tömbök között keresse meg az A betűhöz tartozó tömböt, és utána a "for" segítségével kapcsolja be a megfelelő ledeket, amiket az A betűhöz tartozó tömbben a bitcsomagok jelzik.

A kód maga bitanghosszú, de érdemes összehasonlítani azt, aminek indult azzal, amivé átformáztuk, szerintem kicsit szembarátabb lett :)

A három órás segítséget pedig az alábbi magánakcióval köszöntem meg (az ARDUINO-t írtam át). Szerintem zseni vagyok, főként, hogy a programozás részét holnapra akartam hagyni :)

E.

Eredeti program: https://create.arduino.cc/projecthub/SAnwandter1/programming-8x8-led-matrix-23475a
Ez pedig az átdolgozott file txt formátumban.

 

A bejegyzés trackback címe:

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

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