Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
A setup-ban csak definiálja mi a testString [i] tartalma.
Ahogy korábban irtam a Idézet: „ if (millis() > (timer + PATTERN_CHANGE_TIME)) { sevseg.setChars(testStrings[testStringsPos]); testStringsPos++; if (testStringsPos >= MAX_NUMBER_STRINGS) testStringsPos = 0; timer = millis(); ” A vastagon irt sorban irja ki a setupban definiált teststringek egyikét [testStringsPos] [a zárojelben lesz a 0-11 ig] Neked is erre lesz szükséged, csak egy kicsit egyszerüsiteni kell az egészet. Neked csak A digitPins [] csak 3 jegyü lesz, minden más maradhat. Neked majd a vastagon kiirt sorba kell majd bevinned véletleneket az A,B és C -t és a hozzájuk tartozo digit poziciot (1-3). A hozzászólás módosítva: Máj 19, 2023
Nem egészen úgy van ahogy te szeretnéd.
Idézet: „Setting a character string
Character arrays can be displayed - as accurately as possible on a seven segment display. See SevSeg.cpp digitCodeMap[] to notes on each character. Only alphanumeric characters, plus ' ', '-', '_', and '.' are supported. The character array should be NULL terminated.” Oka pedig a karaktertáblázat. Minden karakter (szám, betű, szimbólum) egy bájtban van tárolva. A bájtban lévő bitek sorozata leírható decimálisan, hexadecimálisan, binárisan, és még sokféle más számrendszer szerint is. Amire hivatkozol (valamilyen számrendszerben leírt számmal) az nem más mint maga a karakter. Amire neked szükséged lenne: Idézet: „Custom display setting // Set the segments for every digit on the display
// Set the segments for a single digit. Set digit 3 to 0x63.
You can manipulate individual segments if needed. Each byte represents the display of a single digit, with each bit representing a single segment. The bits represent segments in the order .GFEDCBA. See SevSeg.cpp for more examples of these 'digitCodes'.” Vannak behuzalozott futtatható mintaprogramok Idézet: „Sample simulations The Wokwi team has created sample simulations of the examples in this library: Wokwi SevSeg_Counter Example Wokwi stringWithPeriod Example. Wokwi testWholeDisplay Example.” Egy kicsit átírtam az eredetit, szépen lefut a szimulátorban:
És még egy figyelembe veendő felhívás: Idézet: „Warning: Any calls to delay() will interfere with the display. Any delays introduced by other functions will produce undesirable effects on the display.” Idézet: „Nem egészen úgy van ahogy te szeretnéd.” Ez egy kompromisszum, de el kell fogadni.
meghosszabítottam az egyik modul vezetékeit, most olyat csinál, hogy az egyik modul működik csak, ha megcserélem akkor is csak az működik, ha működés közbe kiveszem a jót, akkor amelyik eddig működött, az hirtelen működni kezd.
Most egyáltalán nem produkálja azt ameit valamelyik nap, hogy jó volt mindkettő egyszerre.
Csak egy elmélet. Mondjuk küld és fogad az MCU 48 bit-et, és generálja az órjalelet. Ha egy zavaró jel átír 1-2 bitet a 48-ból már kavarodás lesz a vége. Ha meg az órajelből olt ki néhányat és ezért nem érkezik meg a 48 bit akkor még vár, és nem viszi le az SS vonalat. Megpróbálhatsz 10-100nF tenni panelok tápfesz bemenetére.
Esetleg ha van oszcilloszkóp érdemes rámérni a vezetékekre. Viszont ha megjavul a leválasztástól akkor érdemes szoftveresen, vagy hardveresen lekapcsolni. Ki kell keresni az adatlapból, vagy ki kell kísérletezni, hogy mennyi azaz idő amíg feláll az RFID panel. Ez szerintem nem lesz több 100-200 ms-nél, ezért ha pl. 500ms időnként az egyik majd a másik működik az nem lesz gond. Senkinek nem fog feltűnni hogy 1-1,5 sec idővel több ideig tartja ott a kulcsot az olvasón. A hozzászólás módosítva: Máj 20, 2023
Sima elkokat 40-100µF raktam rá próbaképpen, 100nF kondit még nem próbáltam.
Az 500msec ki-bekapcsolást kipróbáltam, nem lett jó
Nem tudom, miért van az, néha ha módosítani akarok egy hozzászólásomat, akkor nem teljesül, most ismét megpróbálom leírni
Kipróbáltam 100nF kondival, de nem lett jobb. Most már tényleg marad az amit már az elején is javasoltak, hogy kell közéjük egy jel illesztő. Kerestem alin a "arduino SPI isolator/separator" kulcsszóra, hátha létezik erre Hw, de nem dobott értékelhető találatot, úgy tűnik, csak én szívok ezzel. Valami optokapus leválasztóra gondoltam, de ide nem lesz jó a sima 4ch optokapu, mivel nem egy irányba mennek az adatok. Miso<- Mosi-> SS-> reset-> Ha jól gondolom.
Nagyfrekvenciás szűrésre a µF tartomány hatástalan, nF, pF kell.
Az irányok jók az MCU felöl nézve. A 4 csatornás opto csatoló jó oda, ha tudja azt a frekvenciát amivel folyik a kommunikáció. Viszont azt nem értem, szerinted miért nem jó a "sima 4ch optokapu"? A hozzászólás módosítva: Máj 21, 2023
Ilyen nem jó?
Bővebben: Link Épp ezért léteznek ilyenek. A szűréssel mi volt a gond? Másképpen oldom meg a problémámat, de nekem a 8MHz SPI nem jött össze eddig. Ha van tapasztalatod szívesen elolvasom, ha eddig még nem írtad volna le. Sokat melózok, épp hogy ide tévedtem, ha már leírtad, akkor bocs. Kulcsszó: Bidirectional Level Shifter. A hozzászólás módosítva: Máj 21, 2023
A tempóról nem ír semmit az adatlap, azonban leírja, hogy pontosan milyen FET-el megy.
Ilyennel,ha jól látom: https://www.onsemi.com/pdf/datasheet/bss138-d.pdf Ebből lehet következtetni a sebességre esetleg.
Szerintem ez nem galvanikus leválasztás. Lehet hogy az opto sem elég, mert ha a zavart a hamis ic produkálja akkor nehéz kiszűrni a hibát.
Esetleg meg lehet próbálni az Spi.SetclockDivider alacsonyabb frekvenciára állításával. Gondolkodtam az optokapu adatirányokra vonatkozó kérdéseden is. Arra gondoltál hogy az opto ic egyik oldala a bemenet a másik meg a kimenet? Ha igen akkor a MISO-t fordítva kell rákötni a működéshez.
Azt hittem a jelszintek eltérőek, és a lgikai 1 elveszik valahol. Optokapu is simán jó, pont ahogy írtad. Azt már nem akartam odaírni, htha megoldja azt a kérdező.
Az optocsatoló sebességére is rá kell nézni, de elvileg az is gyors, illetve a 3.3V nem mindegyiknek elég, már ha modlban veszi. Erre figyelni kell. Amit itt talltam 4 csatornásat, annak az adatlapja mintha csak az IC-re vonatkozna, nem a modulra, de ilyesmit olvastam: Response time: 4us. Vce=2V, Ic=2mA, Rl=100Ohm esetén. A panelen nem tudom mekkora értékekkel szerepelnek ezek az értékek, de ha jól gondolom, ekkor 250KHz lehet az átvitel? SPI-nek kevés lesz szerintem. 12. oldalon jobb leírása van, nem pont az amire gndoltam, de itt hagyom a válaszom, mert ennek is utána kell nézni. De simán tévedhetek is, nem néztem ennyire utána.
Az Uno felé 5V-os kommunikáció volna a logikus, ezen a 4ch optokapun közösítve vannak a bemenetek, és a kimenetek, és itt jön a probléma, mert az MiSo ugye a Uno fele dolgozik, szóval oda 5v os jelszintet vár, de ha az optukapu kinetére 3,3V-ot teszek Vcc-be, amit a MFRC dolgozik, akkor az uno fele lesz kevés.
Mindennel próbálkoztam már, az egyik MFRC sose dolgozik rendesen (a cél nem 2db mfrc, hanem csak egy + SD kártya, de így egyszerűbb a hibakeresés)
Most azt vettem észre, rajta felejtettem a kártyát a nem-működő mfrc-n, hogy időnként veszi a jelet. Próbáltam az imént javasolt frekvencia felezés/negyedelés, nem jött be. most úgy van, hogy fél másodpercenként hol az egyik, hol a másik kapcsol, de így is atom bizonytalan, de fura, hogy csak az egyik. Az általad javasolt illesztő jó ötlet, most akarok úgyis rendelni anyagot. köszi. Idézet: „mert ha a zavart a hamis ic produkálja akkor nehéz kiszűrni a hibát.” Most összesen 4db mfrc-m van, az egyiket beáldoztam I2C kísérletnek. Ami most a legstabilabb, az se működött az SD kártyával, ahogy kellett volna, úgyhogy szerintem itt nem a hamisságon lesz a hangsúly.
A szintillesztőben található FET- felépítésével készítettem egy kis szimulációt. A teszt akkor sikeres, ha a bemenő jel felfutási és lefutási ideje 1ns alatt van. Akkor az 1-4 MHz-et simán viszi. A 8 MHz-et már nem tudtam kipróbálni, bár jellegre jónak tűnik.
Szóval ha az Arduino digitális pin-jének a fel/lefutási ideje 1ns, vagy még kissebb, akkor jó lehet. Gondoltam kipróbálom a kapcsolást, mert a FET G-S kapacitása befojásolja az átvivendő frekit, kíváncsi voltam. A hozzászólás módosítva: Máj 22, 2023
Azt hiszem megvan a probléma gyökere. Bár írnak a hibás chipekről, kondenzátorokról de a lényeg hogy
Idézet: „2-nél több modulhoz egy multiplexer szükséges #191 .” mfrc522.h
Nem tudom, mi az a multiplexer, ez esetbe
Máskor ne a Google fordítós verziót linkeld be. Kösz.
Multiplexert úgy képzeld el mint egy billenőkaros váltókapcsolót. Ha balra áll akkor a bal oldali, ha meg jobbra akkor a jobb oldali ágat köti össze a középen lévővel. Ha jól értem azért van szükség erre, mert a gagyi másolat az MFRC522 ic-ből nem engedi el a lábakat, nem megy át magas impedanciába. Meg lehet próbálni az MFRC522 ic NRSTPD engedélyező lábát használni, de gondolom ezt már mások is megtették, és nem vezetett eredményre.
Multiplexer felépíthető logikai kapukból (mazochistáknak tranzisztorból,diódából), de egyszerűbb készen venni: Használhatsz engedélyezhető tristate optocouplert, ilyenre még nem volt szükségem, nem tudom milyen néven gyárthatják. Használhatsz tristate buffer ic-t pl. 74125. Ide tartoznak az engedélyezhető szintillesztő ic-k is. pl:TSX0108 szintillesztők Multiplexer ic pl. 74157 Az ajánlott ic-k átviteli frekvenciáit , 3,3V-os működési feszültséget, nagy impedanciás állapotát érdemes megnézni adatlapokról. Idő hiányban erre most nem volt lehetőségem.
Igyekezni fogok az eredeti forrásra hivatkozni
Sziasztok!
Adott egy atmega328p, amely mély alvásban van, két feladata lenne: 1. figyeli az egyik bemenetet, ha magas szintet érzékel akkor megszakítás történik és egy feten keresztül felébreszti az áramkör kapcsolódó részét miközben az egyik kimenetet alacsonyan tartja, 2. ha idő közben nem érkezik megszakítás akkor kb fél óránként felébreszti az áramkör kapcsolódó részét és a kimenetet magas szintre állítja. Régóta jól működik több ilyen áramkör, de az utóbbi időben azt tapasztaltam, hogy az atmega időnként magasan tartja a fet-et így hamar lemerülnek az elemek. (külső tápot nem tudok alkalmazni, ezért marad az energia takarékos altatás) Az alábbi kódot alkalmazom:
Valakinek esetleg van tippje hol lehet a hiba? Esetleg tapasztalata valakinek a LOW POWER funkció esetleges hibáival kapcsolatosan. A segítséget előre is köszönöm! A hozzászólás módosítva: Máj 24, 2023
A megszakítás rutint a setup elött kellene létrehozni.
És az interuptot a loop-ban kezelném, a példa szerint: powerDownWakeExternalInterrupt.ino
A hozzászólás módosítva: Máj 25, 2023
Sziasztok,
A segítségeteket szeretném kérni időmérő megvalósításához, amit egy 7"-os érintős kijelzőn jelenítenék meg. (ezeket a könyvtárakat használom:<UTFT.h><UTouch.h>). Röviden a történet: - A kijelzőn van egy Start (gomb), amit ha megérint az ember akkor elindul egy timer 0:00:00-ról és másodpercenként számol (mint egy stopperóra). Ennyi az egész. Sima 4,5"-os TFT kijelzőre már sikerült megcsinálni, de a 7"-os kijelzőnek teljesen más utasításkészlete van és sehogy sem tudom megoldani. (még most tanulom a C++-t). Amiket találtam a neten, az mind vagy 2-3 soros kijelzőkre vagy 3-4,5" kijelzőkre van írva. Ha valaki esetleg tudna segíteni, annak nagyon hálás lennék. Előre is köszönöm és szép délutánt nektek.
Szép, szép, de igazából nem írtál semmit! Sem a kijelző típusát, sem azt hogy mit csináltál meg eddig, sem az hogy hol akadtál el, és főleg hogy miben kellene a segítség.
A kijelzők tipusára szükség lenne , ahogy sargarigo is irta (ez egy alapfeltétel hogy segiteni tudjunk).
Ha arduino IDE-vel töltöd fel, akkor a hibaüzenet is kéne.
Elnézést a pontatlanságért
Ez a kijelző: VIFERR Anzeigemodul 7 Zoll TFT LCD 800x480 Touchscreen AVR STM32 ARM SSD1963 Az adapter: Akozon LCD Schild 3,2 "TFT LCD Mega Schild V2.2 Erweiterungskarte für Touch Screen Display für Arduino Mega 2560 A programot azért nem írtam ide le, mert az időmérő szempontjából irreleváns és kb. 500 sorból áll. Két Arduino Mega Board komunikál egymással soros porton. Az egyik a kijelzőhöz van egy adapterrel csatlakoztatva, a másik pedig a szenzorok és a relék kezeléséért felel. Sima soros porton kommunikálnak. Több megoldást láttam a neten stopperórára. Van aki nagyon bonyolult kódot írt, van aki pár sorral megoldotta, de, ahogyan írtam, ezek teljesen más utasítások, mint ami ehhez a kijelzőhöz kell. PL. itt egy kódrészlet egy gombhoz és egy benne lévő felirattal: myGLCD.setColor(VGA_BLACK); myGLCD.drawRect(375,230,475,281); myGLCD.setBackColor(VGA_WHITE); myGLCD.print("Nyitás",385,231);
A 7-es kijelzőt mivel csatlakoztatod a megához? Ez egy LVDS interfészes cucc én úgy látom...
|
Bejelentkezés
Hirdetés |