Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   863 / 872
(#) szendi001 válasza icserny hozzászólására (») Szept 25, 2025 /
 
Szia! Sikerült a kis OLED elindítása. Ezzel nem volt kínlódás, arányaiban egyszerűen ment. Már csak a HW-787AB van hátra. Ez teljes izgalom, nem igazán akart életre kelni.
(#) kobold333 válasza (Felhasználó 32034) hozzászólására (») Szept 27, 2025 /
 
Ajaj nekem. Jogos a morgás. Most éppen beteg vagyok, nem játszom a kütyüvel. De utána kipróbálom. Nagyon köszönöm a részletes leírást, és a segítséget...
(#) kobold333 válasza (Felhasználó 32034) hozzászólására (») Okt 4, 2025 / 1
 
Semmi nagy baj, még próbafekvésre sem kellett elmennem Már egyben vagyok, köszönöm.
(#) Frankye hozzászólása Okt 5, 2025 /
 

Elvi elakadás - segítségkérés

Sziasztok!
Két, elvi logikai bukfencbe is belefutottam közvetlenül egymás után, ebben kérném a segítségeteket.
Az első:
Egy nyomógombot kell figyelni, amelyet ha megnyomna, egy sor műveletet kell végrehajtani, összesen kb. 20 másodpercig ismételgetve őket. (A 20 mp nem kritikus, csak közelítő érték, aközben a nyomógombbal történő bárminemű beavatkozás irreleváns.) Eddig akár hogyan próbáltam megközelíteni, vagy a 20 mp nem volt tartható (folyamatosan futott az alprogram), vagy csak addig futott az alprogram, amíg a gomb le volt nyomva. Mit ronthattam el? Mi lenne a jó megoldás?
A másik:
A fenti alprogram részeként LED-et kell villogtatni (eddig nem volna baj, ez megy is), azonban elég "speciális" módon kellene villognia: egy rövid felvillanás után egy rövidebb szünet, majd ismét egy rövid felvillanás, és egy hosszabb szünet. Ennek kellene ismétlődnie. A delay szóba sem jöhet (blokkoló), viszont a millis () -szel nem sikerült a különböző idejű "szüneteket" megoldanom. Tudnátok egy példát mutatni, hogyan lehet ezt megvalósítani?
Minden segítséget előre is nagyon köszönök!
(#) wbt válasza Frankye hozzászólására (») Okt 5, 2025 /
 
Sülthal vagyok a C++-hoz, de ez nagyon megszakítás után kiált. A gombodnál vársz, amíg meg nem nyomják, addig zárt ciklus, kiugrasz. A kimenetnél, ha valami mintázatot kell csinálni, akkor én csinálok egy akárhány Hz-es időzítő megszakítást (ez kb 7-14-30Hz-re jön ki, kinek, mi tetszik). A mintázat hosszától függően byte vagy word-be bekerül a mintázat (amikor a főprogram akarja, nálad a gomb megnyomása). A megszakítás meg csak annyit csinál (mindig), hogy elrotálja a mintázatot és kiteszi a kimenetre a legfelső /legalsó (szabadon választott) bit értékét. Hibajelzés kivillogtatásához nekem eddig elég volt a word. (itt tudni kellene a nálad igényelt jel/szünet arányt persze). Általában, ha már megszakításban vagyok, beolvasom a gombokat is (lassú INT miatt a pergésmentesítés is megoldva), hipp-hopp meg van minden, a főprogram meg unatkozik. Mivel időzíteni is kell, kell egy számlálót létrehoznod, ami minden INT-nél csökken és ha nem 0, akkor LED-villogtat, ha nulla, akkor átugorja. Tehát gombnyomásodkor 2 dolgot kell tenned: 1. beállítod a pattern-t, beírod az időzítőszámlálódba a kívánt időt és alszol...mindent magától végig megcsinál az INT. (ha félreértettem, bocs, de valahogy így) Ha nagyon nagy a jel/szünet arány, akkor nem úszod meg a jel/szünet táblát és a legkisebb változáshoz kell igazítanod az ütemjeled (INT).
(#) Régi motoros válasza Frankye hozzászólására (») Okt 5, 2025 /
 
Fontos lenne tudni, hogy a gombnyomásod utáni folyamat közben, elég csak a folyamatban lévő műveletet végrehajtani, vagy mást is csinálni kell közben?
Első esetben megoldható, ha a végzendő folyamatot beteszed egy fügvénybe.
A gombnyomást a fő programban figyelned, ha van gombnyomás, indul a fügvény ahol nincs gomb figyelés.
Ha a fügvény lefut, a fő programba vissza térve újra aktív a gomb figyelése.

Ha a mellék folyamat közben mást is csinálni kell a fő programban, akkor keress rá az "arduino multitasking" kifejezésre. Az már bonyolultabb lesz, én nem mennék bele.

A másik problémád szintén hasonló módon megoldható. Csak neked manuálisan kell programozni, hogy hány villanás legyen, milyen hosszú magas és alacsony szintekkel.
(#) Frankye válasza wbt hozzászólására (») Okt 5, 2025 /
 
Nem állítom, hogy mindent megértettem abból, amit írtál, de megpróbálom kibogarászni. Köszönöm a segítséged.
(#) Frankye válasza Régi motoros hozzászólására (») Okt 5, 2025 /
 
Első körben valószínűleg nem kell mást csinálnia a programnak a villogás közben, de lehet, hogy később majd ki kell egészíteni valami egyébbel is. Köszönöm a válaszodat.
(#) sargarigo válasza Frankye hozzászólására (») Okt 5, 2025 /
 
Nem próbáltam, de nézd meg!
  1. const int buttonPin = 2;
  2. const int ledPin = 13;
  3.  
  4. unsigned long startTime = 0;
  5. bool running = false;
  6.  
  7. enum State {IDLE, ON1, OFF1, ON2, OFF2};
  8. State state = IDLE;
  9.  
  10. unsigned long stateStart = 0;
  11.  
  12. // Időzítések (ms)
  13. const unsigned long shortOn  = 100;   // rövid felvillanás
  14. const unsigned long shortOff = 200;   // rövid szünet
  15. const unsigned long longOff  = 800;   // hosszabb szünet
  16. const unsigned long cycleTime = 20000; // 20 másodperc
  17.  
  18. void setup() {
  19.   pinMode(buttonPin, INPUT_PULLUP);
  20.   pinMode(ledPin, OUTPUT);
  21.   digitalWrite(ledPin, LOW);
  22. }
  23.  
  24. void loop() {
  25.   unsigned long now = millis();
  26.  
  27.   // Gombnyomás figyelés (aktív alacsony)
  28.   if (!digitalRead(buttonPin) && !running) {
  29.     running = true;
  30.     startTime = now;
  31.     state = ON1;
  32.     stateStart = now;
  33.     digitalWrite(ledPin, HIGH);
  34.   }
  35.  
  36.   if (running) {
  37.     if (now - startTime >= cycleTime) {
  38.       running = false;
  39.       digitalWrite(ledPin, LOW);
  40.       state = IDLE;
  41.     } else {
  42.       switch (state) {
  43.         case ON1:
  44.           if (now - stateStart >= shortOn) {
  45.             digitalWrite(ledPin, LOW);
  46.             state = OFF1;
  47.             stateStart = now;
  48.           }
  49.           break;
  50.  
  51.         case OFF1:
  52.           if (now - stateStart >= shortOff) {
  53.             digitalWrite(ledPin, HIGH);
  54.             state = ON2;
  55.             stateStart = now;
  56.           }
  57.           break;
  58.  
  59.         case ON2:
  60.           if (now - stateStart >= shortOn) {
  61.             digitalWrite(ledPin, LOW);
  62.             state = OFF2;
  63.             stateStart = now;
  64.           }
  65.           break;
  66.  
  67.         case OFF2:
  68.           if (now - stateStart >= longOff) {
  69.             digitalWrite(ledPin, HIGH);
  70.             state = ON1;
  71.             stateStart = now;
  72.           }
  73.           break;
  74.  
  75.         default:
  76.           break;
  77.       }
  78.     }
  79.   }
  80. }
(#) Frankye válasza sargarigo hozzászólására (») Okt 6, 2025 /
 
Köszönöm, kipróbálom.
(#) Directors hozzászólása Okt 9, 2025 /
 

Hálózati feszültség jelenlét érzékelő modul

Sziasztok!

Szerintetek ez Bővebben: Link a modul küldhet jelet 60Hz 110V esetén is egy ESP32-nek mondjuk ? Vagy csak is 230V esetén működik ahogyan az a leírásban van ?
(#) proli007 válasza Directors hozzászólására (») Okt 9, 2025 /
 
Hello! Működni fog 110V/60Hz-ről is, legfeljebb a melák ellenállást kell cserélni az értéke felére.
(#) Directors válasza proli007 hozzászólására (») Okt 9, 2025 /
 
Köszi!
(#) kameleon2 hozzászólása Okt 10, 2025 /
 
(#) Bakman válasza kameleon2 hozzászólására (») Okt 10, 2025 /
 
Egy cikk hasonló tartalommal, magyarul: HWSW.
(#) Massawa válasza kameleon2 hozzászólására (») Okt 12, 2025 /
 
Felvásárolta.
(#) kameleon2 válasza Massawa hozzászólására (») Okt 12, 2025 /
 
Az a kérdés, ez jó lesz-e vagy sem? Mert nyilván nekik az új, saját eszközök lesznek a prioritás, nem a közösség.
(#) Massawa válasza kameleon2 hozzászólására (») Okt 16, 2025 /
 
Állitolag müködik a megszokott környezetben. Mechanikailag kompatibilis a régivel, azaz a régi dolgokkal is összedughato.
Persze sokkal többet tud, WiFi meg hasonlok is benne vannak.
(#) Régi motoros válasza kameleon2 hozzászólására (») Okt 17, 2025 / 1
 
A nem hivatalos további tervek megtekinthetőek ebben a videóban.
A hozzászólás módosítva: Okt 17, 2025
(#) proba válasza Frankye hozzászólására (») Okt 17, 2025 /
 
A parsic nevű programból lestem, minden programrész úgy van megírva, hogy csak a szükséges ideig fogja a processzort. ( késleltetés pl A=A+1 ha A= Y megy a feladatra) Ha így megírod, és a végére teszel egy olyan delayt ami a szokásos programfutási idővel együtt kiad kb pl 100 ms-ot, akkor egyszerű lesz az időzítés. ha 1 sec kell akkor Y=10 ha 100ms akkor nincs is szükség semmire, minden körben végrehajtható egyszer. Igaz az időzítések nem annyira pontosak, de sok feladatot lehet párhuzamosan futtatni. A programozás kicsit átgondolandó, hogy ne akadjon el sehol. A gomboknál pl felesleges a prell mentesítés, megoldja a prellnél nagy valószínűséggel hosszabb programciklus. ( viszont az állapotukat tárolni kell, hogy a cikluson belül minden rész ugyan azzal az értékkel dolgozzon.)
(#) Frankye válasza proba hozzászólására (») Okt 17, 2025 /
 
Köszönöm a kiegészítést. Hasonló elgondolás mentén haladtam magam is. Az időzítés egyébként egyáltalán nem kritikus.
(#) cua válasza Massawa hozzászólására (») Okt 17, 2025 /
 
Ennek mar tenyleg semmi koze az Arduino Uno-hoz, csak a neve es a board formaja.
Ez egy monster, a jo ertelemben...
(#) kaqkk válasza Frankye hozzászólására (») Okt 18, 2025 /
 
Én minden "szünetnek" csinálnék külön változót amit a megfelelő makróban már ergyszerű lenne használni (vagy az alap villogás többszörösét használnám a hosszabb értékekhez)
(#) Frankye válasza kaqkk hozzászólására (») Okt 18, 2025 /
 
Anno én is ilyen elven indultam el. Akkor a párhuzamos, több szálon végrehajtásnál csúszott el az ötlet. ("Multitasking" üzem.)
(#) majkimester válasza cua hozzászólására (») Okt 18, 2025 /
 
Tényleg nem sok. Csak a PCB forma, hogy a Uno Shield-eket rá lehessen tenni, de a general IO lábak kezelésére van rajt egy STM mikrokontroller, egyébként meg egy linux futtatására is alkalmas Qualcomm SoC. Egy új IDE is kell hozzá. Furcsa öszvér.
(#) Régi motoros válasza (Felhasználó 32034) hozzászólására (») Okt 18, 2025 /
 
Az 8x13 pixeles kijelző. De ha pakol rá az ember, már nem is látszik.
Hogy mire jó, az még rejtély, meg az is, mi volt a tervezők célja vele, de elvetemültebbek biztos kitalálnak rá valamit.
(#) asch válasza Frankye hozzászólására (») Okt 19, 2025 /
 
Csinálhatsz két párhuzamos állapotgépet, és az egyik vezérelheti a másikat. A "külső" gombnyomásra 20 másodpercig van aktív állapotban. A belsőt a külső aktiválása indítja és állítja le és közben ismételgeti amit kell neki. A sokat emlegetett állapotgépes megoldással így néz ki kb:
  1. static uint32_t process1time;
  2. static uint32_t process1state = 0;
  3. static uint32_t process2time;
  4. static uint32_t process2state = 0;
  5. static bool process2enabled = false;
  6. void process1(uint32_t time)
  7. {
  8.         uint32_t dt=time-process1time; // Az átfordulást jól kezeli, az eltelt időnek kell 2^31 alatt maradni amikor hasznaljuk
  9.         switch(process1state)
  10.         {
  11.         case 0:
  12.                 if(isButtonPressed())
  13.                 {
  14.                         process1time=time;
  15.                         process1state=1;
  16.                         process2enabled = true;
  17.                 }
  18.                 break;
  19.         case 1:
  20.                 if(dt>=20000)
  21.                 {
  22.                         process2enabled = false;
  23.                         process1state=0;
  24.                 }
  25.                 break;
  26.         }      
  27. }
  28. void process2(uint32_t time)
  29. {
  30.         uint32_t dt=time-process2time;
  31.         if(!process2enabled)
  32.         {
  33.                 process2state = 0;
  34.                 outputLed(false);
  35.         }
  36.         switch(process2state)
  37.         {
  38.         case 0:
  39.                 if(process2enabled)
  40.                 {
  41.                         process2time=time;
  42.                         process2state=1;
  43.                         outputLed(true);
  44.                 }
  45.                 break;
  46.         case 1:
  47.                 if(dt>=200)
  48.                 {
  49.                         process2time=time;
  50.                         outputLed(false);
  51.                         process2state=2;
  52.                 }
  53.                 break;
  54.         case 2:
  55.                 if(dt>=200)
  56.                 {
  57.                         process2time=time;
  58.                         outputLed(true);
  59.                         process2state=1;
  60.                 }
  61.                 break;
  62.         }
  63. }
  64. void loop()
  65. {
  66.         uint32_t t=millis();
  67.         process1(t);
  68.         process2(t);   
  69. }


Ha hosszútávon pontos időzítést akarsz, akkor
  1. process2time=time;
helyett
  1. process2time+=200;
-at írhatsz. Ilyenkor észnél kell lenni, hogy el ne rontsuk, de ha nem rontjuk el, akkor hosszú távú átlagban is tűpontos lesz minden. Akár használhatsz mikroszekundomos órát is ezzel a technikával.
(#) asch válasza Régi motoros hozzászólására (») Okt 19, 2025 /
 
A hátránya, hogy szerintem sokkal érzékenyebb lesz mint egy Arduino UNO.
Nem hülyeség egyébként teljes Linuxot tenni Wifihez, mert amint drót nélkül kapcsolódunk azonnal kritikussá válik, hogy titkosítva legyen a kapcsolat, és ezt Linux alatt gyerekjáték megcsinálni - például SSH-val -, mikrovezérlő alapon meg egyáltalán nem egyszerű.
Szerintem a díszdobozos UNO árába beleférhet ez is, olyasmi árúnak képzelem, mint egy router. A háttértár és a RAM az általam elképzelt célokra jócskán túlméretezett, de az nem baj. Az STM-eket szeretem, jó doksijuk van és jók hozzá a toolok is.
(#) cua válasza asch hozzászólására (») Okt 19, 2025 /
 
(#) Frankye válasza asch hozzászólására (») Okt 19, 2025 /
 
Köszönöm. Nem teljesen világos (még) minden, de majd tanulmányozom.
Következő: »»   863 / 872
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem