Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Szia!
Ha felepulok akkor szívesen megirnek pár függvényt neked. Alap dolgok mennek azért. Van itthon nanom és LCD ellenállás relé stb. Ha küldenel pár részletesebb leírást akkor ránéznek. De szerintem itt is sokan segítenek nyilvánosan összehozni a kódot. Már ha nem titkos. Bocs de nem tudok telefonon rendesen írni.
Szerintem ha egyszeri/folyamatos fejlesztésre/karbantartásra keresel embert, akkor annak inkább az apróban lenne a helye. Ha pedig egy konkrét probléma megoldásában keresel segítséget, akkor írd le a problémádat, és megpróbálunk segíteni.
A hozzászólás módosítva: Márc 9, 2019
Sziasztok !
Találtam egy szimpatikus Arduino-s projectet. (a kapcsolási rajz) Mivel teljesen kezdő vagyok a programozásban, rögtön két probléma merült fel: az egyik hogy hibát jelez a fordító a 211-es sornál, ami az általam talált info szerint azért van mert az Uno-ban - és a Pro miniben - nincs ilyen port. Mit kell módosítanom ?
A másik kérdés, hogy át lehet-e írni a programot SPI OLED-re ? ( mert ilyenem van - egyenlőre) Az én tudásom szerint a D2,3, 5,6, és 13 még szabad. (írtam a szerzőnek, de konkrét megoldást nem kaptam tőle) A hozzászólás módosítva: Márc 9, 2019
Hiba: legalább a kódsort és a hibaüzenetet írd már be.
SPI kijelző: lehet, kérdés hogy mennyi munka. Egy pin kell, egy chipselect a kijelzőnek, mert a MAX chip is SPI buszon ül. A kódot át kell írni, váltogatnod kell, hogy melyik SPI eszközzel legyen aktív a kommunikáció. Egyébként sokkal több pin szabad még, analóg pin-t is használhatsz digit ki/bemenetként.
'DDRE' was not declared in this scope - hibaüzenet jelenik meg ennél a résznél(5. sor):
Nem akarom terhelni a topikot a teljes program itt található. A hozzászólás módosítva: Márc 9, 2019
Most vagy vak vagyok, vagy szivatsz. Most 5. sort írsz, 4 sort látok. Az előbb 211. sort írtál, a 211. sor a forrásban:
Amúgy valóban nincs DDRE uno/nano/pro mini, vagyis semmilyen atmega 328-ra épülő uC-ben, DDRA, B, C és D van. A megfelelő pinhez tartozó regisztereket (Direct Data Register) piszkáld. A hozzászólás módosítva: Márc 9, 2019
Bocs nem szivatni akarlak !....(csak még ez a kód beillesztés új nekem....:flame
Tehát írtam a hsz.-t beillesztettem a kódot és az előnézetben az 5. sorban mutatta... Szóval
erre a sorra ugrik a fordító és írja ki a 'DDRE' was not declared in this scope üzenetet. A linkelt eredeti programban a 106. sorban található. (ha úgy szoktátok csinálni beillesztem a teljes kódot..)
A probléma az, hogy ez a kód Arduino Micro-ra van írva, ami teljesen más Atmega chip-et tartalmaz, mint ami neked van. Azon ATmega32U4 van, az Uno-n (és Nano-n) ATmega328.
A kettő nem kompatibilis, nem csak ezt az egy sort kell átnézni, hanem _minden_ egyes ilyen regiszterpiszkálást (DDRx = Data Direction Register x), és a PORTx-eket, és a stb. Vagy az egész kódot kell átnézni és - többé-kevésbé - átírni, vagy egy másik lapot beszerezni. Az utóbbira ezeket találtam: Bővebben: Link Bővebben: Link Ez utóbbi nyilván Kínából fele- vagy harmadennyiért is megvehető, csak ki kell várni. Illetve kérdés, hogy ez programozható-e "direktben" USB-n, vagy még programozót is kell hozzá csinálni (pl. az Uno-ból). szerk: bár jobban megnézve csak az elején tolta a kungfut a csávó, szóval szerintem a DDRx és PORTX sorokat kommentezd ki, és 2 sorral fentebb a kikommentezett pinMode sor elől vedd ki a kommentet. A hozzászólás módosítva: Márc 9, 2019
Így már világos. Kezdőként biztosan nem vállalkozom a kód átírására. Majd még eldöntöm, hogy keresek egy másik kapcsolást vagy Kínából rendelek egy Micro-t. (nem adok hétezret érte a "Húúúú"-nál, az biztos...:nono)
Hálás köszönetem, hogy foglalkoztál a problémámmal !.... szerk.: egyszerre írtunk. Majd foglalkozok vele még egy kicsit - azzal is tanulok. A hozzászólás módosítva: Márc 9, 2019
Az előző kommentet szerkesztettem: bár jobban megnézve csak az elején tolta a kungfut a csávó, szóval szerintem a DDRx és PORTX sorokat kommentezd ki, és 2 sorral fentebb a kikommentezett pinMode sor elől vedd ki a kommentet.
Illetve még (legalább) 1 helyen, 213-as sor:
Itt a DRDY_PIN nevű pin-t olvassa, ami a MAX "hőelemkezelő" chip DRDY-jéről jön. Szerintem ez Data Ready lenne, ezzel jelzi a chip, hogy elkészült a méréssel és ez olvasható. És mivel úgy gondolom, hogy ezt a 10-es pin-t az elején inputra állítja és felhúzza pullup-pal, ezt a max chip jó eséllyel úgy jelzi, hogy földre húzza a pin-t. És _ha_ ez így van, akkor ez a sor kiváltható így:
Amúgy annyira bírom az ilyet. Itt van egy kód, simán hordozható lenne ha nem "frenkizik" az illető, hanem az egyszer lefutó setup kódban regiszterpiszkálás helyett csak simán használná beépített pinMode parancsot, ami pont ugyanezt csinálja meg. De nem, elő kell adnia magát... A hozzászólás módosítva: Márc 9, 2019
Ööö - hatvanpár évesen ezt már nem biztos hogy ilyen szinten meg tudom tanulni...De igyekszem mert állítólag sosem késő.
Minden tiszteletem, hogy hatvanpár évesen ilyesmiket tanulsz!
Egyébként átírtam a kódot úgy, ahogy gondolom. Az értelmével nem foglalkoztam, mechanikusan csináltam. (Illetve a MAX datasheet-ben megnéztem, jól tippeltem a DRDY lábat. Tetszik ez a chip, bár nekem MAX6675 van itthon - és elnézve az árát ez is marad.) Illetve a 28. és a 131. sorban a CS konstansnevet kicseréltem CS_MAX31856-ra, mivel ez a hőelem chip-hez tartozik. És felvettem a 33. sorban a 13-as pint (ami ugye a LED) az SPI kijelzőhoz tartozó chipselect pin-ként CS_SPIOLED néven. Ezt csak úgy, értelme még nincs.
Ó, köszönöm ! Már lassan 50 éve a hobbim az elektronika - anno még a germánium tranyó is nagy kincs volt....Csak volt cirka 30 év kihagyás - család munka stb.
Nekem is "csak" 6675 van, azzal már kísérletezgettem. Úgy néztem, hogy teljesen kompatibilis módon kommunikál mint a 31856. Nagyon köszönöm, hogy ilyen sokat foglalkozol vele(m) ! Sokat tanulok egy ilyen módosításból, mert szeretném azért meg is érteni az utasításokat - a program működésének a lényegét. Ma már késő, túl fáradt vagyok, de majd legközelebb belevetem magam... Köszi !
Nagy különbség a 2 MAX chip között, hogy a 31856 adatlapja tartalmazza ezt: "The thermocouple inputs are protected against overvoltage conditions up to ±45V". A 6675 nem tudom mit szólna ahhoz, ha megjelenne a bemenetén 24V...
A módosítás egyébként csak jelképes volt, az eredeti kódban szinte mindenhol benne hagyta kikommentezve az arduino utasításokat, amiket "direkt" regiszter, port, stb. írással/olvasással oldott meg. Lefordítva az adott arduino utasítás is pont ugyanezt csinálja, csak sokszor még mást is, és lassabban, szóval néha szükség van ilyesmire. De itt szerintem pont nem, a setup() blokkban pont semmi jelentősége nincs ennek. Illetve később 2 helyen olvasott még direktben pin értéket, de szerintem se a thermocouple "data ready" pin-jének olvasása, se a sleep gomb állapotának vizsgálata nem indokolja ezt.
Üdv Mindenkinek!
Természetesen az előző hozzászólásomban lévő ajánlat díjazás ellenében értendő. Azért is bátorkodtam kiírni, hogy szakit keressek, mert nincs időm kísérletezni. A feladatokat igyekszem minden esetben előre pontosan meghatározni. Amennyiben sikerült egy projektet pontosan megfogalmazni, hogy mindkettőnk számára érthető, akkor egy árajánlatot kérek. Így a projektbe be tudom építeni az ajánlatba foglalt árat és minden a helyén van. Az eszköz (arduino) kiegészítő alkalmazás vezérlés, mint pozicionáló, lengető egység, biztonsági felügyelet, stb. Talán így érthetőbb: https://www.facebook.com/autocobot/ Üdv!
Nem semmi. Nagyon érdekelne a dolog de nem vallalnam. Azonban szívesen beszallnek megfigyelőként. Mechatronikai mérnök suliba járok éppen. Első éves vagyok ugyan de programozgattam már. A mátrix műveletek, koordináta transzformaciok az előző végzettsegemhez közel állnak. Szívesen csatlakoznek.
Sziasztok!
I2C címzéssel kapcsolatban kérnék segítséget. Arduioval szeretnék leszimulálni egy PCF8574 IC-t, ehhez a beépített Wire könyvtárat használom slave módban kommunikálva. Ennél az IC-nél más a cím amikor írnak bele és más amikor olvasnak belőle. Esetemben íráskor a 0x40-es címre kell írni, olvasáskor pedig a 0x41-ről kell olvasni. Szóval a nulladik bit állítja az R/W irányát. A gondom az, hogy a függvénykönyvtárban elvileg csak a setup részben tudok egyszer címet definiálni a Wire.begin() használatával. Egyes írás/olvasási műveletenként úgy látom, nem nagyon lehet egyedi címeket megadni. Viszont azt olvastam, hogy a megadott cím elvileg 7 bites, így arra gondoltam, nem lehetséges, hogy a függvény automatikusan, magától kezeli a nulladik bitet az R/W irányától függően? Vajon jól sejtem-e, tényleg így van-e? Ha így van, akkor a Wire.begin() utasításnál csak a cím legfelső 7 bitjét kell megadjám? Tehát esetemben 0x20-at? És akkor elvileg minden jó lesz majd, a nulladik bitet automatikusan hozzácsapja ő és akkor lesz belőle 0x40 / 0x41? A hozzászólás módosítva: Márc 10, 2019
Esetleg ezt itt próbáltad már?
Éppen nem a szimulálással foglalkozik, de hátha segít. A hozzászólás módosítva: Márc 10, 2019
Amikor az I2C 7 bites címzést használ, a hozzácsapott 8. bit mondja meg, hogy írsz, vagy olvasol. Emiatt van, hogy más a címed íráskor és más olvasáskor. A wiki cikk kivételesen egész jól leírja ezt...
Köszönöm a válaszokat, akkor jól gondoltam.
Elvileg így a 0x20-at kell megadjam 7 bites címként, ami a felső 7 bitje a valós címnek.
Sziasztok
Lehtséges hogy a kimeneteknek és a bemeneteknek a kivezetes számát epromból olvassa be amikor indul. Vagyis, hagyomány szerint a setup előtt hatarozzuk meg kivezetéseket - const int ledPin = 2;. Azt szeretném elérni hogy azt a 2 -öst csak a setup -ba rendeljem hozzá epromból kiolvasva. (mi haszna ? ugyanaz a kód de más hardwer kivitelezés) Köszönom A hozzászólás módosítva: Márc 11, 2019
Ha felveszel egy konstanst, akkor fordításkor a fordító azt kicseréli az értékére. Tehát a kódodban ahol ledPin-t használsz, ott mindenhik 2-es lesz, nem egy változó értékét fogja oda betenni.
Amit akarsz azt konstanssal nem tudod megcsinálni (mert az már fordítási időben konstans), de változóval simán. Elöl a setup blokk előtt felveszel egy "int ledPin = -1;" változót, aztán a setup blokkodban olvasol epromból és valós értéket adsz neki.
Köszi
Egyelőre csak a beépített leddel (ESP8266) probáltam ki és annál bevált. Próba, próba, Müködik, köszönöm
Sziasztok!
Egy kis segítségre volna szükségem. A számítógépemen fut egy DDE Client nevű program ami az Orbitron műholdpálya elemző program és a számítógép soros portja (esetemben USB) képez hidat. A DDE az Orbitrontól kapott aktuális pályaadatokat küldi ki soros porton. Két adat van, az azimut szög ("konstans" változónév: AZ) ill. az elevációs szög ("konstans" változónév:EL). Ezek a következő négy formában érkezhetnek: 1. - AZ:xx.x,EL:xx.x 2. - AZ:xxx.x,EL:xx.x 3. - AZ:xx.x,EL:xxx.x 4. - AZ:xxx.x,EL:xxx.x Számszerűen például lehet "AZ:13.5,EL:36.7". Az USB porthoz egy UNO van csatlakoztatva ezzel kéne tovább feldolgoznom a kapott szögadatokat. Azt nem tudom, hogy a kapott üzenetből (pl. AZ:xx.x,EL:xx.x) hogyan tudom külön két változóba (AZ ill. EL névű változók) szétválasztani a szögeket. Ebben kéne segítség, a további feldolgozás már megoldott. Előre is köszönöm!
String osztály lesz a barátod, már ha van elég memóriád és futásidőd.
Az indexOf() megmondja, hogy hol a vessző: Bővebben: Link. Az azimut a 4. karaktertől (amelyik itt sanszosan a 3. lesz, mert C string, de majd kideríted) a vessző előtti karakterig tart, ezt substring()-gel kiszeded: Bővebben: Link Az EL érték az a vessző utáni 4. karaktertől kezdődik és a string végéig tart amit a length() fv. ad meg. Ha ezt konvertálnod kell lebegőpontos számmá, akkor a toFloat() vagy a toDouble() metódust kell használnod.
Én úgy csinálnám, hogy megkeresem az üzenetben a vessző helyét az indexOf() fügyvénnyel, majd ebből már ki tudom számolni a első és a második szám legelső és legutolsó karaterének helyét. Utána pedig a substring segítségével kiszedem az üzenetből a két számot két külön változóba.
A hozzászólás módosítva: Márc 11, 2019
A szöveget, mint karakteres tömböt is lehet értelmezni. Hirtelen ezt találtam róla:Bővebben: Link
Lehet így is csinálni, de a String osztály magasabb szintű, egyszerűbb, nem kell rajta algoritmizálni - cserébe megzabál egy csomó erőforrást. Ha ez belefér, akkor inkább ezt javasolnám egy kezdőnek. (Ezzel nem lebecsülni akarom elektroncso fórumtársat, de ha egy ilyen kérdést feltesz, akkor szerintem programozásban kezdő szinten lehet.)
Egyébként én is igyekszem String osztály nélkül megoldani a dolgokat.
Teljesen kezdő vagyok programozásban, semmi tapasztalatom nincs. Annyit tudok, hogy már megírt programokból, kódrészletekből képes vagyok összefaragni egy olyan öszvért ami azt csinálja amit szeretnék, de önállóan nem tudok (még) programot írni.
Jelenleg egy műholdkövető antennán dolgozom és valójában annyi volna a feladat, hogy van két motor aminek a tengelye kényszerkapcsolatba van hozva egy-egy potival. A poti jelzi vissza a motrok (ezzel együtt az antenna) állását. A potikról érkező jelet és a DDE által küldött szögadatot összehasonlítom. Ha eltérés van akkor úgy kell a motrokat állítani, hogy ne legyen eltérés. A potikról érkező jelet egy egyszerű matematikai számítással átalakítom 0-360 közötti számmá (ami értelemszerűen a szög) amit közvetlenül összehasonlíthatok AZ ill. EL változókban tárolt szöggel. Plusz annyi van még, hogy egy LCD-re kiíratom az antenna aktuális azimut és elevációs szögét. Bár buta vagyok az ilyen számításokhoz szerintem ezt bőven kéne tudnia az UNO-nak. Az Orbitron 5 másodpercenként küld új adatot. Köszönöm az ötleteket, tanácsokat elkezdek utánaolvasni ennek a String osztálynak.
Üdv,
Arduinozásban és elektronikában teljesen kezdő vagyok. Egy olyan problémába ütköztem,amire nem találtam a google segítségével sem megoldást. Egy mezei filléres DS18B20 végére forrasztottam egy TRS apa jack csatlakozót és azt egy anya csatlakozó segítségével kötöttem össze az Arduinoval.Addig minden rendben megy,ameddig nem húzom ki és dugom vissza az apát az anyába.Ilyenkor valami nagyon nem volt kóser.Végül rájöttem,hogy ilyenkor rövid zár keletkezik,mert a jack végén lévő pin VCC érintkezik a GND-vel. Hogyan küszöbölik ki ezt a problémát?Elég sok helyen láttam gyárilag így összerakott szenzorokat.Ott mivel oldják meg ezt?Van valakinek ebben a tapasztalata? |
Bejelentkezés
Hirdetés |