Stránka 2 z 10
Re: Arduino pomoc
Napsal: 30. 11. 2014, 6:50
od Mex
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
Re: Arduino pomoc
Napsal: 30. 11. 2014, 6:57
od Hades
Mex 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
tohle je přesně ono, pak není třeba nic komentovat a na první pohled je jasné, kteráže LEDka je na kterém pinu
p.s.
aha, tak tedy TLESKÁM....
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:04
od packa
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
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:13
od Hades
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;
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:20
od Mex
packa píše:to vůbec nelze
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.
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ě.
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:33
od packa
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 .
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:40
od Mex
Možná by bylo dobré, kdybys napsal co přesně nejde.
Nejde to přeložit (hlásí chyby)?
Nebo to přeložíš a nefunguje?
Když sem vlepíš kousek (co nejmenší, ideálně tak max. 10 řádků) který nefunguje, tak určitě na něco přijedeme.
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:45
od Hades
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

Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:46
od Mex
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

OR. Musíš jedničky skládat, ne z nich dělat průnik.
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:51
od packa
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
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:55
od Mex
A co znamená "volání skupiny" ?
To je tohle ?
PORTD |= SKUPINA1;
nebo to znamená něco jiného?
Proto říkám: pošli sem co nejmenší kousek, ale kompletního programu.
Re: Arduino pomoc
Napsal: 30. 11. 2014, 7:57
od packa
#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);
}
Re: Arduino pomoc
Napsal: 30. 11. 2014, 8:05
od Hades
Mex píše:
OR. Musíš jedničky skládat, ne z nich dělat průnik.
sypu si hlavu popelem

Re: Arduino pomoc
Napsal: 30. 11. 2014, 8:23
od Hades
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
Re: Arduino pomoc
Napsal: 30. 11. 2014, 8:34
od packa
jasně to vím s tím problém není to chodí v pohodě