Arduino pomoc
-
packa
- Příspěvky: 7202
- Registrován: 7. 2. 2007, 6:42
- Bydliště: Královehradecký kraj
Zdravím dělám takovou blbost a potřeboval bych v arduinu udělat funkci pro hromadné ovládání pinů , ted volám přeba LED1 a pod , ale potřeboval bych volat najednou třeba piny 1, 6 ,12 pod jedním názvem , nebo všechny led najednou -.led-all
předem dík
packa
int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;
int led10 = 10;
int led11 = 11;
int led12 = 12;
int led13 = 13;
int led-all ---------?????
předem dík
packa
int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;
int led10 = 10;
int led11 = 11;
int led12 = 12;
int led13 = 13;
int led-all ---------?????
-
packa
- Příspěvky: 7202
- Registrován: 7. 2. 2007, 6:42
- Bydliště: Královehradecký kraj
tak tohle taky nefunguje ,
-
lubos
- Sponzor fora
- Příspěvky: 5147
- Registrován: 2. 5. 2007, 3:47
- Bydliště: Praha
předpokládám že ti vadí postupné aktivování ledek? nebo chceš ušetřit řádky?
XpertMill, Gravos, Ninos, Galaad
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
-
packa
- Příspěvky: 7202
- Registrován: 7. 2. 2007, 6:42
- Bydliště: Královehradecký kraj
tam budou různé sekvence kde potřebuju volat různé skupiny ledek a vypisovat se mi to po řádkách se mi nechce bylo by toho strašně moc
-
Mex
- Příspěvky: 10287
- Registrován: 6. 2. 2014, 10:29
Já teda Arduino neznám a ani znát nechci a nebudu.
Myslím to vývojové prostředí Arduino, ty destičky jsou naopak docela fajn.
Předpokládám, že ty LEDky máš prostě pověšené na jednotlivé piny nějakého výstupního portu.
Tak snad není problém poslat obsah celého portu najednou, ne?
Něco jako:
#define LED1 0x01
#define LED2 0x02
#define LED3 0x04
...
#define LED6 0x20
#define SKUPINA1 (LED1 | LED2 | LED6)
#define SKUPINA2 (LED1 | LED5)
No a pak buď rozsvítíš nebo zhasneš jednu LED:
PORT |= LED1
PORT &= ~LED1
Nebo celou skupinu:
PORT |= SKUPINA1
PORT &= ~SKUPINA1
Nevím, jak se v Arduinu zapisuje na porty, ale nějak takhle to snad taky jde (tedy tak, jak se to dělá ve všech ostatních vývojových prostředích).
Myslím to vývojové prostředí Arduino, ty destičky jsou naopak docela fajn.
Předpokládám, že ty LEDky máš prostě pověšené na jednotlivé piny nějakého výstupního portu.
Tak snad není problém poslat obsah celého portu najednou, ne?
Něco jako:
#define LED1 0x01
#define LED2 0x02
#define LED3 0x04
...
#define LED6 0x20
#define SKUPINA1 (LED1 | LED2 | LED6)
#define SKUPINA2 (LED1 | LED5)
No a pak buď rozsvítíš nebo zhasneš jednu LED:
PORT |= LED1
PORT &= ~LED1
Nebo celou skupinu:
PORT |= SKUPINA1
PORT &= ~SKUPINA1
Nevím, jak se v Arduinu zapisuje na porty, ale nějak takhle to snad taky jde (tedy tak, jak se to dělá ve všech ostatních vývojových prostředích).
-
packa
- Příspěvky: 7202
- Registrován: 7. 2. 2007, 6:42
- Bydliště: Královehradecký kraj
tenhle zápis skupiny taky na arduinu nejde
-
Mex
- Příspěvky: 10287
- Registrován: 6. 2. 2014, 10:29
To prostě není možné.
Neříkej mi, že Arduino neumí vyslat jedním přikazem obsah celého portu.
A pokud opravdu ne, tak je to systém vhodný jen pro skartační pytel.
Neříkej mi, že Arduino neumí vyslat jedním přikazem obsah celého portu.
A pokud opravdu ne, tak je to systém vhodný jen pro skartační pytel.
-
packa
- Příspěvky: 7202
- Registrován: 7. 2. 2007, 6:42
- Bydliště: Královehradecký kraj
určítě umí
, ale nevím jak
-
Hades
- Příspěvky: 1196
- Registrován: 11. 10. 2012, 10:59
- Bydliště: Praha; Mimoň
to co poslal Mex musí fungovat, jen ty budeš muset definovat adresy podle zařízení, ale Arduino, jsem na tom jak Mex
Něco jako:
#define LED1 ... adresa portu
#define LED2 ... adresa portu
#define LED3 ... adresa portu
tohle by ti mohlo pomoci http://www.arduino.cc/en/Reference/PortManipulation" onclick="window.open(this.href);return false;
Něco jako:
#define LED1 ... adresa portu
#define LED2 ... adresa portu
#define LED3 ... adresa portu
tohle by ti mohlo pomoci http://www.arduino.cc/en/Reference/PortManipulation" onclick="window.open(this.href);return false;
-
packa
- Příspěvky: 7202
- Registrován: 7. 2. 2007, 6:42
- Bydliště: Královehradecký kraj
takhle jsem to napsal a nejede : samozřejmě když volám jednotlivé led tak je vše ok
#define LED1 1
#define LED2 2
#define LED3 3
#define LED4 4
#define SKUPINA1 (LED1 | LED2 |LED3)
#define SKUPINA2 (LED3 | LED4)
#define PRODLEVA 500
void setup()
{
pinMode(1, OUTPUT); // nastaveni pinu 1 jako vystup
pinMode(2, OUTPUT); // nastaveni pinu 2 jako vystup
pinMode(3, OUTPUT); // nastaveni pinu 3 jako vystup
pinMode(4, OUTPUT); // nastaveni pinu 4 jako vystup
pinMode(5, OUTPUT); // nastaveni pinu 5 jako vystup
}
void loop(){
digitalWrite(SKUPINA1, HIGH);
delay(PRODLEVA);
digitalWrite(SKUPINA1, LOW);
delay(PRODLEVA);
digitalWrite(SKUPINA2, HIGH);
delay(PRODLEVA);
digitalWrite(SKUPINA2, LOW);
}
#define LED1 1
#define LED2 2
#define LED3 3
#define LED4 4
#define SKUPINA1 (LED1 | LED2 |LED3)
#define SKUPINA2 (LED3 | LED4)
#define PRODLEVA 500
void setup()
{
pinMode(1, OUTPUT); // nastaveni pinu 1 jako vystup
pinMode(2, OUTPUT); // nastaveni pinu 2 jako vystup
pinMode(3, OUTPUT); // nastaveni pinu 3 jako vystup
pinMode(4, OUTPUT); // nastaveni pinu 4 jako vystup
pinMode(5, OUTPUT); // nastaveni pinu 5 jako vystup
}
void loop(){
digitalWrite(SKUPINA1, HIGH);
delay(PRODLEVA);
digitalWrite(SKUPINA1, LOW);
delay(PRODLEVA);
digitalWrite(SKUPINA2, HIGH);
delay(PRODLEVA);
digitalWrite(SKUPINA2, LOW);
}
-
lubos
- Sponzor fora
- Příspěvky: 5147
- Registrován: 2. 5. 2007, 3:47
- Bydliště: Praha
Tady je to pěkně popsané
http://www.arduino.cc/en/Reference/PortManipulation" onclick="window.open(this.href);return false;
http://www.arduino.cc/en/Reference/PortManipulation" onclick="window.open(this.href);return false;
XpertMill, Gravos, Ninos, Galaad
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
-
Mex
- Příspěvky: 10287
- Registrován: 6. 2. 2014, 10:29
Přečti si to PDF, co poslal Hades.
Je to tam přesně popsané na pár řádcích i s příkladem, který se přesně hodí pro tebe.
Pokud bys měl ty LEDky třeba na portu D, tak rozsvícení:
PORTD |= SKUPINA1;
zhasnutí:
PORTD &= ~SKUPINA1;
Platí v případě, kdy LED svítí při log. H, tj. pokud jsou zapojené proti GND.
Pokud jsou proti plusu, tak je samozřejmě rozsvicení a zhasnutí naopak.
Je to tam přesně popsané na pár řádcích i s příkladem, který se přesně hodí pro tebe.
Pokud bys měl ty LEDky třeba na portu D, tak rozsvícení:
PORTD |= SKUPINA1;
zhasnutí:
PORTD &= ~SKUPINA1;
Platí v případě, kdy LED svítí při log. H, tj. pokud jsou zapojené proti GND.
Pokud jsou proti plusu, tak je samozřejmě rozsvicení a zhasnutí naopak.
-
lubos
- Sponzor fora
- Příspěvky: 5147
- Registrován: 2. 5. 2007, 3:47
- Bydliště: Praha
Podle toho můžeš jak hromadně definovat vstupy ,výstupy tak i jejich stav, používal jsem to řízení bldc motoru kde to muselo být fakt rychlé.
XpertMill, Gravos, Ninos, Galaad
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
-
Hades
- Příspěvky: 1196
- Registrován: 11. 10. 2012, 10:59
- Bydliště: Praha; Mimoň
nastaveni skupiny, pokud to nenecházíš...packa píše:takhle jsem to napsal a nejede : samozřejmě když volám jednotlivé led tak je vše ok
#define LED1 1
#define LED2 2
#define LED3 3
#define LED4 4
#define SKUPINA1 (LED1 | LED2 |LED3)
#define SKUPINA2 (LED3 | LED4)
#define PRODLEVA 500
PORTD = B10101000; // sets digital pins 7,5,3 HIGH
-
packa
- Příspěvky: 7202
- Registrován: 7. 2. 2007, 6:42
- Bydliště: Královehradecký kraj
jo koukám na to , ale nějak se to tím komplikuje , potřebuju volat asi 12 různých skupin a to od 2 do 6 pinů v různých kombinacích