Stránka 1 z 10

Arduino pomoc

Napsal: 30. 11. 2014, 11:12
od packa
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 ---------?????

Re: Arduino pomoc

Napsal: 30. 11. 2014, 12:32
od packa
tak tohle taky nefunguje ,

Re: Arduino pomoc

Napsal: 30. 11. 2014, 2:00
od lubos
předpokládám že ti vadí postupné aktivování ledek? nebo chceš ušetřit řádky?

Re: Arduino pomoc

Napsal: 30. 11. 2014, 2:38
od packa
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

Re: Arduino pomoc

Napsal: 30. 11. 2014, 5:11
od Mex
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).

Re: Arduino pomoc

Napsal: 30. 11. 2014, 5:43
od packa
tenhle zápis skupiny taky na arduinu nejde

Re: Arduino pomoc

Napsal: 30. 11. 2014, 5:51
od Mex
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.

Re: Arduino pomoc

Napsal: 30. 11. 2014, 5:55
od packa
určítě umí :D , ale nevím jak

Re: Arduino pomoc

Napsal: 30. 11. 2014, 5:59
od Hades
to co poslal Mex musí fungovat, jen ty budeš muset definovat adresy podle zařízení, ale Arduino, jsem na tom jak Mex :D
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;

Re: Arduino pomoc

Napsal: 30. 11. 2014, 6:11
od packa
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);

}

Re: Arduino pomoc

Napsal: 30. 11. 2014, 6:24
od lubos
Tady je to pěkně popsané
http://www.arduino.cc/en/Reference/PortManipulation" onclick="window.open(this.href);return false;

Re: Arduino pomoc

Napsal: 30. 11. 2014, 6:26
od Mex
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.

Re: Arduino pomoc

Napsal: 30. 11. 2014, 6:28
od lubos
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é.

Re: Arduino pomoc

Napsal: 30. 11. 2014, 6:41
od Hades
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
nastaveni skupiny, pokud to nenecházíš...
PORTD = B10101000; // sets digital pins 7,5,3 HIGH

Re: Arduino pomoc

Napsal: 30. 11. 2014, 6:44
od packa
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