- Bemutatkozott a Poco X7 és X7 Pro
- Yettel topik
- Magyarított Android alkalmazások
- Hónap végén érkezik a Xiaomi Band 10, ára is van
- iPhone topik
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Google Pixel topik
- Milyen okostelefont vegyek?
- Fotók, videók mobillal
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
-
Mobilarena
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
-
Tomika86
senior tag
Lehet az elején rosszul fogalmaztam, bocsi.
Ez lenne a lényege:
A gomb a gyújtás jel(itt a szimulátorban) . Most úgy van a kijelzőm hogy leveszem a gyújtást akkor átáll a kijelző a bejelentkező oldalra, elmentem az eepromba amit kell és kikapcsolom a kimeneteket.
Itt jön a delay, vár 20secet, majd altatom a kijelzőt és az esp32őt is.Minden jó vele, de ha leveszed a gyújtást, majd vissza egyből akkor a delaynél megáll, és meg kell várni. Utána ébred csak fel újra, ha elaludt.
Ha a kikapcsolas függvénybe belépek mindig kezdenie kellene a 20secnek, ha kilépek belőle akkor nullázódik.
A függvényből kilépés a returnal lenne -
Janos250
őstag
válasz
Tomika86 #17890 üzenetére
Hát, én külön task-be tenném a két külön feladatot, ami globális változókon keresztül tartaná egymással a kapcsolatot. Ha nincs tennivalója az adott task-nek, azonnal adja is tovább a vezérlést, így nem foglal le lényeges időt. Ha mellesleg még másik magra is teszed, akkor meg végképp nem!
Ha az ESP32 mellett döntöttél, érdemes megtanulni, amit nyújt a két mag, és a C++11 ! Vagy még a FreeRTOS, ha sok az időd, de ennek zöme a C++ -al megoldható. -
válasz
Tomika86 #17896 üzenetére
Ez eddig nem volt feladat
#define Gomb 15
#define Led 2
unsigned long aktualis_millis;
unsigned long mentett_millis;
unsigned long ido = 20000;
unsigned long kulonbseg_millis;
void setup() {
pinMode(Gomb, INPUT);
pinMode(Led, OUTPUT);
Serial.begin(115200);
}
void loop() {
if (!digitalRead(Gomb)) {
mentett_millis = millis();
kikapcsolas();
}
Serial.println("Fut a program");
delay(1000);
}
void kikapcsolas() {
kulonbseg_millis = millis() - mentett_millis;
if (kulonbseg_millis <= ido) {
if (digitalRead(Gomb)) {
Serial.println("Visszalep");
return;
}
Serial.println(kulonbseg_millis);
Serial.println("Leallas idozitoben");
}
else {
Serial.println("Esp leall itt");
// deep sleep
}
} -
Tomika86
senior tag
Eddig jutottam, de csak addig működik az időzítés amíg a 20sec le nem telik. Utána egyből jön a leállítás. (Wokwiban próbálom szimulálni, azért van így)
#define Gomb 15
#define Led 2
unsigned long aktualis_millis;
unsigned long mentett_millis;
unsigned long ido = 20000;
unsigned long kulonbseg_millis;
void setup() {
pinMode(Gomb, INPUT);
pinMode(Led, OUTPUT);
Serial.begin(115200);
mentett_millis = millis();
}
void loop() {
if (!digitalRead(Gomb)) {
kikapcsolas();
}
Serial.println("Fut a program");
delay(1000);
}
void kikapcsolas() {
kulonbseg_millis = millis() - mentett_millis;
if (kulonbseg_millis <= ido) {
if (digitalRead(Gomb)) {
Serial.println("Visszalep");
}
Serial.println(kulonbseg_millis);
Serial.println("Leallas idozitoben");
}
else {
Serial.println("Esp leall itt");
// deep sleep
}
} -
Tomika86
senior tag
Sziasztok
Szeretnék segítséget kérni hogy tudom megoldani a következőt:
1.Fut a programom
2. Kikapcsolok egy gpiot
3. Átváltok egy oldalra a kijelzőmön és elindul egy időzítő(10sec)
4. Ha letelt a 10sec akkor deep sleep az esp32Ez eddig 1db delayel megy, de a 10sec mindig eltelik.
Azt szeretném ha a 10sec alatt a gpio mégis bekapcsol, akkor lépjen vissza az 1.pontra, meg képernyőt is váltanom kell.
Ha újra kikapcsolom a gpiot, akkor ismét indul a 10sec.Nem jövök rá mivel tudnám megcsinálni ezt. Pedig tuti egyszerű
Köszönöm
-
válasz
Krisztian01 #17888 üzenetére
Szia! Az MCU.hex fájlból pontosan milyen információt szeretnél kinyerni?
-
Krisztian01
csendes tag
Sziasztok
Nemrég kaptam egy delta a221 szervertápot. Nagy hasznát tudom venni, de gondoltam csinálok egy teljesítmény kijelzőt hozzá.
I2c megvan, tudok olvasni és írni, eeprom-ból kitudom szedni a gyártót, modellt, szériaszámot, de az MCU-val (Atmega8L) más a helyzet.
Nem tudom kideríteni, hogy melyik a feszültség, melyik a teljesítmény stb..
A programját sikeresen kimentettem, néhány dolgot ki tudok venni, de jól át kellene nézni.
Fájlok:
https://drive.google.com/file/d/1R0GNoAGXLLhCuUSAhNDeqfP0-y1neome/view?usp=sharing -
daninet
veterán
Megoldódott a dolog. Leforrasztottam az enkódert erről a pcb-ről és tökéletesen működik a saját ellenállásaimmal.
Az sosem fog kiderülni ennek mi baja volt, de legalább tudom, hogy nem én voltam a béna.Bocsánat, hogy rólam szólt a topik, nagyon köszönöm a segitséget
-
-
daninet
veterán
hát ez is ilyen... igen.. gondolom
jobbik félét vettem aliról ezek kis szilikon kábelek nem azok a merev pvc cuccok.
De tényleg bármelyikőtöket érdekli elpostázom így ahogy van a cuccot. Ez nem egy üzleti projekt, egy kibelezett mikró trafójából akarok ponthegesztőt csinálni, az arduino időzíti majd a hegesztést illetve kellene a rotary enkóder, hogy 0-1000ms között kiválaszthassam mennyi ideig pontheggesszen. A kódot meg tudom írni, de ilyen alapvető egyszerű dolgon nem tudok túllépni, hogy ha ezt összekötöm miért nem jó.
Fel tudok még egy tábla csokit meg egy sört ajánlani fizetségnek -
Tomika86
senior tag
Sziasztok
P sorozatú intelligent nextion kijelzőt próbálta valaki 921600 bps sebességen? Ehhez a típushoz ezt írja a gyártó maxra, olcsóbbaknál 115200baudot.
Esp32 tudja ezt a 921600 bps sebességet, mi lehet a kitétel? Rövid 4-5cm a vezetékem csak.
Köszönöm
-
-
daninet
veterán
hát igazából most ez ilyen láma dolog, de megcsináltam a házit, elolvastam a google első 10 találatát amikor beírtam, hogy: "arduino rotary encoder". Mindenki megveszi ugyanezt a fekete pcb-s vackot amit én is, mindenkinek ugyanolyan breadboardja van mint nekem, összedrótozom ugyanúgy ahogy a mintákban van, rátöltöm ugyanazt a mintakódot amit mindenki más (és itt értsd, hogy kizárjam a saját hülyeségem, nálam okosabb emberek kódjait töltöttem fel, és ezek nem bonyolult dolgok, csak kiírja, hogy jobbra vagy balra tekerted) és nem ugyanaz történik nálam, mint -úgy látszik- a bolygón mindenki másnak.
Itt ez a példa, ha ezt így összedrótozom, rátöltöm össze vissza mennek az értékek ha csak hozzáérek bármelyik vezetékhez vagy alkatrészhez. -
biker
nagyúr
válasz
daninet #17872 üzenetére
az a baj, nem tudom mit csinálsz rosszul, sőt abban sem vagyok biztos, hogy rosszul működik, csak nem az elvárt eredményt kapod és az zavar, holott a jó működés van, csak mást szeretnél.
Én tucatszám rakok össze buttonboxokat, kormány vezérlő panelt (simhez) és sosem volt még gond rotaryval
de használtam saját terhelés megosztóhoz is rotaryt, na ott kicsit macerás volt, mert a megszakítások gondot okoztak, de végül jó lettA képen a legutóbbi rendszer, 2 arduni, 8 rotary, 28 nyomógomb + 4 rotary nyomógomb, LCD és RGB led kijelző
-
daninet
veterán
válasz
ekkold #17871 üzenetére
nem ezeket az értékeket kapom
Igen, bekötöttem. Képen Piros/fekete.
Hajlandó vagyok elküldeni az egész breadboard-ot így arduinoval enkóderrel bárkinek aki unatkozik és ránézne
Belerakom a csomagba a visszafoxpost árát.
Tényleg érdekel, hogy ez az egész így ahogy van el van átkozva vagy én vagyok a béna
-
ekkold
Topikgazda
válasz
daninet #17868 üzenetére
Ha felhúzó ellenállással nézzük akkor egyetlen lépésre ezt kellene kapni:
11 (mindkét kontakt nyitva)
01 (egyik kontakt zár)
00 (másik kontakt is zár)
10 (első kontakt bont)
11 (második kontkt is bont)
A másik irányba forgatva, a 01 és az 10 állapot fordított sorrendben jön.A kis panelen ugye bekötötted a GND-t és a +Tápot is az arduino panelre?
-
-
-
daninet
veterán
válasz
ekkold #17867 üzenetére
Köszönöm a válaszokat.
Sorban megyek az összesen:razorbenke92:
Adatlapja szerint vagy 10K ellenállást kell mérned a + pin irányba, vagy zárlatot a GND-re.
Ez így van, mérhetőek a 10k ellenállások. Kettő van rajta, egy-egy a két lábhoz. Az ellenállások a +5V és a CLK/DT láb között vannak.Nézd meg épp hogyan áll, és mozdíts egy ugrást rajta (gondolom diszkrét pozíciói vannak, 20 impulzus nem sok) majd nézd meg újra. Csak az egyiknek kellene változnia.
Ha rákötöm a multimétert a GND és a CLK lábra minkét irányba tekerve az enkódert van ellenállás változás.
De ha jól értelmezem ez nem gond, mert a minta amit ki kellene adjon Ayres kolléga szerint:
Egyik irányban
0 0
0 1
1 1
1 0
a másikban
0 0
1 0
1 1
0 1Ugyanitt elkövetheted azt is, hogy digitális pin helyett analógra kötöd, és az analóg értéket írod így ki sorosan, hogy lásd valóban analóg zaj van az enkóderen, vagy digitális.
Ezt még ki kell próbálnom.Janos250:
Próbáld ki ideiglenesen akkuról működtetni!
Ezt nem tudom hogyan kell miközben számítógépen a soros monitort is látni akaromekkold:
Valószínűleg fizikailag vagy nincs az enkóder panelján felhúzó ellenállás, vagy túl nagy értékű.
Van rajta 2x10k az egy-egy lábhoz. Azt nem tudom, hogy ez túlnagy-e.Ezért nem értem, hogy ha ez rajta van akkor miért lebegnek az értékek.
A képen a CLK és +5V lábak között mérekmivel kicsi az esélye, hogy két különböző helyről, két különböző enkóder is hibás lenne.
Kétszer ugyanazt az enkódert vettem hestore-ról. De vettem egy másikat is (más márka nem ez a zöld tokos) utoljára ami nem klikkelős, csak 3 lába van. Kipróbálom azt is majd. -
ekkold
Topikgazda
válasz
daninet #17864 üzenetére
1, Valószínűleg fizikailag vagy nincs az enkóder panelján felhúzó ellenállás, vagy túl nagy értékű.
2, Mindenképpen kell felhúzó ellenállás (akár belső, akár külső) mert különben lebegni fog a bemenet és mindenféle zavart összeszed.
Felhúzó ellenállással valószínűleg azért nem működik amit írtam - mivel kicsi az esélye, hogy két különböző helyről, két különböző enkóder is hibás lenne. -
válasz
daninet #17864 üzenetére
Mindenféle kódot mellékelve, használj egy multimétert az enkóder kivizsgálására.
Adatlapja szerint vagy 10K ellenállást kell mérned a + pin irányba, vagy zárlatot a GND-re.
Nézd meg épp hogyan áll, és mozdíts egy ugrást rajta (gondolom diszkrét pozíciói vannak, 20 impulzus nem sok) majd nézd meg újra. Csak az egyiknek kellene változnia.
Ugyanitt elkövetheted azt is, hogy digitális pin helyett analógra kötöd, és az analóg értéket írod így ki sorosan, hogy lásd valóban analóg zaj van az enkóderen, vagy digitális. -
daninet
veterán
válasz
ekkold #17861 üzenetére
Nem ez a gondom. Nem a kóddal van bajom, a kódot megoldom. Hanem hogy 1) nem működik a pullup ellenállás az enkóderből csak zajt kapok, elég hozzáérnem az enkóderhez és random számokat darál, videót nézd meg amit linkeltem.
2) amikor hozzáadok egy pullup ellenállást (az arduino sajátját vagy külön) akkor értelmezhetetlen jelet kapok vissza pl 3 sor 0, előző hsz példa mutatja. Due is ugyanezt csinálja, annak sokkal gyorsabb a processzora. De betöltöttem próbaképp a mintakódot arduino.cc-ről (ami soros kiírás nélkül dolgozik) ami szintént tök random irányt dobál, hogy jobbra vagy balra fordítottam.Bármilyen mintát nézek pl az arduino.cc-n vagy akármelyik google első találat sehol nincs pullup ellenállás.
-
ekkold
Topikgazda
válasz
its_grandpa #17857 üzenetére
-
ekkold
Topikgazda
válasz
daninet #17860 üzenetére
A kapott adatokról: a programod soros portra küldi ki amit kap, viszont a soros portra írás ideje összemérhető (vagy akár hosszabb) mint az enkóder impulzus-ideje. Ezért össze kellene gyűjteni egy csomó adatot és egyben kiírni - vagy méginkább egy megfelelő programmal számlálni az enkóder lépéseit, és csak a számláló változása után kiírni az értékét.
-
ekkold
Topikgazda
válasz
daninet #17860 üzenetére
Minden mechanikus kapcsoló hajlamos egy olyan jelenségre amit "prellezésnek" hívnak. Fizikailag amikor az érintkezők összeérnek akkor rugalmasan torzulnak, majd az érintkező visszapattan, az áramkör megszakad majd újra összezáródik (akár többször is egymás után). Ez általában ezredmásodperces időtartományban zajlik (vagy akár 100usec tartományban). Emberi szempontból ez nagyon rövid idő, de digitális elektronikák szempontjából ez sok idő, simán észreveszi az áramkör és megpróbálja feldolgozni - ami alaphelyzetben hibás működéshez vezethet.
Két megoldási lehetőség van:
- Szoftveresen felkészülni a prellezés kezelésére - ahhoz hogy ez jól működjön nem lesz elég egy egyszerű kód. Persze megoldható teljesen jól is, csak az nem pár soros programrész lesz (készítettem már ilyet).
- A prellezés hardveres kezelése: a kontaktusokra kapcsolt felhúzó ellenállások után egy megfelelő időállandójú R-C szűrő is kell (ilyenkor a belső felhúzó ellenállást ki kell kapcsolni). Ez több alkatrészt igényel, viszont a szoftver viszonylag egyszerű maradhat.
Ha a programozás nem az erősséged, akkor a hardveres megoldás a könnyebb út, mivel az egyszerű áramkört igényel... Már én is elgondolkoztam rajta, hogy nekem is egyszerűbb lett volna hardveresen megoldani, mint szoftveresen, csak akkor már a hardver kész volt, így nem volt választásom. -
daninet
veterán
Segítsetek a rotary enkóderrel mert nem értem mi történik.
Vettem új enkódert, mert hogy biztos rossz. Ugyan az a jelenség az újjal is.
A kódom baromi egyszerű, kiolvasom az 1 és 0 értékeket a lábakról.
Az enkóderen van pullup ellenállás gyárilag.
Drótozásról kép itt és egy videó arról mennyire érzékeny a zavarra.Hogy kizárjam a nanót, feltöltöttem ugyanezt a kódot egy due lapra, ugyanez a jelenség
Ha bekapcsolom az arduino PULLUP ellenállását a kimenet használhatatlan:
Egyik irányba tekerem:
17:50:43.863 -> DT: 1 CLK: 1
17:50:43.897 -> DT: 1 CLK: 0
17:50:43.897 -> DT: 0 CLK: 0
17:50:43.932 -> DT: 0 CLK: 0
17:50:43.932 -> DT: 0 CLK: 0
17:50:43.966 -> DT: 0 CLK: 0
17:50:43.966 -> DT: 1 CLK: 1
Másik irányba tekerem:
17:50:43.481 -> DT: 1 CLK: 1
17:50:43.481 -> DT: 0 CLK: 0
17:50:43.515 -> DT: 0 CLK: 0
17:50:43.515 -> DT: 0 CLK: 0
17:50:43.550 -> DT: 1 CLK: 1 -
vviktor1
aktív tag
válasz
ekkold #17856 üzenetére
Megfigyelve a kimaradás nincs összefüggésben a kijelző frissítéssel, ma délelőtt egyszer sem akadt meg (mondjuk kicseréltem az erősítőt alatta egyéb okok (esztétika) miatt, nálam külön készülékként van megépítve hifi toronyba) Ha dupla klikket nyomok a rotaryn (óra mód) akkor írja a wifi jelszintet, ez ilyen -60- -69 Db-t mutat a mostani helyén ahol szeretném hogy jól működjön, ezt mondjuk nem tudom mit takar, próbából áttelepítettem közvetlen a router mellé, ott -40-50 között írta) ott sem szakadt meg az adás természetesen, lehet inkább egy külső wifi antenna irányába megyek el, valahova a készülékdoboz hátára felhekkelve, ennek a helyét még keresem hova is kéne rákötni.
-
Wolfram
aktív tag
Sziasztok,
Van itt valaki aki vállal aurdinos project készítést, vagy tud ilyen piacteret valahol?
-
its_grandpa
tag
válasz
ekkold #17853 üzenetére
És is játszottam ezzel a modullal de nekem nem volt szerencsém, a karadio nem szólal(t) meg. Az ok az első képen látható a modul alján, VS1003/VS1053, azaz AS tűréssel szerelnek (AS = ahogy sikerül). Kicsi belenyúltam az Adafruit 1053-as arduino lib-be, úgy tudtam hangot kicsikarni belőle mert "false" volt a v értéke.
uint8_t v = Adafruit_VS1053::begin();
// return (v == 4); ez a 1053
return (v > 2); ez ha a chip verzió minimum VS1003 =3
A lábak bekötésének publikációja az ESP-khez, végtelen örömmel töltene el
Lehet elővenném ismét a félrerakott projektet. -
ekkold
Topikgazda
válasz
vviktor1 #17855 üzenetére
Nekem 100%, hogy a kijelző miatt akadt, ugyanis ha nincs beállítva a kijelző akkor nincs akadás. A soros porton így is kitol minden adatot ami kell, erre ráakasztok majd egy Arduino nanot, vagy egy BluePill-t, és az kezelheti a kijelzőt akadás nélkül... Egyelőre csak az ESP8266-ra épülő van bedobozolva, az ESP32 verzió csak próbanyákon van kijelző, és gombok nélkül - de teljesen jól működik. Ehhez tervezek majd egy végfokot, külön MCU-t a kijelzőhöz (és a kezelőszervekhez is), és így akarom majd egybe dobozolni.Emlékeim szerint a programozó app képest törölni is a flash-t, utána biztosan lehet a nulláról kezdeni a programozást. Ha mégis megfrissíted akkor írd meg majd légyszíves, hogy jól működik-e, mert még én sem frissítettem.
-
vviktor1
aktív tag
válasz
ekkold #17854 üzenetére
Esp32 és pcm5102 dac van, olyan kijelzővel mint alsó képeiden, működik is jól, csak néha nekem is megakad 1-1 mp-re, ezt kéne valahogy kinyomozni. A routerrel egy helyiségben van, ezért a wifit kizárnám hogy gyenge lenne neki. A mobilos appról tudok, használom is, tényleg jó. Szóval, a lényeg, 2.1 fw van fent de látom hogy van 2.3 már egy ideje, de nem merek rányomni az update-re mert valahol irták hogy valami nem kerek benne, valami kijelző bug van benne, és ha nem lesz jó nem tudom visszacsinálni, ezért kérdezem az alapra állást és onnan újra telepitést. Rádió lista természetesen elmentve. Köszi !
-
ekkold
Topikgazda
válasz
vviktor1 #17851 üzenetére
A karadiot kipróbáltam ESP8266-on, és az ESP32 változatot is. Az utóbbi kicsit gyorsabb, és nem csak az MP3 rádiók menek vele, hanem az AAC stream is. VS1053 modult még a vám mizéria előtt vettem ebay-en. Szerintem kimondottam jól szól.
Minden részletre nem emlékszem, letöltöttem hozzá mindent, felprogramoztam a leírás alapján és működött...
A karadióhoz van androidos app amivel lehet távirányítani mobilról, így akár kezelőszervek (gombok) és kijelző nélkül is működik.
A karadio32-höz próbáltam ILI9xxx kijelzőt illeszteni, működött is, csak a kijelző frissítése néha megakasztotta a hangot, így leszedtem róla, most nincs kijelzője, később majd illesztek hozzá (soros porton) egy külön MCU-val kijelzőt. Lehet, hogy csak egy sima 2x16-os LCD-t (mint az ESP32 esetében) úgy sem nézegetni, hanem hallgatni akarom. -
vviktor1
aktív tag
Sziasztok, van itt aki wifis netrádiót (karadio) futtat rajta ? Fw frissítés/visszaállítás/teljes alaphelyzetbe állás/felprogramozás nulláról lenne a kérdésem, ha van jobb helye a témának irányítsatok el (én nem találtam, vagy angol ami elég kusza vagy orosz, ahhoz meg én vagyok kuka) ha nincs, érdemes lenne neki egy topic talán)
-
Janos250
őstag
Már megint bajban vagyok ezzel az Arduino könyvtárakkal :-(
Ha ezt így mindenestül beírom:#include <C:\Arduino\arduino-1.8.19Proba01\portable\sketchbook\libraries\vfs\include\esp_vfs.h>
Akkor jó.
De nem akarom mindig a teljes elérési utat beírni. Mit írjak be, hogy megtalálja a vfs könyvtárat, annak az include könyvtárában az esp_vfs.h fájlt? -
kgbrg
tag
Sziasztok
Van egy műszerem amiben meghalt az atmega chip. Esetleg valakinek van itt ilyen és fel tudná programozni?
Atmel mega 328P U-TH
A szoftver megvan nálam ami kellene bele.
Sajnos nekem se ic, se programozó nincs.Ha valaki meg tudná oldani kérem küldjön üzenetet.
Köszönöm -
Undoroid
őstag
válasz
daninet #17836 üzenetére
Szia!
Csak halkan kérdezem meg: zsír új az enkóder?! Honnan kap tápot ez az egész masina? Nem lehetséges, hogy egy kapcsoló üzemű tápegység 'zaja' (f)okozza ezeket az anomáliákat?
Ha van lehetőséged, akkor próbáld meg szűrni közvetlenül az enkóder betápját egy 1000uF/10V elkóval és egy 100nF/50V-os kerámiakondival! Hátha csak ennyi a probléma...vagy -első körben- mehetne ugyanez a mikrovezérlő betápjára (is) Kezdő lévén sajnos más ötletem nincs! -
daninet
veterán
-
Tankblock
aktív tag
válasz
tibi-d #17823 üzenetére
Ha ablakként tekintesz a memóriára és azt indexelve a tömböt körbeforgatod, akkor 2 * 128 byte memóriába vígan meg lehet oldani a 2x 300 adat memóriában tartását és abban a 100 [ms] pedig el tudod kezdeni kiírni SD re mondjuk 2x20 ával, mert akkor 5 * 100ms alatt kiírtad a 100 adatodat, majd megvárni hogy megint 2*100 összegyűljön. A triggerkor meg beszélgethetsz a RTCvel és kiírhatod SDre meg az okot is..
Én fix filenevet használnék és a végére raknám az új adatokat mindig. de kinek mi.
-
tibi-d
tag
Még egy kérdés. Még nem kellet SD kártyára adatokat mentenem, a fájl neveket lehet-e programból indexelni, azért, hogy ne írja felül az utolsó az előzőt.
-
tibi-d
tag
válasz
Tankblock #17822 üzenetére
A felsorolt modulok egymásba illeszthetők. Az STM kilóg a sorból. A segítség abban kellett, hogy feleslegesen ne bonyolítsam túl a dolgot, és ha nem muszáj ne vegyek olyan kiegészítőt amire nem lenne szükség. Mivel a bekapcsolási folyamat lezajlik 5s belül, ezért elég lehet előtte 30 minta, utána 100 minta. Így, ha a programot kiegészítem pl. egy kijelzővel még akkor is maradhat elég memória. Köszi az ötleteket. Ha elakadok, jelentkezem. Az is érdekel, hogy a két berendezés milyen valószínűséggel indul egyszerre, és rántja meg a hálózatot. (Ennek kicsi az esélye, de nem nulla.)
-
Tankblock
aktív tag
Igen, ha csak 2*128 byte is bőven elfér UNOban is.
STM32 nem volt az eredeti felsorolásban :-)nem olyan vészes project ez....
Ha csak a fogyasztás érdekel akkor akár Sonoff POW WiFi is használhatsz, vagy bármit ami méri a dolgok fogyasztását, általában esp82XX va benne és akár TASMOTA is tudja monitorozni.....Az a kérdés hogy hol kell a segítség...
-
daninet
veterán
Nos, némi fejlemény. De továbbra sem értem nálam miért nem úgy működnek a dolgok mint a példákban. Most csak a CLK-t egy ellenállással PULLUP módba raktam (nem a kódban) és egészen hasonló a jel ahogyan leírod (csak majdnem). De ha mindkét lábat pullup rakom már nem jó
Viszont a mostani gondhoz nagyon kezdő vagyok.
3 jelet ad az enkóder, most így néz ki:
Egyik irány:18:01:20.583 -> DT: 1 CLK: 1
18:01:20.616 -> DT: 0 CLK: 1
18:01:20.616 -> DT: 0 CLK: 0
18:01:20.650 -> DT: 0 CLK: 1
18:01:20.650 -> DT: 1 CLK: 1
Másik irány:18:01:21.980 -> DT: 1 CLK: 1
18:01:22.015 -> DT: 0 CLK: 0
18:01:22.015 -> DT: 0 CLK: 0
18:01:22.048 -> DT: 0 CLK: 1
18:01:22.048 -> DT: 1 CLK: 1
Szóval 3 jel van (az egyesek azok az alapállapot) és nem is olyan iskolapélda ahogy a te leírásodban.
A kód amit beraktam (egy sima számláló) úgy néz ki ebből kettőt fog fel randomÍgy néz ki ha balra tekerem KÉTSZER:
18:05:04.148 -> Direction: CW -- Value: 71
18:05:04.250 -> Direction: CCW -- Value: 70
18:05:04.727 -> Direction: CW -- Value: 71
18:05:04.796 -> Direction: CCW -- Value: 70Így néz ki ha jobbra kétszer:
18:03:24.746 -> Direction: CW -- Value: 63
18:03:24.746 -> Direction: CW -- Value: 64
18:03:24.985 -> Direction: CW -- Value: 65
18:03:24.985 -> Direction: CW -- Value: 66 -
Tankblock
aktív tag
válasz
tibi-d #17814 üzenetére
Szia,
RAMba elfér, ha csak 2x128 mintát tárolsz akkor bőven. Bele kell tenni a SDkártya kezelő és a RTC mennyi memóriát foglal és maradékkal tudsz gazdálkodni.
Én timerre futtatnék ADC-t a két csatornára és értékét memóriába tárolatnám egy counterrel aztán jól van az úgy....ha megtellik akkor kezdi előről.
HA megvan a trigger akkor először RTC olvasás 1x , majd a következő ADC olvasás után kiír valahány értéket egyszerre SD re abban a 100ms ami rendelkezésre áll. Így marad 2X buffernek hely.
Digitálisra meg egy sima ISR fv figyelése egy GPIOnak aztán jól van.....
-
tibi-d
tag
Ha egy 24C256-ba gyűjteném az adatokat, és 2X16kB után írnám felül, akkor a 100.000 írási ciklus jó pár év alatt telne le. De ha csak 10.000 ciklust engedek meg, akkor is fél év. Amire nekem kell, az max. 1-2 hónap.
Hogy pontosan elmondjam mire kell, az az, hogy a hálózaton van két felügyelet nélkül üzemelő kompresszor (hűtő, fagyasztó). A probléma, hogy látszólag indokolatlanul leold a betáp kismegszakító, és ha nem kapcsoljuk vissza időben leolvad a fagyasztó, és tönkre megy a tartalma. Azt szeretném kideríteni, hogy milyen üzemállapot idézi elő az oldást. (Hibás kismegszakító, két berendezés egyidejű indulása, stb.) Az analóg bemenetek a két fogyasztó áramfelvételét mérné. A digit bemenet pedig a hálózat kiesését figyelné. -
válasz
tibi-d #17814 üzenetére
Ez tényleg kb. egy oszcilloszkóp működése
Nemrég csináltam egyet, ezen a részén is dolgoztam egy keveset.
Ilyen sebesség mellett gyorsan el fog használódni az EEPROM, úgyhogy a logolást mindenképpen a RAM-ban kell végezni, és csak az eredményt menteni az EEPROM-ba.Én egy 256 elemű tömbbe írnám folyamatosan az adatokat, hogy kerek szám legyen
UINT8 lenne a számláló, ami 255 után túlcsordul, tehát csak növelni kell folyamatosan, és felülírja a régi adatot. A trigger esemény után a tömb utolsó 100 eleme lesz az előzmény, egy másik tömbbe pedig mehetnek az ezt követő minták. -
tibi-d
tag
válasz
Tankblock #17813 üzenetére
Az én fejemben egy olyan megoldás motoszkál, hogy egy nagyobb kapacitású EEPROM-ba írnám folyamatosan a mérési adatokat, és amikor bekövetkezik a trigger esemény, még leszámolnék 200 mintát, majd az utolsó 2X 300 adatot kiírnám SD kártyára az idő és trigger bélyeggel kiegészítve. A trigger események között valószínűleg elég idő telik el, hogy a fenti feladatot el lehessen végezni. Ha a két analóg bemeneten 200 mintán belül jönne az indítójel, akkor az első előtti 100, és a második jel utáni 200 jel lenne kiírva a kártyára. Újabb triggerre 1-2 percen belül nem kell számítani. Az analóg jel felbontása 8 bit.
-
Tankblock
aktív tag
válasz
tibi-d #17812 üzenetére
Szia
Oszcilloszkóp
beszélgetés indítónak a következők jutottak eszembe:
ha az analog jel felakad folyamatosan a trigger szint főlé akkor mi fog történni?
Mekkora felbontással kellene tárolni az adatokat (8bit elég -e mert 2*300 byte csak maga 600 byte a memóriában vagy csak 2* 100 bytot tárolunk és azt nem tudom mennyi idő kiírni ), illetve ha megtörténik a hiba akkor mind a 2 csatorna kellene hogy mentve legyen?
Hiba után ha megvan a 200 jelszint akkor mennyi mérés eshet ki?
itt lesz fontos hogy mi van akkor ha folyamatosan a trigger szint fölött van vagy az körül ingadozik kicsit alatta, majd kicsit felette akkor mit kell tárolni? -
tibi-d
tag
Lenne egy feladat, hátha megmozgatja a fantáziátokat. Két analóg bemenet jelét kéne tárolni, és ha bármelyik értéke meghalad egy beállított szintet, vagy egy digit jel hatására el kéne menteni a trigger esemény előtti 100 és utáni 200 mintát. A mintavétel 10/s lenne. Az adatokkal együtt le kéne tárolni az esemény dátumát, időpontját, tárolás okát (szint, digit). Ha a tárolás a digit jel hatására történne, a további rögzítésre már nem lenne szükség. Ez lenne az utolsó letárolt csomag. A folyamat 24/7 üzemmódban működne. Minden elképzelést, ötletet szívesen fogadok. Jelenleg a következő modulokkal rendelkezem: Arduino UNO, Data logger shield v1.0, ESP13 shield. Köszi.
-
biker
nagyúr
válasz
daninet #17808 üzenetére
Aryes leírta, de a rotaryk lapján is ott a metódus, 0101 vagy 1010 a forgatás, plusz van félosztású rotary is.
Kell hozzá feldolgozás, hogy a bejövő 0101 az CW a kimenő és jó lesz
a néha visszaforgás jelaz meg olyan hiba ha félosztásba rakod és 0101 0101 0110 jön véletlen
és szimulátor kormányokhoz építek lapokat, azokon kitapasztaltam -
daninet
veterán
válasz
daninet #17805 üzenetére
kiírtam a két láb pulzusát, hogy lássam mi történik. Ha balra ha jobbra tekerem ez a kimenet:
Ez egy darab fordítás18:52:07.316 -> DT: 1 CLK: 1
18:52:07.349 -> DT: 1 CLK: 1
18:52:07.349 -> DT: 1 CLK: 1
18:52:07.384 -> DT: 1 CLK: 1
18:52:07.384 -> DT: 1 CLK: 1
18:52:07.417 -> DT: 1 CLK: 1
18:52:07.417 -> DT: 1 CLK: 1
18:52:07.451 -> DT: 1 CLK: 1
18:52:07.451 -> DT: 1 CLK: 0
18:52:07.485 -> DT: 0 CLK: 0
18:52:07.485 -> DT: 0 CLK: 0
18:52:07.520 -> DT: 0 CLK: 0
18:52:07.520 -> DT: 0 CLK: 0
18:52:07.553 -> DT: 0 CLK: 0
18:52:07.553 -> DT: 0 CLK: 0
18:52:07.587 -> DT: 0 CLK: 0
18:52:07.587 -> DT: 0 CLK: 0
18:52:07.620 -> DT: 0 CLK: 0
18:52:07.620 -> DT: 0 CLK: 0
18:52:07.655 -> DT: 0 CLK: 0
18:52:07.655 -> DT: 0 CLK: 1
18:52:07.688 -> DT: 1 CLK: 1
18:52:07.688 -> DT: 1 CLK: 1
18:52:07.721 -> DT: 1 CLK: 1
18:52:07.721 -> DT: 1 CLK: 1
18:52:07.754 -> DT: 1 CLK: 1
18:52:07.754 -> DT: 1 CLK: 1
-
daninet
veterán
Sziasztok!
Rotary enkóderrel küzdök, nem tudom eldönteni én vagyok a béna vagy az enkóder rossz. Még a mintakódok sem működnek nekem.
Adott egy darab egyszerű rotary enkóder, klikkelős fajta 5 lába van, 5V, GND, SW, DT, CLK
Rákötöttem arduinora CLK és DT a 2-3 pinre, 5v, gnd stb.Feltöltöm az alábbi minta kódot, de tökmindegy melyik mintakódot töltöm fel, az ardunio.cc oldalról feltöltött is ugyan ezt csinálja.
Mindegy, hogy balra vagy jobbra tekerem, látszólag ugyanazt a pulzust adja be és a függvényben levő counter csak felfelé számol. Aztán néha pedig bedobja random egyszer egyszer az ellenkező irányba is. Ha felcserélem a breadboardon a lábak tüskéit akkor is csak ugyanarra számol.Ez a konzol kimenet:
18:11:20.981 -> Direction: CW -- Value: 45
18:11:21.049 -> Direction: CW -- Value: 46
18:11:21.253 -> Direction: CW -- Value: 47
18:11:21.287 -> Direction: CW -- Value: 48
18:11:21.321 -> Direction: CW -- Value: 49
18:11:21.423 -> Direction: CW -- Value: 50
18:11:21.457 -> Direction: CW -- Value: 51
18:11:21.526 -> Direction: CW -- Value: 52
18:11:21.666 -> Direction: CW -- Value: 53
18:11:21.701 -> Direction: CW -- Value: 54
18:11:21.701 -> Direction: CW -- Value: 55
18:11:21.734 -> Direction: CW -- Value: 56
18:11:22.041 -> Direction: CW -- Value: 57
18:11:22.041 -> Direction: CW -- Value: 58
18:11:22.076 -> Direction: CW -- Value: 59
18:11:22.109 -> Direction: CW -- Value: 60
18:11:23.166 -> Direction: CW -- Value: 61
18:11:23.267 -> Direction: CW -- Value: 62
18:11:24.017 -> Direction: CW -- Value: 63
18:11:24.086 -> Direction: CW -- Value: 64
18:11:24.593 -> Direction: CW -- Value: 65
18:11:24.697 -> Direction: CW -- Value: 66
18:11:25.070 -> Direction: CW -- Value: 67
18:11:25.174 -> Direction: CW -- Value: 68
18:11:25.448 -> Direction: CW -- Value: 69
18:11:25.516 -> Direction: CCW -- Value: 68
18:11:25.687 -> Direction: CW -- Value: 69
18:11:25.789 -> Direction: CW -- Value: 70
18:11:26.130 -> Direction: CW -- Value: 71
-
Janos250
őstag
válasz
vegyszer #17800 üzenetére
Írtam választ, de - úgy látszik - elfelejtettem elküldeni, mert nem látom.
Most röviden:
https://prohardver.hu/tema/arduino/hsz_17346-17346.htmlHa nem boldogulsz, írj, és segítek.
-
ekkold
Topikgazda
válasz
vegyszer #17800 üzenetére
Pl. a PIN-ek kiolvasását, és tárolását intézheted egy megszakításban. folyamatosan. A küldés - visszaolvasás pedig mehet a főprogramban.
Amikor egy tárolt blokk megtelik, akkor a megszakítás beállíthat egy flag-et, és egy másik tárolóba folytatja az írást. a flag alapján a főprogram indítja a küldést. Amikor a második tároló telik meg ismét beállít egy flag-et, és az első tárolót kezdi írni (aminek a tartalma addigra már remélhetőleg mentve lett). Ha ez így időben nem jön ki akkor több/nagyobb buffer kell.
Új hozzászólás Aktív témák
Hirdetés
- AMD Navi Radeon™ RX 9xxx sorozat
- Autós topik
- Autós topik látogatók beszélgetős, offolós topikja
- Elektromos cigaretta 🔞
- HP notebook topic
- Filmvilág
- Bluetooth hangszórók
- Bemutatkozott a Poco X7 és X7 Pro
- Fejhallgató erősítő és DAC topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- További aktív témák...
- Törött, Hibás iPhone felvásárlás!!
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
- DELL PowerEdge R730xd 26SFF rack szerver - 2xE5-2680v3 (24c/48t, 2.5/3.3GHz), 64GB RAM, 10G, H730p
- Eredeti Windows 10 / 11 Pro aktiválókulcs AZONNALI SZÁLLÍTÁSSAL!
- Apple iPhone 14 Pro, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged