2013.07.03.
18:11

Írta: harsanyireka

8x8 katód LED matrix

Az alábbi példában a sorokat és az oszlopokat tudjuk két poti segítségével végig pásztázni úgy hogy mindig csak egy LED világit, ahol a sor és az oszlop egyaránt HIGH jelet kap.

8x8dot_poti_scan.jpg

Az alábbi tutorial (http://arduino.cc/en/Tutorial/RowColumnScanning) alapján készült ez az oszlop-sor szkennelős példa, ami egy anód oszlopos mátrixot használ, módosítottam a kódot úgy hogy a lábakat a megfelelő sorrendben felcserélve kötöttem be:

Arduino - LED panel pin párok: 13-6, 12-15, 11-14, 10-8, A2-16, A3-1, A4-11, A5-4, 2-13, 3-12, 4-7, 5-10, 6-9, 7-3, 8-2, 9-5

8x8_matrix_labak.jpg

A mátrix lábainak sorszámozása az alsó rész bal oldalán kezdődik és óramutató járásával ellentétes irányban kell haladni. TC23-11 katód oszlopos zöld panel adatlapján meg lehet nézni hogy melyik oszlop és sor melyik lábra van kivezetve:

tc23-11_dotmatrix.jpg

katod.jpg

   

ARDUINO KÓD:

//az inicializálásnál a col-t és
//row-t felcseráltem mivel katód a panel:
// oszlopok pin száma, 2d tömbben
const int col[8] = {
2,7,19,5,13,18,12,16 };
// sorok pin száma, 2d tömbben
const int row[8] = {
6,11,10,3,17,4,8,9 };
// 2d tömb a pixelek helyéhez
int pixels[8][8];
// kurzor pozíciója
int x = 5;
int y = 5;
void setup() {
// inicializáljuk az I/O pineket kimenetként
// ciklussal:
for (int thisPin = 0; thisPin < 8; thisPin++) {
// kimeneti pinek inicializálása:
pinMode(col[thisPin], OUTPUT);
pinMode(row[thisPin], OUTPUT);
// katód pinekre HIGH-t kell küldeni
// hogy a LED ki legyen kapcsolva!!!
digitalWrite(col[thisPin], HIGH);
}
// inicializáljuk a pixel matrix-ot:
for (int x = 0; x < 8; x++) {
for (int y = 0; y < 8; y++) {
pixels[x][y] = HIGH;
}
}
}
void loop() {
// bemenet kiolvasása:
readSensors();
// kirajzolás a panelen:
refreshScreen();
}
void readSensors() {
//az utolsó pozíció kikapcsolása:
pixels[x][y] = HIGH;
// szenzor-poti kiolvasása
/// x és y értékekhez:
x = 7 - map(analogRead(A0), 0, 1023, 0, 7);
y = map(analogRead(A1), 0, 1023, 0, 7);
// LOWra állítjuk az új pixel pozícióját
/// a LED bekapcsol
// frissül a képernyő/panel
pixels[x][y] = LOW;
}void refreshScreen() {
// ciklussal megszámoljuk az anód sorokat
for (int thisRow = 0; thisRow < 8; thisRow++) {
// anód lábakat bekapcsoljuk
digitalWrite(row[thisRow], HIGH);
// ciklusokkal megszámoljuk a katód oszlopokat
for (int thisCol = 0; thisCol < 8; thisCol++) {
//aktuális pixel állapotát kiolvassuk:
int thisPixel = pixels[thisRow][thisCol];
// amikor a sor HIGH és az oszlop LOW,
// az a led bekapcsol ahol a kettö találkozik:
digitalWrite(col[thisCol], thisPixel);
// kapcsoljuk ki a pixelt:
if (thisPixel == LOW) {
digitalWrite(col[thisCol], HIGH);
}
}
// a sort kapcsoljuk ki:
digitalWrite(row[thisRow], LOW);
}
}

Szólj hozzá!

Címkék: LED panel

A bejegyzés trackback címe:

https://harsanyireka.blog.hu/api/trackback/id/tr665389665

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