- Autodesk - Revit
- A call centerekbe viszi az AI-t a Microsoft
- Aliexpress tapasztalatok
- Otthoni hálózat és internet megosztás
- PHP programozás
- Nem szavazza meg Musk 56 milliárd dolláros csomagját a norvég állami vagyonalap
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Mobilinternet
- DIGI kábel TV
- Mindennél kisebb és gyorsabb chipeket hoznak az ASML új gépei
-
IT café
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
zka67
őstag
Szia, az alacsony szint 0.8V-ig tart. Használj schottky diódát, pl BAT54A-t, ebben kettő is van, neked megfelelő bekötéssel. A felhúzó ellenállás ne legyen kisebb 10k-nál.
(#2403) dave0825 Szfvár. Ha nincs szkópod, kérj kölcsön valakitől, ha tudsz vagy vegyél egyet
[ Szerkesztve ]
-
zka67
őstag
válasz JozsBiker #2430 üzenetére
Szia, használd az ethercard-master library-t. Ezzel tudsz multi-packettet is küldeni, vannak benne példák rá. Stabil, egyszerűen használható könyvtár.
Vagy oldd meg javascripttel...
-
zka67
őstag
Szia, ha gondolod töltsd fel a kódodat valami tárhelyre (pl. dropbox vagy hasonló) és szerintem itt összerakjuk veled együtt a programodat.
Az első megjegyzésem, hogy miért használtok még RTC-t, amikor ma már minden háztartásban van wifi? Nem jobb a mindig atompontos óra? Én épp most csinálgatom amikor ráérek az időjárás állomásomat, egy ESP8266-os wifi modul és egy TFT kijelző kell hozzá összesen:
És ennyi lekérdezni a pontos időt, meg még egy kis program kellett hozzá, hogy átkonvertálja UTC+01-re és hogy tudja az automatikus téli-nyári átállást is.
AT+CIPSTART="TCP","time.nist.gov",13
AT+CIPSTART="TCP","time.nist.gov",13
CONNECT
OK
+IPD,51:
57436 16-02-18 22:31:37 00 0 0 669.6 UTC(NIST) *
CLOSEDAz előnye, hogy mindig 1mp-en belüli pontossággal tudod az időt, és soha nem kell beállítani azt
-
zka67
őstag
Szia, nem kell fw frissítés, az ESP8266 képes duál módban is működni, azaz egyszerre tud kliens és szerver módban is működni. Ehhez szerintem nem fogsz találni kész library-t, ezt majd neked kell megírni, de egyáltalán nem egy nagy mutatvány.
Egy AT+RST parancs után elég egyszer kiadnod az AT+CWJAP=ssid,psw parancsot, azt megjegyzi a modul. Utána a következő parancsokkal tudod elindítani a webszerveredet (a ; utániakat én írtam kommentként)
AT+CWMODE=3 ;AP + Station mode
OK
AT+CIFSR ;IP cím lekérdezés
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:e6:1f:9e"
+CIFSR:STAIP,"192.168.2.100"
+CIFSR:STAMAC,"18:fe:34:e6:1f:9e"
OK
AT+CIPMUX=1 ;Multiple connections, ez mindeképp kell a szervehez
OK
AT+CIPSERVER=1,80 ;Konfigurálás szerverként
OK
0,CONNECT ;A böngészőbe beírtam a 192.168.2.100-as címet, erre ezt küldte a modul
+IPD,0,334:GET / HTTP/1.1
Host: 192.168.2.100
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: hu-HU,hu;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cache-Control: max-age=0
AT+CIPSEND=0,7 ;A válaszom hossza 7 karakter lesz
OK
> ;Itt beírtam a HELLO<CR><LF> üzenetet (7 karakter)
Recv 7 bytes
SEND OK
AT+CIPCLOSE=0 ;És lezárom a kapcsolatot, a böngészőben pedig megjelent a HELLO üzenet
0,CLOSED
OKEgyébként szerintem érdemes először egy teminál programmal próbálgatnod a modult, csak vigyázz, mert a modul 5V-ról megy ugyan, de az Rx és a Tx lábai 3.3V-osak.
Egy kis segítség a parancsokhoz: ESP8266 - AT Command Reference
-
zka67
őstag
Szia, multiplexelve meg lehet csinálni. De jobban jársz, ha a sorok meghajtásához PNP tranzisztort használsz, pl. BC327-et, vagy P csatornás fetet.
Multiplexelés alatt azt értem, hogy a 8 db IC-dre kiadod a 8 oszlop adatait, utána a sor tranzisztorokkal "kigyújtod" a ledeket, majd "eloltod őket egy idő után. Utána a következő sorhoz tartozó oszlop adatokat töltöd be az IC-kbe, majd a következő sor "gyújtod" ki és így tovább.
-
zka67
őstag
Szia, itt találsz kész megoldást is
-
zka67
őstag
Netán ez problémát okoz számodra, hogy segítséget kértem a fórumon?
Nekem nem probléma, de így, hogy egyáltalán nem értesz a programozáshoz, semmi általad elkészített forráskódot nem tudsz mutatni, szerintem adj fel egy hirdetést, hogy ennyi meg ennyi pénzért keresel valakit, aki megírja neked az általad kívánt programot.
Részemről a téma lezárva.
-
zka67
őstag
-
zka67
őstag
válasz soldi3r #2486 üzenetére
Szia, ha az én hozzászólásom tántorított el a topiktól, akkor azt hagyd figyelmen kívül, az ilyen hsz-ek itt nem szokásosak, csak az illető szerintem nem a topikhoz tartozó kérést tett fel. Nulla saját kóddal kész megoldást nem itt szoktak keresni, hanem az álláshirdetés rovatban.
Ha elakadsz valahol, vagy bármilyen kérdésed lenne, nyugodtan tedd fel itt, biztosan fogsz kapni segítséget.
(#2487) Pulsar: Szia, van rajta, nem kell rátöltened semmit. Működik kliens és szerver módban is, nem kell hozzá semmilyen mókolt fw.
Egy kis segítség a parancsokhoz: ESP8266 - AT Command Reference
[ Szerkesztve ]
-
-
zka67
őstag
Szia, hogy ne szívasd magad, szerintem először próbáld ki egy soros átalakítóval és egy terminál programmal, hogy hogyan is működik. Ha kell esetleg egy jó terminál program, én írtam egyet, mindenkinek ajánlom. Innen tudjátok letölteni, a programcsomag többi részét legfeljebb nem használjátok. 8051-es sorozatú mikrokontrollerekhez Pascal és Assembler IDE, beépített szimulátorral, azaz az áramkör megépítése nélkül ki tudjátok próbálni azt, mindenféle perifériákkal.
(#2491) Flashback: A WS8212 adatlapján megtalálod a választ 4. és az 5. oldalon. Egyszerűbb, ha megnézed, mint hogy én kezdem el itt magyarázni.
-
zka67
őstag
Szia, a tranzisztort felejtsd el, főleg ezzel a hűtőbordával. Kb. 3mp-et bírna.
Használj inkább teljesítmény-MOSFET-et. Ha megfelelő típust választasz és megfelelő nyitófeszültséget tudsz adni neki, akkor talán még hűtőborda se nagyon fog kelleni rá.
A lényeg az, hogy minél kisebb belső ellenállású típust válassz, ez az Rds(on) paraméter. Nyitófeszültségnek határeset az 5V, én inkább 10-12V-ot adnák neki, ami újabb alkatrészeket jelent.
A Hobby elektronika topikban szerintem kapsz tanácsot mind típusra, mind pedig kapcsolásra is.
-
zka67
őstag
Szia, igen, megszakítás használatával pontosan lehet vezérelni több motort is egyszerre.
Tudom, sok embernek fogalma sincs arról, hogy mi a megszakítás, mit lehet és nem lehet megcsinálni vele, de higgyétek el, hogy baromi jó dolog. Én komolyan megőrülök, amikor meglátom egy kódban, hogy a millis-sel időzítetek, vártok, ezalatt a proci nem csinál semmi mást, és nem azért van, hogy lustálkodjon.
Egyébként a millis is egy megszakítással működik...
Gyakorlatilag minden eszközt lehet megszakítással kezelni, a soros porttól kezdve a GPIO-n át az SPI-ig, mindent. Miért várjak arra, hogy jön egy karakter a soros porton? Majd a megszakítás szól, hogy jött egy karakter és akkor majd foglalkozom vele, addig csinálok mást. Vagy miért várjak arra, hogy lenyomjanak egy gombot? Szóljon a megszakítás, hogy lenyomták azt a gombot, és majd akkor foglalkozok vele.
Neked konkrétan egy (vagy akár több) timer megszakításra van szükséged, amivel időzíted a motorod sebességét. Ha le akarod állítani a motort, akkor vagy egy flag-el jelzed a kiszolgáló rutinnak, hogy az a motor éppen áll, vagy ha külön timer-eket használsz, akkor egyszerűen leállítod a timert. A sebességet vagy a timer-rel változtatod, vagy a timert beállítod olyan sűrű megszakításra, amiből tudsz egyszerűen osztással sebességet állítani.
A megszakítást kiszolgáló rutinok nem futhatnak a végtelenségig, előbb-utóbb vissza kell térniük a rendes programhoz, hogy más megszakítások is kiszolgálásra kerülhessenek (vagy lehet még a prioritással is játszani). Ezzel azt akarom mondani, hogy minél gyorsabban lefut a rutin, annál jobb. És ehhez nem árt, ha az ember ismeri a proci utasításkészletét, hogyan lehet assembly utasításokat beépíteni a C kódba, hogyan tud együtt működni a két nyelv.
-
zka67
őstag
válasz TESCO-Zsömle #2685 üzenetére
Szia, nem feltétlenül kell hozzá arduino, de azzal is meg lehet oldani.
Én így csináltam meg a távirányítós hangerő- és hangszínszabályzómat.
Egyedül a balance maradt le róla, de a D/A konverter loudness kimenetét át lehet kötni egy digitális kimenetre, és a felszabadul D/A kimenet pedig mehet a balance bemenetre, ha valakinek nagyon hiányzik.
Az áramkör lényege az LM1036 és a TLC7226-os IC-k. A többi részét pedig bármilyen mikrokontrollerrel meg lehet csinálni.
-
zka67
őstag
válasz TESCO-Zsömle #2687 üzenetére
-
zka67
őstag
Szia, az arduino oldalán fent van minden funckció részletes leírása, így az lcd.print is.
Rögtön az elején vannak a paraméterei:
Parameters
lcd: a variable of type LiquidCrystal
data: the data to print (char, byte, int, long, or string)és mint látható, float típus nem szerepel köztük...
-
zka67
őstag
válasz Teasüti #2770 üzenetére
Szia, azt hiszem a lényeget nem mondták el, és ezért nem érted a dolgot.
A manapság gyártott procikban MOS tranzisztorokat használnak. Ezek "térvezérlésű" tranzisztorok, azaz nem árammal, hanem feszültséggel vezérlik őket. A bemenetük a GATE, ami rendesen el van szigetelve a tranzisztor többi részétől, azaz kapacitást képez. Ez a kapacitás képes töltéseket összeszedni a "levegőből" is, ha nincs semmi a GATE-re kötve, és ha megfelelő mennyiség összegyűlt, akkor kinyithat a tranyó. Csak úgy, a "semmitől". Ezért kell valamelyik potenciálra kötni a "lógó" bemeneteket egy nagyobb értékű ellenállással. Azért használnak nagyobb értékűt, hogy ha aktiválod a bemeneteket, ne zabálja feleslegesen a tápot. Használhatnál pl. 100 ohmos ellenállásokat is, de több tíz bemenet esetén ha kiszámolod, akár amperes nagyságrend is lehetne a feleslegesen elfolyó áram. Túl nagy értéket (>1Mohm) sem szoktak használni, mert ha hosszabb vezeték megy a lábra, akkor az képes annyi töltést összeszedni, hogy még az ellenálláson keresztül is kinyit a tranyó. Ahogy valaki írta is, a 10kohm-os ellenállás tökéletes választás otthoni használatra, kísérletezésre.
Üdv.
Zoli -
zka67
őstag
válasz Janos250 #2798 üzenetére
Szia, én is mindenkinek inkább az ARM vonalat ajánlanám, csak előnyei vannak neki az arduinohoz képest. És nem kicsik.
A legtöbb ARM proci 3.3V-ról működik, ahogy nagyon sok periféria is manapság, viszont a legtöbb lábuk 5V toleráns. Azaz magyarul szintillesztők nélkül lehet összekötni őket, szemben az arduinoval. (Az STM-nél figyelni kell, mert nem minden lába 5V toleráns, az NXP-nek viszont igen)
A sebességről meg ne is beszéljünk, lásd 8 bit vs. 32 bit, és 16MHz vs. 48-tól a csillagos égig.
A Keil fordítója meg olyan jó, hogy néha én is hanyatt esek tőle.
De ahhoz, hogy ARM procikat használjanak, el kellene szakadniuk az embereknek a delay használatától. A legtöbb gyártó minden procijához ad előre megírt könyvtárakat, külön-külön az összes, a prociban levő perifériájához, demóprogramokat, stb, stb... hogy amíg az emberek nem tanulják meg a perifériákat közvetlenül használni, addig se okozzon nekik gondot. (A közvetlenül alatt értem, hogy sok mindent jóval gyorsabban tud végrehajtani a proci, ha nem a könyvtár rutinokat használják, hanem direktben a perifériákat). Én nem vagyok híve annak, hogy megírunk egy programot úgy, hogy az bármelyik gyártó prociján fusson majd, és legfeljebb gyorsabb procit használunk. Úgysem fog, úgyis bele kell nyúlni a programba, akkor meg miért ne használjuk ki a lassabb proci képességeit maximálisan?
Az arduinoban is lehetne direktben használni ezeket a dolgokat, de itt még egyetlen egy hsz-ban se láttam ilyet. Még megszakítást sem, pedig az alapvető dolog a mikrokontrolleres világban.
Szóval amíg a delay a legfőbb utasítás, addig kár is próbálkozni az ARM vonallal...
Üdv.
Zoli[ Szerkesztve ]
-
zka67
őstag
válasz gyapo11 #2866 üzenetére
Szia, nem bonyolult a megoldás, mindössze Power-Down módba kell kapcsolnod a procit. Ha lekapcsolod a watchdogot (vagy nem is engedélyezed), akkor ebben az üzemmódban kb. 0.2uA a chip fogyasztása. A chipet megszakítással lehet felébreszteni, szerintem neked a Pin Change Interrupt lesz a megfelelő. Ehhez a megfelelő IO pin konfigurációban a PCINT funkciót kell kiválasztanod, és engedélyezni a megfelelő regiszterben.
Szerintem ehhez nem nagyon találsz arduinos könyvtárat, magadnak kell megírni ezt a pár sort.
Nem bonyolult, de át kell nyálazni a proci leírását, hogy melyik regiszterbe mit kell beírnod. Atmel oldalán megtalálsz minden procihoz minden adatlapot.
-
zka67
őstag
válasz Teasüti #2972 üzenetére
Szia, sebességben ég és föld a 32 és a 8 bites proci. A Cortex-M procik 1 órajel alatt elvégeznek egy 32 bites szorzást, az osztáshoz viszont 2-12 órajel szükséges (ha a bemenő adatok megengedik, akkor előbb megszakítja a végrehajtást, ha az eredmény független a fennmaradó nulla bitektől). A Cortex-M4-es procikban már van beépített lebegőpontos egység is, ami ugyan így 1 órajel alatt elvégez egy szorzást, de az osztáshoz itt is több órajelre van szükség.
5V-os 32 bites proci nem létezik, hiszen minél nagyobb órajelről járnak, annál kisebb feszültségről kénytelenek működni, hogy ne termeljenek sok hőt. Viszont az NXP és az STM procik legtöbb lába 5V toleráns, így nyugodtan használhatod őket level hifter nélkül bármilyen perifériához. Egy 1117/3.3V-os stab ic kell az 5V-ról a 3.3V előállítására.
Én épp most csinálok egy C64 emulátort egy STM32F407VET6 procival, amiről egy rövid videót is megnézhettek.
A prociban van egy nagyon jó DMA, ezzel mint láthatjátok, simán lehet videójelet is csinálni. A proci csinál mindent, és egy PAL encoder IC van még az áramkörben a tápegységen kívül.
-
zka67
őstag
válasz DougButabi #3176 üzenetére
Szia, írasd ki soros porton a rawdata karaktereit (hexában) és az strlen értékét, és meglátod hogy van-e különbség az elvárt és a valós értékek között.
-
zka67
őstag
válasz DougButabi #3178 üzenetére
Szia, szerintem a const körül lesz valami, ha jól sejtem, akkor a const a kódmemóriába kerül, míg te a ram címét adod át. Próbáld meg, és vedd ki azt a const-ot.
-
zka67
őstag
válasz Teasüti #3216 üzenetére
Szia, az uint8_t * nem 8 bites változót deklarál, hanem egy 8 bites tömböt, aminek a címe egy 16 bites érték.
Az Atmel AVR8 procikban a ram nem a 0-ás címtől kezdődik, hanem 256-tól, és a stack pointert a memória végére címzi, szóval stimmel a 2297-es érték. A memóriád utolsó bájtjának a címe = 256+2047.
Egyébként nem árt megismerkedni a procikkal, amikkel dolgoztok, azaz el lehet olvasni az adatlapjukat, minden fent van az atmel.com oldalán.
uint8_t *report = SP+1;
Ez visszaadja a stack utolsó elemét.
[ Szerkesztve ]
-
zka67
őstag
válasz Teasüti #3218 üzenetére
Szia, persze, én sem szoktam végigolvasni a több ezer oldalas doksikat, de amire szükségem van éppen, arra veszem a fáradtságot és átnyálazom alaposan, hogy melyik bit mit is csinál pontosan. Neked is csak rá kellett volna kattintanod az AVR CPU CORE -: STACK POINTER könyvjelzőre a doksiban, elolvasni, hogy hogyan működik és megnézni a hivatkozást az SRAM-ra, és máris tudtad volna, hogy miért nagyobb az SP értéke, mint a RAM mérete. Ezt nem bántásból írom, hanem a jövőre nézve adok tanácsot, sokkal gyorsabban megtalálod a doksikban amit keresel, mint ahogy itt válaszolnak neked. Utána úgyis megnézed a doksiban is azt, amit megnézhetnél kérdés nélkül is. De tényleg csak jószándékból írom ezeket.
De azt a "8 bites tömböt" nem értem, amit írsz.
uint8_t tomb[2048]; // Ez egy 8 bites tomb
uint8_t *pTomb; // Ez pedig egy 8 bites tombre mutato pointerIgen, a 8 bites tömb azt jelenti, hogy minden eleme egy bájtból áll.
Az utolsó elemének a címét pontosabban, nem
Mivel pointerként van deklarálva, ezért természetesen igen. Az elemet a * operátorral tudod elérni.
Üdv.
Zoli -
zka67
őstag
válasz Teasüti #3223 üzenetére
Szia, az adás és a vétel is ugyan azzal a sebességgel megy, ugye? Nos, amikor jön egy CR vagy egy LF karaktered, akkor te kiíratsz 3 karaktert. Amíg a programod azzal van elfoglalva, hogy megvárja amíg elküldi a 3 karaktert, ezalatt neked jöhet még 3 karaktered, amit nem tudsz kiolvasni, mert a programod épp mást csinál, és ezek a karakterek mennek a levesbe.
Többféle megoldást is tudok neked mondani, az első az, hogy amíg nem értél a vétel végére, addig ne írj semmit a soros portra. A második, használj megszakítást, írj saját rutinokat a küldés-fogadásra, címezd közvetlenül a regisztereket, azaz ne az előre megírt rutinokat használd.
Szerk: most látom, hogy println-t használsz, az még további két karakter jelent.
[ Szerkesztve ]
-
zka67
őstag
válasz Pubszon #3339 üzenetére
Szia, relékkel együtt:
Details about DC 24V 8 Channel Relay Module With Optocouple Relay Control Board -
zka67
őstag
válasz gyapo11 #3363 üzenetére
Szia, bocs, hogy beleszólok, de
Amíg nem tudjuk pontosan, hogy bármely pillanatban mit csinál a processzor
az elég komoly probléma, elég gyenge programozóra vall.
Nem a processzor programoz minket, hanem mi programozzuk a processzort, az pedig végre kell hogy hajtsa az utasításainkat. Nem mást, hanem azt, amit leírunk neki. Ha tudjuk, hogy mit írunk le, akkor tudni fogjuk azt is, hogy melyik pillanatban mit csinál a processzor. Szerintem...
-
zka67
őstag
válasz Teasüti #3390 üzenetére
Jaja, rossz a megközelítés. Én 100ms-es timer megszakítással szoktam lekérdezni a nyomógombokat, így simán ki lehet szűrni a prelleket, és a megszakítás alatt még azt is lehet ellenőrizni, hogy a gomb most lett lenyomva, vagy már le volt nyomva stb, stb... és egy inkey() rutinnak átadni a paramétert. Én úgy szoktam, hogy ha az inkey() 0 értékkel tér vissza, akkor nem volt gombnyomás, különben a gomb értékét adom vissza.
[ Szerkesztve ]
-
-
zka67
őstag
válasz Janos250 #3564 üzenetére
Szerintem az kell neki, amit linkeltem.
SMD-DIP átalakító - csak egy példa - , ebbe megy a tüskesor egyik fele és az arduinon a tüskesorhoz való hüvely van.
-
zka67
őstag
Szia, nem csak azért tesznek ellenállás a G és a mikrokontroller lába közé, hanem hogy megvédjék a mikrokontrollert és az egész áramkört attól, hogy ha a fet zárlatos lesz, akkor a túlfeszültség tönkretegye azt.
Nekem már sok áramkörömet megmentette az ellenállás (én 1M és 10K párost szoktam használni), mert a userek előszeretettel kötözgetik az áramköröket feszültség alatt, és sokszor csinálnak zárlatot, amit nem szoktak szeretni a fetek.
-
zka67
őstag
-
zka67
őstag
válasz Janos250 #3850 üzenetére
Szia, azért vigyázzatok a 103-assal, mert nem minden lába 5V toleráns! Az adatlapon 'F'-el jelölik az 5V toleráns lábakat a lábak leírásánál az IO Level oszlopban.
És igen, ki kell kapcsolni a belső felhúzó ellenállást és ha kimenet, egy külső ellenállással kell felhúzni 5V-ra (általában 10K-t szoktak használni).
Új hozzászólás Aktív témák
- Debrecen és környéke adok-veszek-beszélgetek
- Milyen videókártyát?
- Peugeot, Citroën topik
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Redmi Note 10 Pro - majdnem minden stimmel
- Autodesk - Revit
- Kerékpárosok, bringások ide!
- Kedvenc zene a mai napra
- Egyéni arckép 2. lépés: ARCKÉPSZERKESZTŐ
- World of Tanks - MMO
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen