LED-ek kezelése
LED-ek kezelése
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.
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.
Re: LED-ek kezelése
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.
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.
Re: LED-ek kezelése
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.
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.
Re: LED-ek kezelése
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"?
Re: LED-ek kezelése
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ő!
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ő!
Re: LED-ek kezelése
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!
Köszi!
Re: LED-ek kezelése
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.
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.
Re: LED-ek kezelése
Rendben, megpróbálom az Uno-t. Köszönöm a sok segítséget!
Re: LED-ek kezelése
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?
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?
Re: LED-ek kezelése
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ő.
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ő.
Re: LED-ek kezelése
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?
Kérhetek egy kicsit részletesebb leírást, miként is lehet elkészíteni?
Re: LED-ek kezelése
Azth hiszem mégis sikerült. Mindnkinek köszönet a segítségért!
Re: LED-ek kezelése
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
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
Re: LED-ek kezelése
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.
Először csináld meg 1, 2 majd 3 eszközcsoportra a _folyamatábrát_. Utána a mintaprogramot.
