Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
OK pipi,
Köszi ha bele pillantasz mi a hiány. Közben észrevettem, hogy létrehozott az Arduino egy újabb libraries helyet Arduinoe elnevezéssel ugyanúgy a dokumentumokban. Köszi,Antennaman A hozzászólás módosítva: Máj 16, 2023
Szerintem a felesleges "azonos jellegű" könyvtárakat távolítsd el. Lehet a 2 fajta tft könyvtárból nem tudja eldönteni mit használjon.
Hiányolja az avr/pgmspace.h-t
Igazad van. Plusz a portok nem olyan szabadok mintha magát az AVR programoznád. Jobb ha változóba van tárolva port láb száma.
Wokwi -ben készült, ha bemásolod akkor futnia kell. Az ötlet is wokwi-ről jött
Talán azért mert a kettőt ötvözted. A fúrt lyukas csak az 1 lábat (I2C) szakítja meg, a kapton szalagos az EA lábat is.
Adatlap alapján az alábbiakat kell beállítani: adatlap A sebbegéset be lehet állítani a start bitet megelőző időzített hosszúságú bittel: 8. Functional description Ez egyben beállítja a kódolás típusát is (Manchester, BPSK), ennek nem néztem utána, de gondolom az Arduino automatikusan kezeli. I2C láb nem lóghat, fel kell húzni logikai 1-re: Table 5. Connection protocol for detecting different interface types. Cím beállításhoz az EA lábat, és a hozzá tartozó ADR_0, ADR_1, ADR_2 lábakat is be kell állítani: 8.1.4.5 7-Bit addressing Kezdetben célszerű mind a 4 lábat lehúzni a "0"-ra (lehet hogy az ADR_0, ADR_1, ADR_2 lábak már eleve oda vannak kötve) ebben az esetben a címe 0101000X (x az írást vagy olvasást jelenti): Fig 16. First byte following the START procedure Felhúzó ellenállást ugyan csak az SDA lábra említi, de érdemes lehet tenni az SCL lábra is: 8.1.4 I2C-bus interface. Hasonlókat lehet olvasni itt is:i2c UNO-n lévő SCL, SDA lábak ha jól tudom ugyan oda vannak bekötve, előnye hogy egyszerre több i2c eszközt is rá tudsz csatlakoztatni az UNO-ra. AZ SPI kérdéshez idő hiányában annyit tudok érdemben hozzátenni, hogy az ARDUINO vezérli az SS lábat Fig 7. SPI connection to host Érdemes átolvasni az adatlapot mit ír róla.
Bocs, éjjel késön értem haza.
Igen kb igy gondoltam, habár igy a kodot nehezebben értem, mint amikor magam irom. A lényeg az amit csináltál. A [szimbolumok] tömbe beirhatod a valamennyi elképzelhetö változatot, majd a véletlenszerüen kiválasztasz egy sor ( amit elmentesz a A, B és a C változokba). Ha mind a 3ban ugyanaz a sor van akkor nyert. Ami még hiányzik az a pörgetés hozzárendelése az A,B meg a C dobhoz. Azaz a 3 dobot is én beirnám egy tömbbe. A, B , C Ha jol látom robis kolléga már kiegészitette. Amikor az A dobra hivod a pörgetést akkor a 42.sorban kapott [véletlen] értéket beirod az A változoba. Majd ugyanezt a következö lefutásnál a B-be majd meg a C-be. Ha mind a 3 pörgetés lefutott, akkor összehasonlitod a 3 (A,B,C) változot. A pörgetésbe még bevihetsz olyan luxust, hogy a véletlen (42.sor) elött még megpörgeted a dobot, azaz végugmész [néhányszor] az összes szimbolumon. Akár a néhányszort is a véletlenre bizhatod mondjuk 1-10 között. Azaz a játékos látja, hogy milyen szimbolumok vannak a dibon ( ha jo sebességet választol ) majd azután jön a véletlen sor kiválasztása. Stb. Tabletröl irom ide nem tudok igy kodot irni A hozzászólás módosítva: Máj 17, 2023
Nicsak mit találtam. Már a KI is meg tudja oldani a feladatot. Csak kérdezni kell tudni.
Véletlen generator
Már próbáltam párszor, alapvető dolgokra jó, de egy összetettebb feladatnál nem sok haszna.
Arra a feladatra amit Sany kolléga tervez valoszinü, hogy jo megoldásokat találna.
Ajaj, ezt már még egyszer szét nem szedem, kívüről meg nem tudok ráforrasztani felhúzó ellenállást.
Se mint írtem passzolom az I2c-s megfoldást, viszont az elgndolkodtató, hogy miért próbálkoznak sokan vele, másnak se működik a több SPI eszköz? Nem csak nálam? Mi lehet ennek az oka...
Csak poénból megkérdeztem tőle, hogy lehet I2c-be kötni az MFRC522-t és az arduinot, a chat gdp kerek perec megmondta, hogy nem lehet
Egy kicsit átírtam a programot. Így az első virtuális dob 10-szer, a második 20-szor, harmadik 30-szor fordul át, majd a végén megnézi hogy egyformák-e.
De lenne egy javaslatom, mivel a matrix meghajtáshoz nagyobb áram szükséges a jó láthatósághoz, érdemes lehet kiszervezni a led meghajtó lábakat külső ic-re, hogy ne terheld túl az AVR lábait. Lehet használni shift regisztert (74164, 74595, stb.) vagy port bővítőt (mcp 23008, mcp 23016, pcf8574). Ha ragaszkodsz matrixhoz akkor lehet olyan meghajtó is (Max7219), vagy akár ingyen is hozzá lehet jutni ilyenekhez TM1628 De léteznek i2c-s 24 csatornás pwm képes led meghajtók is. Ezekkel a cél ic-kel nem csak lábakat nyerhetsz az Arduinon, hanem a kód is egyszerűsödik, hiszen nem kell az matrix meghajtáshoz szükséges időzítésekkel vacakolni.
Köszi! Sokat fog segíteni.
IC-t nem szeretnék. A digiteket tranzisztorokon (BC550) keresztül vezérelem. A kijelző nem gyári, hanem minden egyes szegmens 4 db piros LED-ből épül fel. Előtét ellenállás, most 680 Ω-os. Külső tápfeszültség 5 V a kijelző tranzisztorainak. Így ha minden LED ki van vezérelve ( nincs rákötve az Arduinora), a labortáp szerint 100 mA vesz fel összesen. Így elég jó láthatóak. A hozzászólás módosítva: Máj 17, 2023
Jó dolog az Arduino, én is szeretem, csak kicsit olyan mint a csajok bulikban. Dekoratívak, jól néznek ki, könnyen kezelhetőnek tűnnek, de amikor hazaviszed és elkezded megismerni rájössz hogy a felszín nem elég a boldogsághoz, kellene hozzá az összetett feladatokban való helytállás is.
Egy helyről van az összes panel? Csak mert egy lehetséges ok: Idézet: „(2) *some boards contain counterfeit IC's * which do not have the correct product code when queried.” Mások is írnak arról hogy nem eredetinél gondot okoz ha több egység van felfűzve egy SPI portra: spi problem Tippem szerint a hamis más időzítésekkel dolgozhat mint az eredeti, vagy túl magas bemeneti kapacítása van, egy panel még nem okoz problémát, de kettő már hibát okoz. Meg lehetne próbálni felhúzó ellenállást tenni az SS lábra. Ha be tennél valami leválasztót, akár optókaput az SS portra, kiderülhet hogy a 2V melyik eszközből jön. Jó lenne láthatóvá tenni a jeleket is valami logikai analizátorral (pl. Arduinot is támogató sigrok) Javasolnám hogy próbáld ki más nyelven is (c, python, bascom, asm, stb. ) ha megoldható. Itt is vannak mintaprogramok: Bascom Esetleg valami szimulátorban (SimulIde, wokwi, Proteus, stb.) is ki lehetne próbálni, ott is rá lehet tenni logikai analizátort ami megmutatná minek is kellene történnie. Vagy ha van más két egyforma SPI-s valamilyen panelod, azzal is ki lehet próbálni hogy jól működik-e az SPI port az ARDUINO-n. Idézet: „Tippem szerint a hamis más időzítésekkel dolgozhat mint az eredeti, vagy túl magas bemeneti kapacítása van, egy panel még nem okoz problémát, de kettő már hibát okoz.” ott lesz a megoldás, a mellékelt képen 3db mfrc, ha jobban megnézzük, 3 külömböző gyártás. a középsővel nem működik egyszerre a kettő, egyáltalán (ezzel próbáltam), a két szélsővel tud működni egyszerre a két olvasó és be is olvassa mindkettő spi módba. (egyébként ez se mindig) Szóval kelleni fog az ss vonalra ahogy írtad is, egy fel, vagy lehúzó ellenállás. Köszi, ez jó tipp volt A hozzászólás módosítva: Máj 18, 2023
Szívesen.
Lehet úgyis pörgetni hogy mindig ugyanaz szimbólum következik egymás után (mint amikor a dob pörög), a véletlen a pörgési időt határozza meg. Az ic-nek az előnye sokkal egyszerűbb panelrajz is. Ha jól értelmezem a 100mA keresztül halad a BC550-en. adatlap szerint ez a maximum amit elvisel. Nem szerencsés határértéken dolgoztatni a tranzisztort.
Egyelőre nem melegszenek. De majd kicserélem azokat, egy BD140-re. Azok majd bírják.
IC, IC legyen IC? Ha végképp nem sikerül a kijelzés, akkor lesz IC.
Szervusz Pipi,
Már csak egy .h fájlt hiányolt de addig küzdöttem, hogy valahova bemásoltam valamit és elkezdett végtelen listázásba fogni alul . Meddő küszködés lett így fogtam és mindent letöröltem az arduino librarie-ket is. Az a baj , hogy amikor újra telepítem ugyan olyan hibásan állítja be magát mint ami miatt letörlöm. Valamint amikor elkuszálok egy szkeccset akkor ha be is zárom nem egy tiszta lappal hanem ugyanazzal a zavarossal indul újra, hiába nyitnám meg az eredeti fájlt holott senki nem mondta , hogy mentse el a változásokat. Később visszatérek ehhez a rádió projekthez csak regenerálódni kell ezek után!
Akkor jöhetnek az újabb tippek
Tovább fűzve a gondolatsort, jellemző az Arduino-ra és kiegészítő paneljaira a (hamisítványok, és olcsó árak mellett) zavarvédelem szinte teljes hiánya. Pláne az olyan kiegészítőknél, amik elektromágneses teret is létrehoznak maguk körül ez még rosszabb is lehet. Érdemes lehet ezt a részt is körüljárni. 1. Lehet hogy túl közel vannak egymáshoz, és zavarják egymást: távolabbra kellene helyezni a panelokat egymástól. 2. Lehet hogy az elektromágneses hullámok által keltett áramok zavaró feszültség tüskéket okoznak a vezetékekben. Árnyékolt vezetékek használata megoldás lehet (árnyékolást csak egyik oldalt kell bekötni). 3. Kevés az áram a bemeneti kapacitások gyors feltöltéséhez: meg kell támogatni a jelvezetékeket valamilyen buffer ic-vel. 3. Ha zavar a jelvezetékeken továbbítódik: galvanikusan elválasztani a jelvezetékeket egymástól opto kapukkal, leválasztó ic-vel. 4. Ha zavar a tápfesz vezetékeken továbbítódik: minden panelt külön tápegységre kell kötni. 5. Lehet hogy veszik egymás jeleit: a. szoftveres: le kell tiltani, vagy el kell küldeni aludni a nem használt modult b. hardveres: le kell kapcsolni a nem használt panel áramforrását (NPN, FET, stb.) Érdemes kis szünetet (10-100ms) is beiktatni a két panel használata között, hogy az éterben keltett zavarás is megszűnjön.
A kódod jó lett.
Megpróbáltam átadni az A,B,C-t legalább, csak olyan szinten, hogy valahogy kiírja a kijelző. Kiírja,de csak a C karaktert, mind a három digitre. Valahogy így gondoltam:
Fogalmam nincs, hogy kellene. A digiteket kellene léptetni? Vagy használnom kellene Sevseg shift, eltolás könyvtárát, és úgy multiplexelni? Gondolkozok, "kamu" karakterekben is, amik csak mennek, és csak ha nyer akkor jelenne meg a három egyforma. Vagy a karakterek kombinációját megcsinálni, onnan olvasni? Nem tudom.... Ha nem sikerül multiplex, átmegyek Arduino mega-ra, aztán kivezetem a 3 x 7 kivezetést. A hozzászólás módosítva: Máj 18, 2023
Valamit félreértesz, ha jol tudom az eredeti SevSeg vagy mi volt a neve annak az alprogramnak, az a feladata, hogy az adott bytetot kiirja a 7 szegmenses displayre multiplex modusban. Ez most hiányzik. Nem ismerem annyira a programot, de nincs kizárva, hogy csak a 0-9 ig tudja kiirni a számokat, azaz a nem szám karaktereket már nem tudja.
Ezt kellene elöbb végigzongoráznod, az eredeti programmal. Ha nem tudja kiirni a többi karaktert, akkor érdemes lenne abba a progiba belekotorni, vagy a program alapján irni egy uj SevSeGx verziot, ami elfogad minden byteot ami ki akarsz irni. ( azért 16 karakternél több nem biztos hogy kell). Ha ezt tisztázod, akkor ha eljutsz pörgetéskor az adott véletlenhez. (A,B és C ) akkor ezt már a SevSegx-nek ki kell irnia. Nejed most természetesen csak az utolso karaktert irja ki, mert nem definiáltad melyik karakter melyik displayre kerüljön. Add hozzá az EN1, EN2, EN3 a 3 display bekapcsolása És akkor az (EN1, A), (EN2, B), (EN3, C) kiirását kell a loopban állandoan ismételni. ( ez a MUX). Mielött most valami mást tennél elöbb tisztázd a SevSeg müködését. Ha csak valoban a 0-9 számokat tudja kiiirni, akkor csinálj egy másik probát hogy a tömbbe csak ezt a 10 számot ird be. Ha igy megy a progi, akkor már van egy alapod és 000-999 ig fog menni a bandita. Természetesen akkor a kod elejére be kell vinni a SevSeg könyvtárat). Ezután dönthetsz, vagy kiegészited a SevSeg programot a további 5-6 karakterrel, ajánlom az A,b,c,d,E, karaktereket ( ezeket egyszerü lesz beirni, de választhatsz mást is). Ezután már mennie kell a kodnak. Bocs nem tudok kodot irni, mert nincs itt a PC-m. A hozzászólás módosítva: Máj 18, 2023
Idézet: „Valamit félreértesz” Kezdem elhinni, hogy csak pontos időzítéssel tudom majd előidézni, a fél karú rabló feelingét. És ez nem egyszerűen fog menni. Azonban teljesen igazad van. A véletlen már megvan, csak finomítani kell. SevSegben lehet más karaktereket is kiírni. A SevSeg.cpp-ben előre meg vannak írva. A hozzászólás módosítva: Máj 18, 2023
Akkor rakd vissza a SevSeg-t. De oda is be kell vinni, hogy melyik A,B,C értéket melyik displayre irod. Ez hiànyzik még.
Ha a kiirást a (for) hurokba irod be, ahol a pörgetések mennek, akkor a tartalom is változni fog, és ha megáll akkor már megvan az elsö változo, és azt fogja ismételni az elsö helyen. Én az állapot helyett inkább egy “void kiirást” alprogramot irnák, ahol ki tudod irni a megfelelö helyre a 3 változot. Ezt az alprogramot kell a for hurokban minden ciklusban. A hozzászólás módosítva: Máj 18, 2023
Még egy gond van vagy lesz. Függvénnyel (void-dal) vagy közvetlen a loop()-ba írjam majd? Mert a kijelzés, még mikro szekundumban is, lassabb lesz és ez függ attól is milyen számot, illetve milyen hozzárendelt karaktert generál.Tolja az időzítést. Ezt tapasztaltam, igaz nem véletlen számokkal, mert próbálkozok itt azért sutyiba. Persze először számok, aztán karakterek.
Ki fogom próbálni jobban belemélyedek a SevSegbe. A hozzászólás módosítva: Máj 19, 2023
Elég lehet felhasználás előtt generálni egy véletlen karaktert, így memóriát takarítasz meg.
Időzítésekre szerintem csak akkor van szükség ha te kezeled a matrix meghajtását, Sev.seg ezt maga végzi. Ez a szimuláció használja a sev.seg -et. Látható hogyan épül fel a program.
A loopban van a pörgetés a for hurokban. A hurok végén minden ciklusban hivd meg a void kiirást. Azaz a for változo minden értékére egyszer legyen kiirás.
A void kiirásba betehetsz egy kis késleltetést is, hogy láthato legyen a kiirrt érték. Nem kell itt azért mikrosekundumokkal foglalkozni. Lassabban szebb hatást is kapsz. A szem kb 5 kiirást/sec tud még követni, ha gyorsabb, összeolvad a kép mint a moziban. A hozzászólás módosítva: Máj 19, 2023
A minta kódot behelyezve wokwi -be futtatható a minta program.
De ahogy Massawa is írta érdemes lenne utána nézni sevseg-nek, mert ahogy nézem csak valamilyen karaktertáblázat (ASCII, UNICOD, stb,) szerint jeleníthet meg bármit is. MEGA szerintem pazarlás erre a célra, de hát az ic-k le lettek szavazva
Már néztem ezt a minta programot. Jó ez is, ASCII nem baj. Byte-ot, hexet fogad pl. 0x01, stb. . Lassan fog pörögni.
Már elővettem a 74C595, de vissza is raktam a fiókba...
Kérdés megoldva, bocs hogy ilyen érdektelenséggel szennyeztem a topikot.
A minta kódban miért a setup()-ban adja át a stringet szerintettek? Ezt nem értem...
|
Bejelentkezés
Hirdetés |