Arduino pomoc

Odpovědět
Uživatelský avatar
Hades
Příspěvky: 1196
Registrován: 11. 10. 2012, 10:59
Bydliště: Praha; Mimoň

30. 11. 2014, 8:36

To: packa


tohle projde?

void setup()
{
DDRD = B11111110;
}

případně

void setup()
{
DDRD = 0B11111110;
}
juko
Příspěvky: 48
Registrován: 30. 7. 2012, 10:46
Bydliště: IPD

30. 11. 2014, 8:38

Ahoj,
ale nemôžeš použiť digitalWrite na celý port. To je funkcia ktorá nastavuje jeden (definovaný) pin.
Použi zápis ako je v priklade ktorý Ti tu už dávali.

For example;
PORTD = B10101000; // sets digital pins 7,5,3 HIGH

ale namiesto B10101000 použi skupinu.

EDIT:
Tým DDRD nastavíš port ako výstupný a PORTD naň zapíšeš hodnotu. (Arduino neprogramujem, ale je to v tom manuáli čo Ti dávali odkaz).
Naposledy upravil(a) juko dne 30. 11. 2014, 8:42, celkem upraveno 1 x.
Mex
Příspěvky: 10287
Registrován: 6. 2. 2014, 10:29

30. 11. 2014, 8:40

ditilWrite umí ovládat jenom 1 pin.

Proto už poněkolikáte píšu:
Použij:

PORTD |= SKUPINA1;
delay (PRODLEVA);
PORTD &= ~SKUPINA1;
PORTD |= SKUPINA2;
delay (PRODLEVA);
PORTD &= ~SKUPINA2;

EDIT: Teď vidím, že už na to odpověděli jiné přede mnou.
Uživatelský avatar
packa
Příspěvky: 7047
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

30. 11. 2014, 8:44

juko píše:Ahoj,
ale nemôžeš použiť digitalWrite na celý port. To je funkcia ktorá nastavuje jeden (definovaný) pin.
Použi zápis ako je v priklade ktorý Ti tu už dávali.

For example;
PORTD = B10101000; // sets digital pins 7,5,3 HIGH

ale namiesto B10101000 použi skupinu.

EDIT:
Tým DDRD nastavíš port ako výstupný a PORTD naň zapíšeš hodnotu. (Arduino neprogramujem, ale je to v tom manuáli čo Ti dávali odkaz).
hele děkuju , ale to už je na mě moc , to arduino umí pracovat přímo s čísly pinu na arduinu-( ikdyž neodpovídají pinum procesoru) a těm by měla jít i přiřadit i skupina , jen jsem se nikde nedočet jak
Mex
Příspěvky: 10287
Registrován: 6. 2. 2014, 10:29

30. 11. 2014, 8:53

A tohle bys prosím mohl pro klid duše zkusit?
Ať vím (víme), že i na Arduinu se dá psát normální SW.
Díky.

*****************************************

#define LED1 0x01
#define LED2 0x02
#define LED3 0x04
#define LED4 0x08

#define SKUPINA1 (LED1 + LED2 + LED3)
#define SKUPINA2 (LED3 + LED4)
#define PRODLEVA 500


void setup()
{
pinMode(0x01, OUTPUT); // nastaveni pinu 1 jako vystup
pinMode(0x02, OUTPUT); // nastaveni pinu 2 jako vystup
pinMode(0x04, OUTPUT); // nastaveni pinu 3 jako vystup
pinMode(0x08, OUTPUT); // nastaveni pinu 4 jako vystup

}

void loop(){

PORTD |= SKUPINA1;
delay (PRODLEVA);
PORTD &= ~SKUPINA1;
PORTD |= SKUPINA2;
delay (PRODLEVA);
PORTD &= ~SKUPINA2;

}
Uživatelský avatar
Hades
Příspěvky: 1196
Registrován: 11. 10. 2012, 10:59
Bydliště: Praha; Mimoň

30. 11. 2014, 8:58

tak ještě jednou...

#define sk1 (00000010);
#define sk2 (00000110);
#define sk3 (00100110);
#define sk4 (00101110);

void setup()
{
DDRD = B11111110;
}

void loop()
{

PORTD = sk1;
delay (5000);
PORTD = sk2;
delay (5000);
PORTD = sk3;
delay (5000);
PORTD = sk4;
delay (5000);

}
Uživatelský avatar
packa
Příspěvky: 7047
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

30. 11. 2014, 8:59

ad MEX


tohle prošlo a led na pinu 1 bliká , led na pinu 2 svítí , ostatní led nic , ledky mám zapojeny proti zemi
Naposledy upravil(a) packa dne 30. 11. 2014, 8:59, celkem upraveno 1 x.
Uživatelský avatar
Hades
Příspěvky: 1196
Registrován: 11. 10. 2012, 10:59
Bydliště: Praha; Mimoň

30. 11. 2014, 8:59

tak Mex byl rychlejsí, je to stejný, jen jiný zápis :D
Uživatelský avatar
packa
Příspěvky: 7047
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

30. 11. 2014, 9:02

Hades píše:tak ještě jednou...

#define sk1 (00000010);
#define sk2 (00000110);
#define sk3 (00100110);
#define sk4 (00101110);

void setup()
{
DDRD = B11111110;
}

void loop()
{

PORTD = sk1;
delay (5000);
PORTD = sk2;
delay (5000);
PORTD = sk3;
delay (5000);
PORTD = sk4;
delay (5000);

}
a tohle se chová : rozsviti led 3 pak led 5 a ta v intervalu 5 sekund bliká , led 3 svítí pořát
Uživatelský avatar
Hades
Příspěvky: 1196
Registrován: 11. 10. 2012, 10:59
Bydliště: Praha; Mimoň

30. 11. 2014, 9:06

takže nám dej dohromady, jak jsou zapojeny ty piny z desky na procesor.... ať to nemusíme hledat :D
Uživatelský avatar
packa
Příspěvky: 7047
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

30. 11. 2014, 9:08

http://www.arduinopassion.com/handy-ard ... -diagrams/" onclick="window.open(this.href);return false;
Uživatelský avatar
Hades
Příspěvky: 1196
Registrován: 11. 10. 2012, 10:59
Bydliště: Praha; Mimoň

30. 11. 2014, 9:22

jasně, tak to nastuduju :D
jde spíš o to, jak jsou ty piny v liště zapojený....
vzal bych 8 LEDek, napichal je na D-PORT a poslal sekvenci

#define sk0 (00000001);
#define sk1 (00000010);
#define sk2 (00000100);
#define sk3 (00001000);
#define sk4 (00010000);
#define sk5 (00100000);
#define sk6 (01000000);
#define sk7 (10000000);

#define PRODLEVA 5000;

void setup()
{
DDRD = B11111111;
}

void loop()
{
PORTD = sk0;
delay (PRODLEVA);
PORTD = sk1;
delay (PRODLEVA);
PORTD = sk2;
delay (PRODLEVA);
PORTD = sk3
delay (PRODLEVA);
PORTD = sk4;
delay (PRODLEVA);
PORTD = sk5;
delay (PRODLEVA);
PORTD = sk6;
delay (PRODLEVA);
PORTD = sk7;
delay (PRODLEVA);
}

postupně by se ti měly rozsvítit po jedné s prodlevou.
zapiš si pořadí...
Mex
Příspěvky: 10287
Registrován: 6. 2. 2014, 10:29

30. 11. 2014, 9:33

Takže pin D0 je vstup z USB/serial převodníku. Ten by se neměl obracet jako výstup, protože jinak pustíš 2 výstupy proti sobě.

Takže já bych udělal pokus:

// *********************************

void setup()
{
DDRD = B11111110;
}

void loop()
{
unsigned char i, hodnota;

hodnota = B00000001;
for (i=0; i<7; i++) {
PORTD = hodnota;
delay (PRODLEVA);
hodnota = hodnota << 1;
}
}

// *********************************

Tohle musí po 1/2 sekundě posunovat svíticí LED. Tím ověříš, že LED jsou zapojené OK a že normální způsob ovládání portu funguje.
Pokud to pojede, tak nadefinování skupin atd. už je jenom rutina.
Uživatelský avatar
Hades
Příspěvky: 1196
Registrován: 11. 10. 2012, 10:59
Bydliště: Praha; Mimoň

30. 11. 2014, 9:38

no jasně, jěště ho blbni cyklem :D
jen ať si odzkouší ty výstupy.
IMHO, po naprogramování a spuštění programu by pak měl být i D0 nastaven jako výstup. Alespoň všechny PIC-ky takhle fungují
Uživatelský avatar
Hades
Příspěvky: 1196
Registrován: 11. 10. 2012, 10:59
Bydliště: Praha; Mimoň

30. 11. 2014, 9:50

To: Mex

tohle jsem neznal...

hodnota = hodnota << 1;

:D
Odpovědět

Zpět na „Ostatní elektronika“