Arduino kezdő

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
czizsoart
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2019. február 19. kedd, 20:01

Re: Arduino kezdő

HozzászólásSzerző: czizsoart » 2019. április 12. péntek, 17:17

(Nagyon) kezdő arduinos vagyok.

Beszereztem néhány db 7 szegmenses kijelzőt (5101BS típusúak, közös anód), amiket tesztelni akartam. Van egy kódom, ami 0-tól 9-ig kijelzi a számokat a kijelzőn, folyamatosan léptetve a számokat:

int pinA = 2;
int pinB = 3;
int pinC = 4;
int pinD = 5;
int pinE = 6;
int pinF = 7;
int pinG = 8;


void setup() {

pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);

}


void loop() {
//0
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, LOW);
delay(1000);
//1
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
delay(1000);
//2
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
delay(1000);
//3
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
delay(1000);

//4
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
delay(1000);

//5
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
delay(1000);

//6
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
delay(1000);

//7
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
delay(1000);

//8
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
delay(1000);

//9
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
delay(1000);

Feltöltöttem az Unora. A kijelző elvileg működik, de épp ellenkezőleg, mint ahogy kellene. Pl. a program 0 részénél, ahol mindegyik szegmens HIGH, kivéve a G, ott a kijelzőn csak a G (középső vízszintes dióda) világít, a többi nem. Ha mindegyiket LOW-ra állítom, csak a G-t HIGH-ra, akkor mutatja a kijelző a nullát helyesen. Mi lehet a baj, hogy mindent ellentétesen csinál? Nem jövök rá. Ja, és mindegyik kijelzőmmel ugyanez történik .

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3293
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Arduino kezdő

HozzászólásSzerző: kapu48 » 2019. április 12. péntek, 18:03

Az anód a pozitív, a katód a negatív. (5101BS típusúak, közös anód),
Ezek szerint a LED-ek ismerik a fizikát. Csak te vagy meg keveredve!

czizsoart
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2019. február 19. kedd, 20:01

Re: Arduino kezdő

HozzászólásSzerző: czizsoart » 2019. április 12. péntek, 18:21

Ezt én is tudom, és az anód lábakat a pozitívra is (+3.3V) kötöttem.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3293
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Arduino kezdő

HozzászólásSzerző: kapu48 » 2019. április 12. péntek, 18:40

Ezért világit a LED mikor a katodon negativ szint van LOW = 0V

czizsoart
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2019. február 19. kedd, 20:01

Re: Arduino kezdő

HozzászólásSzerző: czizsoart » 2019. április 12. péntek, 19:26

Tehát akkor mi a megoldás?

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3293
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Arduino kezdő

HozzászólásSzerző: kapu48 » 2019. április 12. péntek, 19:48

Javítod a programodat:

Kód: Egész kijelölése

//0
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH );
//1
....

czizsoart
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2019. február 19. kedd, 20:01

Re: Arduino kezdő

HozzászólásSzerző: czizsoart » 2019. április 12. péntek, 20:55

OK, ezt értem, de mi a magyarázata annak, hogy a pinA-F kimenetek magas szinten vannak, ennek ellenére nem világítanak a diódák, a pinG, ami viszont LOW-ra van állítva az meg világít?? Sima LED-ek esetében akkor világít a LED, ha az adott kimeneten HIGH van.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3293
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Arduino kezdő

HozzászólásSzerző: kapu48 » 2019. április 12. péntek, 22:02

A sima LED-et fordítva is belehet kötni az anod van a kimeneten, katód a GNDn! Ez esetben igaz az állításod.
De itt az anod közös! Ezért csak a katod mehet a kimenetekre, és az anod a VCCre.

(Vegyél közös katódú kijelzőt! És megszünnek a problémáid.)
Ez a program arra van írva.


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég