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 :clap:

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 :D

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 :D
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 :D

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ě