Arduino pomoc
Teď jsem si všiml, že jsi iniciativně přepsal identifikaci LED z mého:
#define LED1 0x01
#define LED2 0x02
#define LED3 0x04
na svoje
#define LED1 1
#define LED2 2
#define LED3 3
To právě nejde. Ta identifikace musí být tak, že každé LED přísluší jeden bit, pak je můžeš logickou funkcí OR (symbol '|') sloučit do skupin.
Takže když to chceš dekadicky a ne binárně nebo hexadecimálně (což je mnohem názornější), tak:
#define LED1 1
#define LED2 2
#define LED3 4
#define LED4 8
Nejnázornější je to binárně:
#define LED1 b00000001
#define LED2 b00000010
#define LED3 b00000100
#define LED4 b00001000
#define LED1 0x01
#define LED2 0x02
#define LED3 0x04
na svoje
#define LED1 1
#define LED2 2
#define LED3 3
To právě nejde. Ta identifikace musí být tak, že každé LED přísluší jeden bit, pak je můžeš logickou funkcí OR (symbol '|') sloučit do skupin.
Takže když to chceš dekadicky a ne binárně nebo hexadecimálně (což je mnohem názornější), tak:
#define LED1 1
#define LED2 2
#define LED3 4
#define LED4 8
Nejnázornější je to binárně:
#define LED1 b00000001
#define LED2 b00000010
#define LED3 b00000100
#define LED4 b00001000
tohle je přesně ono, pak není třeba nic komentovat a na první pohled je jasné, kteráže LEDka je na kterém pinuMex píše:Teď jsem si všiml, že jsi iniciativně přepsal identifikaci LED z mého:
........................
Nejnázornější je to binárně:
#define LED1 b00000001
#define LED2 b00000010
#define LED3 b00000100
#define LED4 b00001000
p.s.
aha, tak tedy TLESKÁM....
pokud bych to zapsal takhle:
#define LED1 1
#define LED2 2
#define LED3 4
#define LED4 8
tak se to chová špatně : to bych pči volání led3 spínal pin4 , u arduina se to prostě čísluje jinak
a binárně:
Nejnázornější je to binárně:
#define LED1 b00000001
#define LED2 b00000010
#define LED3 b00000100
#define LED4 b00001000
to vůbec nelze
#define LED1 1
#define LED2 2
#define LED3 4
#define LED4 8
tak se to chová špatně : to bych pči volání led3 spínal pin4 , u arduina se to prostě čísluje jinak
a binárně:
Nejnázornější je to binárně:
#define LED1 b00000001
#define LED2 b00000010
#define LED3 b00000100
#define LED4 b00001000
to vůbec nelze
kokni do manuálu toho tvýho překladače, ale dle odkazu, co jsem sem dal já i lubos
PORTD = B10101000; // sets digital pins 7,5,3 HIGH
tak to musí binárně chodit.
Nezapoměl sis nastavit port, jak se má chovat? tohle se mi stávalo na PIC-kách, že jsm si nedefinoval, jak se má port chovat, a po inicializaci byl nastaven jak AD, nikoliv jako IO...
Ale jak jsem psal, arduino a jeho překladač neznám, bude to chtít kouknout do "MAN"
takže
#DEFINE LED1 B00000001;
DDRD = B11111111; / nastavit na OUT
PORTD = LED1;
PORTD = B10101000; // sets digital pins 7,5,3 HIGH
tak to musí binárně chodit.
Nezapoměl sis nastavit port, jak se má chovat? tohle se mi stávalo na PIC-kách, že jsm si nedefinoval, jak se má port chovat, a po inicializaci byl nastaven jak AD, nikoliv jako IO...
Ale jak jsem psal, arduino a jeho překladač neznám, bude to chtít kouknout do "MAN"
takže
#DEFINE LED1 B00000001;
DDRD = B11111111; / nastavit na OUT
PORTD = LED1;
Naposledy upravil(a) Hades dne 30. 11. 2014, 7:26, celkem upraveno 5 x.
Arduino je základní zapojení procesoru ATmega328 s bootloaderem, a k tomu je vývojové prostředí, což je překladač GCC (resp. g++) s knihovnama.packa píše:to vůbec nelze
Použití C++ je tady naprosto nesmyslné, nic to oproti C v této aplikaci nepřináší, ale udělali to prostě tak (předpokládám, že autoři projektu zrovna ve škole probírali objektové programování

No a protože to je klasický procesor a klasický překladač, tak se s tím dá zacházet jako s normální věcí. Takže proto musí fungovat nejjednodušší paralelní zápis na jednotlivé porty, je to ten absolutní základ, který musí zvládat všechny procesory a všechna vývojová prostředí na světě.
chlapy jsem rád že se mi snažíte pomoc , ale arduino se tomu brání a ještě já střevo k tomu takže to nemá dobré výsledky , já už to začal psát hezky za sebou , ale už je toho asi 300 řádků takže by se mi to opravdu hodilo to nějak zjednodušit .
ještě k tomu, co napsal Mex...
u těch skupin, nemělo by být spíše AND než OR
tedy:
#define skupina1 (led1 & led2 & led4) ???
ale to jen hádám z rychlého kouknutí , nestudoval jsem....
Ale připoj si ledky na port a zkus to definování portu (co má dělat) a pak rozsvěcej postupně ledky. A to co sis napsal, si zatím schovej
u těch skupin, nemělo by být spíše AND než OR
tedy:
#define skupina1 (led1 & led2 & led4) ???
ale to jen hádám z rychlého kouknutí , nestudoval jsem....
Ale připoj si ledky na port a zkus to definování portu (co má dělat) a pak rozsvěcej postupně ledky. A to co sis napsal, si zatím schovej

OR. Musíš jedničky skládat, ne z nich dělat průnik.Hades píše:ještě k tomu, co napsal Mex...
u těch skupin, nemělo by být spíše AND než OR
tedy:
#define skupina1 (led1 & led2 & led4) ???
ale to jen hádám z rychlého kouknutí , nestudoval jsem....
Ale připoj si ledky na port a zkus to definování portu (co má dělat) a pak rozsvěcej postupně ledky. A to co sis napsal, si zatím schovej
když použiju binární zápis tak nelze přeložit
pokud použiju zápis :
#define LED1 0x01
#define LED2 0x02
#define LED3 0x04
#define LED4 0x08
#define SKUPINA1 (LED1 | LED2 | LED3)
tak jednotlivé ledky můžu bez problému volat , ale volání skupiny nefunguje - třeba volám led 1,2,3 a rozsvítí to led 6
pokud to zapíšu takhle :
#define LED1 0x01
#define LED2 0x02
#define LED3 0x03
#define LED4 0x04
což se chová uplně stejně jako :
#define LED1 1
#define LED2 2
#define LED3 3
#define LED4 4
což je běžné u arduina tak bliká jen led 3 takže je problém v tom jak definovat skupinu
pokud použiju zápis :
#define LED1 0x01
#define LED2 0x02
#define LED3 0x04
#define LED4 0x08
#define SKUPINA1 (LED1 | LED2 | LED3)
tak jednotlivé ledky můžu bez problému volat , ale volání skupiny nefunguje - třeba volám led 1,2,3 a rozsvítí to led 6
pokud to zapíšu takhle :
#define LED1 0x01
#define LED2 0x02
#define LED3 0x03
#define LED4 0x04
což se chová uplně stejně jako :
#define LED1 1
#define LED2 2
#define LED3 3
#define LED4 4
což je běžné u arduina tak bliká jen led 3 takže je problém v tom jak definovat skupinu
#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(){
digitalWrite(SKUPINA1, HIGH);
delay(PRODLEVA);
digitalWrite(SKUPINA1, LOW);
delay(PRODLEVA);
}
#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(){
digitalWrite(SKUPINA1, HIGH);
delay(PRODLEVA);
digitalWrite(SKUPINA1, LOW);
delay(PRODLEVA);
}
To: packa....
[cite]
You should note, however, that pins 0 & 1 are used for serial communications for programming and debugging the Arduino, so changing these pins should usually be avoided unless needed for serial input or output functions. Be aware that this can interfere with program download or debugging.
[/cite]
ale problěmy by to dělat nemělo
[cite]
You should note, however, that pins 0 & 1 are used for serial communications for programming and debugging the Arduino, so changing these pins should usually be avoided unless needed for serial input or output functions. Be aware that this can interfere with program download or debugging.
[/cite]
ale problěmy by to dělat nemělo