LED-ek kezelése

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

LED-ek kezelése

Hozzászólás Szerző: laller77 »

Sziasztok,

kezdő vagyok az Arduino programozásában, ezért szeretnék segítséget kérni a következő feladat megoldásában: adott 10 db piros led, 10 db zöld led, 10 db reed relé. A ledek párban vannak, és minden párhoz tartozik egy redd. Alapból a pirosaknak kell világítani, és az egyes reed relék hatására kellene a pirosakat kikapcsolni, és a zöldeket pedig bekapcsolni. Ha minden zöld világít, akkor a folyamatnak elölről kellene kezdődni. Addig eljutottam, hogy a pirosak világítanak, de ha egy reed is jelet ad, az összes piros kikapcsol, és a zöldek világítanak.

Próbáltam többféleképpen megírni a kódot, de sehogy sem jó. Megpróbáltam két ciklussal felkapcsolni és lekapcsolni a ledeket, de nem működik. Most minden lednél és reednél külön meg van adva, hogy melyik pinre van kötve, de nem jó.

Valaki tudna segíteni? A válaszokat előre is köszönöm.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: LED-ek kezelése

Hozzászólás Szerző: Robert »

Mi a kódod?
Folyamatábrát rajzoltál, hogy mikor mi történik? (Sokat segít a programozásban)

Egy láb:
GND fele Vörös LED + Reed vezérlése
Vcc fele a Zöld LED.

Ha a kimenet H - Vörös+LED
Ha a kimenet L - Zöld LED megy.
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

Re: LED-ek kezelése

Hozzászólás Szerző: laller77 »

Szia,

nem rajzoltam folyamatábrát, bár lehet nem ártott volna. Bemásolom ide a kódot. Ez a legutóbbi, ami majdnem működik.

#include <Wire.h>


int red2 = 2;
int red3 = 3;
int red4 = 4;
int red5 = 5;

int green6 = 6;
int green7 = 7;
int green8 = 8;
int green9 = 9;

int reed0 = A0;
int reed1 = A1;
int reed2 = A2;
int reed3 = A3;

int pont0;
int pont1;
int pont2;
int pont3;

void setup()
{
pinMode(red2, OUTPUT);
pinMode(red3, OUTPUT);
pinMode(red4, OUTPUT);
pinMode(red5, OUTPUT);

pinMode(green6, OUTPUT);
pinMode(green7, OUTPUT);
pinMode(green8, OUTPUT);
pinMode(green9, OUTPUT);

pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);

digitalWrite(red2, HIGH);
digitalWrite(red3, HIGH);
digitalWrite(red4, HIGH);
digitalWrite(red5, HIGH);

}

void loop()
{


pont0 = analogRead(reed0);

if (pont0 == LOW)
{
digitalWrite(green6, HIGH);
digitalWrite(red2, LOW);
}



pont1 = analogRead(reed1);

if (pont1 == LOW)
{
digitalWrite(green7, HIGH);
digitalWrite(red3, LOW);

}

pont2 = analogRead(reed2);

if (pont2 == LOW)
{
digitalWrite(green8, HIGH);
digitalWrite(red4, LOW);

}

pont3 = analogRead(reed3);

if (pont3 == LOW)
{
digitalWrite(green9, HIGH);
digitalWrite(red5, LOW);

}


}
Köszönöm a segítséget.
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

Re: LED-ek kezelése

Hozzászólás Szerző: laller77 »

A kódhoz még annyit, hogy jelenleg 4 ledre próbáltam, nem 10re, de ez gondolom a megoldás szempontjából nem fontos. Hogy érted azt, hogy "egy láb"?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: LED-ek kezelése

Hozzászólás Szerző: Robert »

Wire.h - Minek?
Analogread - ez az A0...A5 lábon _analog_ jelet mér, 0...1023 eredménnyel.
DigitalRead() a digitális beolvasás.

Analogread 0...1023 ???? LOW/HIGH - nem összeegyeztethető!
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

Re: LED-ek kezelése

Hozzászólás Szerző: laller77 »

Figyelmetlen voltam, belekevertem az analóg oldalt, nem kellett volna. A reed is digitális oldalra csatlakoztatva, és már működik is. Most már csak az a gondom, hogy nem lesz elég csatlakozási lehetőségem a 10-10 ledhez és a reedekhez. Egy Mega talán megoldás lehet?
Köszi!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: LED-ek kezelése

Hozzászólás Szerző: Robert »

A0...A5 - mintha digit lenne, úgy is kezelheted.

UNO-n van:
13 digiit
6 Digit+analog

Ha neked ennyi kell:
Mega - túl sok, nagy.
I2C portbővítő. AVR A4/A5 lába, max 8 chip fűzhető fel és chipenként 8 v. 16 I/O van.
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

Re: LED-ek kezelése

Hozzászólás Szerző: laller77 »

Rendben, megpróbálom az Uno-t. Köszönöm a sok segítséget!
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

Re: LED-ek kezelése

Hozzászólás Szerző: laller77 »

Lehet még egy kérdés? Amit írtál:

Egy láb:
GND fele Vörös LED + Reed vezérlése
Vcc fele a Zöld LED.

Ha a kimenet H - Vörös+LED
Ha a kimenet L - Zöld LED megy.

Hogyan tudnám megvalósítani? Nem igazán értem. Egy pint kellene így használni?
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: LED-ek kezelése

Hozzászólás Szerző: csabeszq »

Pontosan, egy pinnel simán vezérelsz 2 LED-et.

VCC - vörös LED - 220 ohm - kimeneti pined - zöld LED - 220 ohm - GND.

Ha a kimenet magas, akkor a zöld ég, ha alacsony, akkor a piros, ha pedig inputra kapcsolod, akkor mindkettő.
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

Re: LED-ek kezelése

Hozzászólás Szerző: laller77 »

Neked is köszönöm a választ. Elméletben értem, hogy hogyan is működne, de nem tudom bekötni úgy, hogy működjön is.
Kérhetek egy kicsit részletesebb leírást, miként is lehet elkészíteni?
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

Re: LED-ek kezelése

Hozzászólás Szerző: laller77 »

Azth hiszem mégis sikerült. Mindnkinek köszönet a segítségért!
laller77
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2015. május 24. vasárnap, 8:26

Re: LED-ek kezelése

Hozzászólás Szerző: laller77 »

Sziasztok,

van egy feladatom, amit meg kellene oldanom, de kezdő vagyok, emiatt szeretnék segítséget kérni. Valamilyen szinten kapcsolódik a korábbi ledes dologhoz. A feladatom: adott 12 db reed, 12 db led, egy mágnesszelep és egy levegő áramlás érzékelő. Minden egyes reed jeladásakor a mágnesszelep behúz (levegő áramolhat). Ha a levegő áramlás létrejön, az adott reed-hez tartozó led bekapcsol. A sorrend tetszőleges, pl ha elsőként az 5-ös számú reed ad jelet, akkor az 5-ös számú lednek kellene végül bekapcsolnia. Ha minden led bekapcsolt, alaphelyzetbe kell visszaállniuk, a folyamat kezdődik elölről.

Ebben szeretnék segítséget kérni. Alkalmas lehet a vezérlésre egy arduino uno, vagy egyéb más eszköz kell hozzá?

Üdv

Lajos
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: LED-ek kezelése

Hozzászólás Szerző: Robert »

Minden LED-et, relét, stk egyesével kezelj. Ehhez a Mega a legegyszerűbb.
Először csináld meg 1, 2 majd 3 eszközcsoportra a _folyamatábrát_. Utána a mintaprogramot.
Válasz küldése