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

2013.06.26.
11:25

Írta: harsanyireka

Függvények: Analóg be-/kimenetek

analogReference(type) ;

Az analóg input által használt referencia feszültséget állítja be. Az átállítást követően az első AnalogRead() kiolvasás nem lesz pontos!

A típusai (type) a következőek lehetnek:

DEFAULT: Az alap beállítás az arduino típusától függően 5V vagy 3,3V lehet.

INTERNAL: A beépített referencia érték, Atmega168 vagy 328 chip esetén 1.1V, Atmega8-nál 2,56V (az Megán nem elérhető).

INTERNAL1V1: Csak Megán, a beépített 1,1V referencia.

INTERNAL2V56: Csak Megán, a beépített 2,56V referencia.

EXTERNAL: Az AREF pin feszültsége (0-5V) amit referencia értéknek használhatunk. NE HASZNÁLJ 0 VOLTNÁL KISEBB VAGY 5 VOLTNÁL NAGYOBB KŰLSŐ FESZÜLTSÉGFORRÁST! Az AnalogRead() meghívása előtt állítsd ezt be!

analogRead(pin);

Ezzel a paranccsal tudjuk kiolvasni az analog pinbe érkező értékeket.

* pin: annak az analóg pinnek a száma amiből ki akarunk olvasni

Egy 0-1023 közötti értéket ad vissza.

analogWrite(pin, value);

PWM pinre küldhetünk vele értéket, hogy analog tulajdonsággal ruházzuk fel a digitalis pint.

* pin: amelyik pwm pint kimenetként használjuk

* value: értéke 0-255 között

Szólj hozzá!

Címkék: referencia hivatkozások

2013.06.19.
16:51

Írta: harsanyireka

Függvények: Digitlis be-/kimenetek

pinMode(pin, mode);

Itt adjuk meg hogy melyik pin-t mire használjuk.

* pin: az általad használt pin száma, digitálisokat számmal 0,1,2,, stb.), analógokat nagy A betű mellé írott számmal (A0, A1, stb.) jelőljük.

* mode: bementként vagy kimenetként akarod használni: INPUT, OUTPUT

digitalWrite(pin, value);

Kimenetként használt digitális pin-t tudjuk vele be- és kikapcsolni.

* pin: az általad használt pin száma, amit a pinMode-nál is megadtál

* value: értéke lehet ki- (0V) vagy bekapcsolt (5V): LOW, HIGH

digitalRead(pin);

Kiolvassa az értéket az adott pinből.

* pin: annak a pinnek a száma, amiből ki akarod olvasni az adatot, integer=egész szám. A kapott érték lehet HIGH (1, be) vagy LOW (0, ki).

Szólj hozzá!

Címkék: referencia hivatkozások

2013.06.19.
16:49

Írta: harsanyireka

Hivatkozások 11.: Átalakítók, minősítők, felhasználói típus

Típus módosítók

 

char()

Az értéket char adat típussá alakítja.

Szintaxis:

char(x)

Paramétere:

x bármilyen típusú érték lehet.

Kimenete:

Char adat típus.

Forrás: http://arduino.cc/en/Reference/CharCast

   

byte()

Az értéket byte adat típussá alakítja.

Szintaxis:

byte(x)

Paramétere:

x bármilyen típusú érték lehet.

Kimenete:

Byte adat típus.

Forrás: http://arduino.cc/en/Reference/ByteCast

    

int()

Az értéket int adat típussá alakítja.

Szintaxis:

int(x)

Paramétere:

x: bármilyen típusú érték lehet.

Kimenete:

Int adat típus.

Forrás: http://arduino.cc/en/Reference/IntCast

     

word()

Az értéket vagy két byte-ot word adat típussá alakítja.

Szintaxis:

word(x)

word(h,l)

Paraméterei:

x: bármilyen típusú érték lehet.

h: a word magas-sorrendjű byte-ja, balról az első

l: a word alacsony-sorendű byte-ja, jobbról az első

Kimenete:

Word adat típus.

Forrás: http://arduino.cc/en/Reference/WordCast

    

long()

Az értéket long adat típussá alakítja.

Szintaxis:

long(x)

Paramétere:

x: bármilyen típusú érték lehet.

Kimenete:

Long adat típus.

Forrás: http://arduino.cc/en/Reference/LongCast

    

float()

Az értéket float adat típussá alakítja.

Szintaxis:

float(x)

Paramétere:

x: bármilyen típusú érték lehet.

Kimenete:

Float adat típus.

Forrás: http://arduino.cc/en/Reference/FloatCast

      

Típus minősítők

 

variable scope

forrás: http://arduino.cc/en/Reference/Scope

  

static

forrás: http://arduino.cc/en/Reference/Static

   

volatile

Másik futó folyamat is megváltoztathatja.

Forrás: http://arduino.cc/en/Reference/Volatile

  

const

Csak olvasható.

Forrás: http://arduino.cc/en/Reference/Const

    

Alaptípus

 

sizeof()

forrás: http://arduino.cc/en/Reference/Sizeof

Szólj hozzá!

Címkék: hivatkozások

2013.06.19.
14:12

Írta: harsanyireka

MPR121 kapacitív érzékelő

Érintés szenzor, kapacitív érzékelő

MPR121 Capacitive Touch Sensor Breakout Board http://www.sparkfun.com/products/9695http://www.sparkfun.com/datasheets/Components/MPR121.pdf

  

12 bemenete van, amiket Arduinoval tudunk vezérelni. Bekötése nagyon egyszerű, íme:

arduino 3V3 - MPR121 3,3V

arduino GND - MPR121 GND

arduino A4 - MPR121 SDA

arduino A5 - MPR121 SCL

arduino 2 - MPR121 IRQ

A 2 digitális pinen tudjuk majd leellenőrizni a szenzoron érzékelt változást, LOW azaz 0 V-os lesz a folyamat (érintés) alatt. Az elektródákat amiket megérintünk fémből állítjuk elő, lehet pl. alumínium fólia is. Az általunk használt vezeték hosszától és az elektróda anyagától is függ a működése. Az értékek (nyomás és elengedés) beállításában segít az MPR121. Ha nem működik, ezeken az értékeken kell állítani. Azt tapasztalhatod hogy úgy is be lehet állítani ezeket hogy nem kell megérinteni a szenzort, elég közelíteni a kezed hozzá.

A drótok végére aluminimum ragasztószalagot is tehetsz.

MPR 121 Library letöltése: http://code.bildr.org/download/984.zip

Arduino kód:

if(touchStates[i] == 0){
//pin i was just touched
Serial.print("pin ");
Serial.print(i);
Serial.println(" was just touched");

switch (i) {
case 0:
//0 was touched
break;
case 1:
//1 was touched
break;
case 2:
//2 was touched
break;
case 3:
//3 was touched
}

}

Unless otherwise stated, this code is released under the MIT License – Please use, change and share it

 

Forrás: http://bildr.org/2011/05/mpr121_arduino/

Szólj hozzá!

Címkék: szenzorok

süti beállítások módosítása