Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   91 / 863
(#) proksa1 válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
while( !done ){
len = radio.getDynamicPayloadSize();
done = radio.read(&RecvPayload,len);
delay(5);
}


ezzel van gondja, ha csak simán radio.read(.... ); van írva akkor jó, de visszaírom hogy done = radio.read(......); akkor megint kiírja a hibát
(#) steelbird válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
A done az nem tiltott kifejezés? Vannak rendszer által használt kifejezések, amiket nem lehet változó azonosítóként használni. Ahelyett próbálj meg más változónevet adni esetleg.
(#) proksa1 válasza steelbird hozzászólására (») Márc 5, 2015 /
 
Módosítottam de sajnos így sem jó. Szerintem ha tiltott lenne azt már a deklarációnál kidobta volna.
(#) steelbird válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
Az igaz.
A 91. sorban a radio.read(&RecvPayload,len) függvény mit ad vissza? Boolean értéket, vagy valami mást?
Azért kérdezem, mert a done változód Boolean -ra van definiálva a 87. sorban.
A hozzászólás módosítva: Márc 5, 2015
(#) proksa1 válasza steelbird hozzászólására (») Márc 5, 2015 /
 
Booleant ad vissza, meg is néztem ez volt az első gyanúm. Olvasgattam googlen másnak is volt ez a problémája , de nem láttam rá megoldást csak h átirták teljesen az egész részt.
A hozzászólás módosítva: Márc 5, 2015
(#) csatti2 válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
Valami furcsaság lesz nálad. Beszereztem a kívánt könyvtárat és simán lefordult a fenti kódod.
Annyit kellett csak módosítanom, hogy a printf.h-t mivel helyi fájl "" közé tettem ( #include "printf.h"). A <> csak a távoli könyvtárakra vonatkozik.
(#) proksa1 válasza csatti2 hozzászólására (») Márc 5, 2015 /
 
Mellékeltem az ino file-t, ez is lefordul nálad? a printf-et módosítottam ahogy írtad, de nincs hatással a dologra.

Itt egy srácnak ugyanez a probléma:
http://forum.arduino.cc/index.php?topic=270504.0

nrf_tx.ino
    
(#) csatti2 válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
Igen. Ez is lefordul.
(#) proksa1 válasza csatti2 hozzászólására (») Márc 5, 2015 /
 
hmmmm. 1.6 sdk?
(#) csatti2 válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
1.5-el is lefordul és 1.6-al is.
(#) proksa1 válasza csatti2 hozzászólására (») Márc 5, 2015 /
 
Ettől az arduino sdk-tól mindig idegenkedtem, de most sem sikerült megszeretnem
(#) proksa1 válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
Na hát az a helyzet, hogy több RF24.cpp van itt és egyikben boolenannal tér vissza de a másikban voiddal. De ami booleannal tér vissza az a RaspberryPi-hez való. Így viszont érdekes neked hogy fordult le mikor voidos a read függvény?
(#) csatti2 válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
Ja, hogy te összevissza kevered a könyvtárakat...

  1. bool RF24::read( void* buf, uint8_t len )
  2. {
  3.   // Fetch the payload
  4.   read_payload( buf, len );
  5.  
  6.   // was this the last of the data available?
  7.   return read_register(FIFO_STATUS) & _BV(RX_EMPTY);
  8. }


Ez a kódja a függvénynek...
(#) proksa1 válasza csatti2 hozzászólására (») Márc 5, 2015 /
 
Amelyikben ez van ott nekem az elején van egy WiringPi nevű include is, azt kitörölted?
(#) icserny válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
Idézet:
„nrf_tx.ino: In function 'void nRF_receive()':
nrf_tx.ino:91:14: error: void value not ignored as it ought to be
Error compiling.”

Ha a könyvtárban "void"-nak van deklarálva a függvény, akkor nincs visszatérési értéke, tehát nem szerepelhet értékadásban, kifejezésben!
(#) erdeidominik1999 válasza csatti2 hozzászólására (») Márc 5, 2015 /
 
Köszi a választ! Tehát Akkor nyugodtan megadhatom binárisan is? De szereintem hibát fog írni, mert nem annyi lesz, amennyi a tömb értéke.
(#) proksa1 válasza icserny hozzászólására (») Márc 5, 2015 /
 
Ez világos, csak kiderült hogy két RF24.cpp van amik nem egyformák.
(#) csatti2 válasza proksa1 hozzászólására (») Márc 5, 2015 /
 
Semmi ilyesmi nincs az elején. Nem töröltem ki, annyira nem érdekel .

Szedj le egy friss verziót a netről (Link) és töröld ki a meglévő szemetet a library-ból. Valószínűleg összevissza kevertél mindent és emiatt nem működik az egész.
(#) csatti2 válasza erdeidominik1999 hozzászólására (») Márc 5, 2015 /
 
Ezt, most nem igazán értem... A tömb tartalmától függ (legalábbis feltételezem, nem álltam neki az egész kódot átolvasni), hogy mely LED-eket gyújtja be a uC. Mi az, hogy nem annyi lesz mint a tömb értéke? (eleve, nincs is olyan mint a tömb értéke, ha matematikailag fogalmazzuk is meg, akkor is mátrixról beszélünk és ott is legfeljebb a determinánsának van értéke, tehát legfeljebb a tömb elemeinek az értékeiről beszélhetünk)

Ha tehát binárisan adod meg a hexadecimális helyett a tömb elemeit, az teljesen mindegy a fordító számra és nem fog emiatt hibát kiírni (azt a kissé lényegtelen részletet most hagyjuk, hogy a 0b nem része a c++ szabványnak, hiszen ennek ellenére az Arduino azért megeszi).
(#) proksa1 válasza csatti2 hozzászólására (») Márc 5, 2015 /
 
Igen az lesz a legjobb, köszönöm!
(#) erdeidominik1999 válasza csatti2 hozzászólására (») Márc 5, 2015 /
 
Köszi, értem és működik is, de az miért van, hogy fordítva működik, tehát a 0 a bekapcsolva és az 1 a kikapcsolva?
(#) csatti2 válasza erdeidominik1999 hozzászólására (») Márc 5, 2015 /
 
Gyorsan átfutottam a programot, mindenféle kapcsolási rajz ismerete nélkül. A működését illetően, amire tippelek. Ugye van két koordináta. X és Y. Az egyik koordináta irányába 4 kimenettel kiválasztod az aktuális munkasort [G-re aktiválódik a kiválasztás]. A másik irányba soros => párhuzamos átalakítással (két 8 bites chip?) feltöltöd a kiválasztott sor tartalmát (erre lesz való a CLK [órajel] és a DI [adat] kimenet). Mikor elment az adat a LAT [latch] frissíti a a chipek tartalmát az új adatokkal.
Na mármost a kérdésedre a válasz a LED panelek kialakításában keresendő. Ha közös katódos, akkor a LED-ek árama egy közös pont felé halad (ezt valószínűleg a panelen látható kis tranzisztorokon keresztül vezetik át [soronként egy tranzisztor, egyben a tranzisztor nyitásával választják ki a sort], normál IO-nak sok lenne a közös áram) a föld felé. Az áram pedig a kis 8 bites soros/párhuzamos átalakító chipekből ered (current source, áram forrás) (ilyenkor az 1-es adat világít, a 0 pedig nem). Természetesen van még a LED-ekhez áramkorlátozó soros ellenállás is, de ez a működési elv lényege szempontjából érdektelen.
Ha közös anódos, akkor a közös tranzisztor felől halad az áram a soros/párhuzamos chip-ek felé. Ilyenkor csak akkor haladhat ha a chip lehúzta az adott kimenetét a földhöz (current sink, áram nyelő). Azaz ha 0 adat van akkor világít a LED. Ha 1 akkor pedig ugye zárva marad a LED és nem világít.

Remélem érthető voltam...
A hozzászólás módosítva: Márc 5, 2015
(#) erdeidominik1999 válasza csatti2 hozzászólására (») Márc 5, 2015 /
 
Köszi, érthető voltál, viszont még egy problémával szembesültem, ha a loop-ba teszek delay-t, akkor nem működik. Erre mi a megoldás? Előre is köszi!
(#) Panhard hozzászólása Márc 6, 2015 /
 
Sziasztok!
ATMEGA128A chiphez létezik bootloader? Amit a program kezelni is tud? Vagy kompatibilis vele az Arduino könyvtárában lévők közül valamelyik?
Azért kérdem, mert kb: 50kb-os programhoz ezt választanám, mert ezt még be tudom forrasztani. (TQFP64)
(#) GPeti1977 válasza Panhard hozzászólására (») Márc 6, 2015 /
 
Nincsen, de atmega1284 viszont van, az dip40 tokos.
(#) andykaaa válasza Panhard hozzászólására (») Márc 6, 2015 /
 
Link
Szerintem ez megy.
(#) csatti2 válasza erdeidominik1999 hozzászólására (») Márc 6, 2015 /
 
Akkor ezek szerint mégsem voltam annyira érthető.

Ha szinkron módban "írod" ki az adatokat a kijelzőkre, akkor nem használhatsz delay-t. Olyan rövid időre gyuladnak ki ugyanis a LED-ek, hogy nem fogod látni ha csak egyszer-egyszer gyújtod fel őket.

A megoldás az, hogy asszinkron módon működteted a LED kijelzőt a programod többi részéhez képest. Magyarán úgy kell módosítanod a LED kijelző vezérlését, hogy megszakításból is helyesen működjön. Ilyenkor a uC megadott időközönként felfüggeszti a loop-ban futó kódod működését és elvégzi a kijelző frissítését számodra "láthatatlanul".

Egyébként mindig is ez a helyes irány, a "költségesebb" feladatot a loopba helyezni, a kevésbé költségeset pedig a megszakításba. Például TFT kijelző meghajtásánál a kijelző frissítése a költségesebb, a méréseket javasolt megszakításból végezni. Egy ilyen LED panelnél - ahol a frissítési sűrűség miatt amúgy is javasolt megszakítást használni - pedig a költségesebb rész általában nem a panel kezelése.
(#) Panhard válasza andykaaa hozzászólására (») Márc 6, 2015 /
 
Kipróbáltam, ez a megoldás működik Arduino 1.0.5-nél. Az újabbaknál nem lehet egy az egyben kicserélni a boards.txt fájt, azoknál bele kell ápolni az ATMEGA128-as processzor adatait. De jó lesz, köszi.

@GPeti1977 Azért nem jó a DIP40 tok, mert hatalmas.
(#) GPeti1977 válasza Panhard hozzászólására (») Márc 6, 2015 /
 
A TQFP44 az meg kisebb.
(#) Panhard válasza GPeti1977 hozzászólására (») Márc 6, 2015 /
 
De azt még simán be tudom forrasztani, a TQFP100-at már nem.
Következő: »»   91 / 863
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem