Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Akkor a bekeretezett rész elég lesz?
Kössz az ötletet.
Szia!
Alkalmazásfüggő a dolog. Nem minden esetben kell a kvarc, de a biztosítékbitekre figyelni kell!
Szeretnék segítséget kérni, a C programozás alapjai mennek de a strukúrálás vagy minek nevezzem az még nem.
Építettem egy LiPo akku tesztert mely méri a cellák belső ellenállását, az A/D átalakítója MCP3208, mivel nem túl szabványos SPI protokolja van így az arduino.cc oldalról letöltöttem egy demót hogyan kell használni. A készülék sikerült mér is de azt szeretném hogy az a rész ami az MCP3208-at kezeli egy külön .cpp és .h file-ba legyen, na ennek nem értem a mikéntjét, olyanz már írtam amiben volt egy config.h hogy ne kelljen beállításkor bogarászni a sorok között. Szóval ez a program:
Leírtam benne mit kellene átrakni. Ez lenne az MCP3208.cpp egyenlőre még minden ki van kommentelve:
Ez pedig az MCP3208.h:
A fejlécfájlba (.h) mennek a deklarációk, a forrásfájlba (.cpp) a definíciók. Ez utóbbi már kész van, csak a kommentet kell kiszedni. A fejlécfájl tartalma pedig:
Ezután a főprogramból kiszedheted az átvitt részt (és persze az elején include-olni kell az MCP3208.h-t). Pár szabály, amivel úgy látom, tisztában vagy, de a teljesség kedvéért leírom: Csak fejlécfájlt include-olunk, forrásfájlt soha. Gyári könyvtárakkal ellentétben a saját fájlokat idézőjelek, nem kacsacsőrök között include-olunk. Minden fejlécfájlba kellenek az #ifndef ... #define ... direktívák, mert különben fennáll a veszélye, hogy több helyre is bemásolódik, és merőrül a linker. Ha olyan globális változót szeretnél használni, amely nem csak az MCP3208.cpp-ben látszik, hanem mindenhol, ahová az MCP3208.h fájlt include-olták, akkor a fejlécfájlban az extern kulcsszóval tudod bejelenteni (bővebben). Ha már strukturáljuk a kódot, akkor én átvinném a szoftveres SPI beállításával kapcsolatos dolgokat is (4-7., 88-92. és 98-100. sorok). Például lehetne egy init_adc() nevű függvény, és azt hívnám meg a setupban.
Még nem minden világos, így írtam át a .h fájlt:
A következő a hiba: In file included from LiPo.cpp:3: MCP3208.h:3: error: 'byte' does not name a type
Ennek az az oka, hogy a byte nem standard C típus. Ha ilyen "arduinós" dolgokat akarsz ott használni, akkor a .h fájl elejére:
Viszont nem fogadtad meg, amit a globális változókról írtam. Ha a commandbits változót csak az MCP3208.cpp fájlban szeretnéd használni, akkor ott definiáld, a fejlécben ne! Ha szeretnéd, hogy kívülről is látsszon, akkor a fejlécben:
A forrásfájlban pedig:
A hozzászólás módosítva: Feb 10, 2016
A byte -ot megoldottam unsigned char -ral, a B11000000 -ot 0b1100000 -tal, így ez jó már.
Az MCP3208.cpp -be kellett beleírni az arduino.h-t mert még a digitalWrite sem értette. Még mindig sok sötét folt van, csak sorolom: public: , class , :: jel stb. A hozzászólás módosítva: Feb 10, 2016
Ezek C++ alapfogalmak, úgyhogy szerintem C++ online tutorialokat olvasgass. Illetve ez egy kiváló könyv, tudom ajánlani. Röviden:
Az osztály (class) az objektumorientált programozás alapköve. Olyan, mint az ANSI C-ben megszokott struktúra, csak a tagjai lehetnek függvények is. Például amikor azt mondod, hogy
akkor valójában a SoftwareSerial osztályt példányosítod mySerial néven. Ezután meg tudod hívni a tagfüggvényeit (például mySerial.available()). A public és a private kulcsszavak egy osztály tagjainak a láthatóságát módosítják. A public függvényekhez és változókhoz hozzá lehet férni kívülről (pl. a SoftwareSerial osztály available() függvénye ilyen), a private tagokat viszont csak az osztály saját tagfüggvényei tudják elérni. A :: (scope resolution operator) kicsit bonyolultabb, most csak egy példát mondok rá. Alapesetben egy osztály tagfüggvényei és tagváltozói csak példányonként léteznek, viszont bizonyos (ún. statikus) tagok önmagukban is értelmesek. Ezekre példányosítás nélkül is lehet hivatkozni, így: ValamiOsztaly::StatikusFuggveny().
Szerintem ezek már olyan dolgok amit iskolában lehet csak rendesen megtanulni. Sajnos én ipari elektronikai technikusként tanultam de a mai világban nem sokat ér az hogy tudom mi B osztályú erősítő, az általánosban basic es Videoton gépek voltak ezért is szeretek ma is abban programozni (BASCOM), középiskolában pascal volt egy évig.
Ahová jártam ott voltak programozó évfolyamtársak, bele is olvasgattam a C könyvükbe, persze amikor odaértem hogy I= I+1 helyett I++ van le is tettem a könyvet hogy na ekkora baromságot, pedig nem kellett volna, azt is furcsállom hogy a C ben van sok olyan matematikai formula amit sehol nem tanultunk általános matematika szintjén.
Sziasztok.
Valaki tudna segíteni? Azt jelzi hogy feltölti de valószínű hogy nem mert ha kilépek programból meg vissza akkor ugyan úgy üres. Mitől lehet ? Mert már több órája próbálkozok de ugyan úgy semmi
Nem teljesen értem a kérdést... pontosan mi üres?
Már semmi gond működik rendesen.
Annyi kérdésem lenne hogy amit feltöltök rá azt hogy tudom megnézni ha kihúzom meg vissza dugom hogy mi van az arduino-n rajta ?
Azt nem tudod megnézni, feltöltéskor visszaellenőrzi és kiírja hogy sikerült. Utána az benne van ameddig mással felül nem írod.
Értem
Köszönöm a segítséget. Csak pár hónapja kezdtem bele és nem tiszta minden.Magyar oldalakon meg nem nagyon találok róla semmit hogy minek hogy kel pontosan lenni. PIC-nél is ugyan ez a helyzet ami rá van írva azt nem tudom megnézni csak max újra ráírni valamit ?
Az attól függ. Ha le van zárva (írásvédelem) akkor nem olvasod vissza sehogy.
Visszaolvasni olyannak ahogyan beleírtad sose fogod (tehát kommentek, változónevek, stb), mert a programot a fordító átfordítja gépi-kódra, tehát amit most (vagyis akkor látsz amikor feltöltötted) nem fogsz többet. A visszatöltött kódot viszont (ha nincs levédve) letöltheted és egy másik ugyanolyan PIC-be kiírhatod, másolhatod magyarán. De egy eladásra szánt elektronikába levédik, mert senkinek nem hiányzik hogy másolják a termékét. Ezt úgy képzeld el, mint most ha belenéznél egy .exe programfájlba, akkor abban is csak "zagyvaságot" látsz, és gondolhatod hogy a program írója nem ezt látta. De ez a zagyvaság a számítógép számára pont érthetô. A hozzászólás módosítva: Feb 11, 2016
Erről az jutott eszembe, nem létezik az arduino gépi kódra disassembler?
Szinte minden processzorra létezhet disassembler (az Arduino pedig nem processzor, csak egy fejlesztôi platform). De a disassemblerel nem az eredeti állapotot állítod vissza, hanem egy olyant, ami (legjobb esetben) újra átfordítható kódot ad (de mivel a változók nevei és a kommentek elvesztek, illetve a program struktúrája is (a fordító programok optimalizálják a kódot) nehéz lesz megérteni hol/mit/miért csinál a kód.
Persze, hogy elvesznek a megjegyzések, ami nincs benne, azt nem is lehet disassemblálni...
De hogy a változó neveket is átszerkeszti azt nem tudtam...
Változó nevek csak neked kellenek, valóságban azok csak a proci memóriájának egy-egy kis szegmensei, azok a gépi-kódban csak a memóriacímet tartalmazzák. Ugyanígy a függvények helyett is csak a programtár egy pontjára utaló szám lesz (ugrási cím). Vagy az sem, csak relatív cím (pl. táblázat).
A hozzászólás módosítva: Feb 11, 2016
Sziasztok! Az lenne a kérdésem, hogy egy ilyen programozó jó nanóhoz, unohoz, és megához is? Illetve esetleg due-vel működhet? Előre is köszi!
Minek programozó az arduinok alapból tartalmazzák a programozót annyi az egész, hogy feltelepíted az arduino programot usb-vel csatlakoztatod az arduinot és már programozhatsz is
Az Arduino bootloadert tartalmaz, ezért nem kell külső programozó. Ez soros porton keresztül betölti a programot. Az általad felsorolt lapokon van USB-soros konverter, ezért csak egy USB kábelre van szükséged.
Használhatsz egy Arduinot is programozónak. Feltöltöd rá az Arduino as ISP programmer sketch-et, utána már mint normál programozó működik. Neten utána tudsz nézni ennek, hogy is működik.
Köszi, utána nézek, azért kell, mert van 2 ardum, aminek rossz a soros konvertere, de maga a lap jó, és nem akarom kidobni.
Sziasztok!
Van ez a kód, amihez meg is csináltam a hardvert, működik szépen. Viszont az a kérdésem, hogy hogyan tudnék más adatokat is kinyerni az autóból? Ez a program most alap dolgokat ír a kijelzőre, de én kíváncsi lennék például a gázpedál állására és a szívócső nyomására is. Ebben kérném valaki segítségét. Köszi.
Akkor neked egy TTL soros-USB adapter kellene, de persze ezt is megrendelheted mert nem összeg egyik sem.
Itten olvastam hogy HD4478 lcd-nel max 8 speci karaktert lehet definialni. Ez igaz ?
Ha tobb ilyen karakterre van szuksegem, akkor azt a loop reszbe, vagyis helybe lehet definialni es amikor ezt a lepest atlepi az Arduino akkor elfelejti oket es hasznalja normalis modon az elore definialtakat (ami a ram-ba van) ? Vagy pedig ha osszesen tobb mint 8 ilyen karakterem van akkor mindegyiket helybe kell definialni, letrehozni (a flash-ba) ? |
Bejelentkezés
Hirdetés |











