Arduino pomoc
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).
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.
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.
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.
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 jakjuko 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).
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;
}
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;
}
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);
}
#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řátHades 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);
}
http://www.arduinopassion.com/handy-ard ... -diagrams/" onclick="window.open(this.href);return false;
jasně, tak to nastuduju
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í...

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í...
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.
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.