Hirdetés
-
GAMEPOD.hu
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
-
Janos250
őstag
válasz Dißnäëß #16599 üzenetére
"Mi a különbség print és printf között ?"
A printf-ben megadsz egy szöveg mintát, hogy "így nyomtasd ki", és ebben szövegben a printf-ben az idézőjeles szöveg után felsorolt, kinyomtatandó változók helyét egy % jellel jelzed, és hogy milyen formában, azt meg közvetlenül a % után megadott specifikáló kóddal.
Pl: előjeles decimális d, vagy i, előjel nélküli decimális u, hexa x, stb.
Azt is megadhatod, hogy hány jegyre nyomtasson, stb.
A sortörést a \n -nel adod meg.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
válasz ekkold #16588 üzenetére
Hogyan tudunk függvénybe bevinni előre meg nem határozott számú paramétert?
Közben csináltam mintapéldát, hogyan tudjuk belerakni containerbe, akármennyi van is, és a függvényben iteratorral annyit használunk fel, amennyi van./*
mintapelda elore meg nem hatarozott szamu parameter atadasa fuggvenybe iteratorral
Minden olyan container hasznalhato, aminek van .begin() es .end() iteratora
peldaul: vector, list, deque, map, set, stack, stb
*/
#include <iostream>
#include <vector>
#include <list>
#include <deque>
using namespace std;
//void parameterAtadasVectorral(auto parameter){ // ez csak C++14 -tol el
void parameterAtadasVectorral(vector <int> parameter){
Serial.println("\nfelhasznaljuk a vector elemeit:");
for (auto i = parameter.begin(); i != parameter.end(); ++i){
//vagy: for (vector<int>::iterator i = parameter.begin(); i != parameter.end(); ++i){
Serial.println(*i);
};
} ;
void parameterAtadasListaval(list <int> parameter){
Serial.println("\nfelhasznaljuk a lista elemeit:");
for (auto i = parameter.begin(); i != parameter.end(); ++i){
Serial.println(*i);
};
} ;
void parameterAtadasDequeSorral(std::deque <String> parameter){
Serial.println("\nfelhasznaljuk a deque elemeit:");
for (auto i = parameter.begin(); i != parameter.end(); ++i){
Serial.println(*i);
};
} ;
void setup() {
Serial.begin(115200);
delay(1000);
vector <int> enVectorom {10,115} ;
enVectorom.push_back(8); // a vegere betesz egy elemet
parameterAtadasVectorral(enVectorom) ;
std::list<int> enListam = { 9,7,3,29 };
enListam.push_back(50);
parameterAtadasListaval(enListam) ;
std::deque<String> enDqueueDuplaveguSorom= { "macska","kutya","lo" };
enDqueueDuplaveguSorom.push_front("kismalac"); // elejere teszi
enDqueueDuplaveguSorom.push_back("pipi"); // veger teszi
parameterAtadasDequeSorral(enDqueueDuplaveguSorom) ;
} ;
void loop() {
};
/*
Ezt irja ki:
felhasznaljuk a vector elemeit:
10
115
8
felhasznaljuk a lista elemeit:
9
7
3
29
50
felhasznaljuk a deque elemeit:
kismalac
macska
kutya
lo
pipi
*/[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Tankblock
aktív tag
válasz Janos250 #16604 üzenetére
Szia,
ezen példáidban pont hogy meghatározott számú lesz.... std library elemei a bemeneten....
Ha nem tudod hogy mennyi, akkor a (...) lesz használatos, de ugye ezzel csak annyi lesz hogy fordítási időben lesz meg.....Amit csinász az standard C ben is egy láncolt listára is mutathatna.... akár egy pointer is....
ennyi erővel struct ba tehetnél egy void * és egy type paramétert és ebből egy listát/vectort, na akkor már bármit beletehetsz. Utána típus castolással vissza tudod alakítani. Ebbe még függvény pointert is tehetsz....
Release the Beast....
-
ekkold
Topikgazda
válasz Janos250 #16600 üzenetére
Köszönöm! Kb ilyesmit találtam én is, a
va_arg
()-nak meg kell adni milyen típusú paramétert olvasson fel, és visszaadja az értékét. Tehát vagy meg kell adni, hogy hány paraméter van aktuálisan, vagy a legutolsó paraméternek kell pl .nullának, vagy mondjuk nullpointernek lenni, amiből a program tudhatja, hogy ez volt az utolsó paraméter. Azon gondolkoztam, hogy írok egy printf()-hez hasonlóan működő függvényt ami alfanumerikus LCD-re ír, de kevesebbet tud mint a printf (csak egész számot és c stringet kezelne), és cserébe sokkal kevesebb erőforrást fogyasztana mint a sprintf() + lcd-re írás.http://skory.gylcomp.hu/ http://www.skory.z-net.hu/ https://skori.hu/ https://skori.spacetechnology.net/ https://www.hobbielektronika.hu/apro/index.php?u=1574
-
Janos250
őstag
válasz Tankblock #16605 üzenetére
Igen, így van.
"előre meg nem határozott számú paramétert"
Rossz volt a megfogalmazás, mert valóban egy paramétert visz be.
A helyes megfogalmazás az lett volna, hogy "előre meg nem határozott számú adatot" . Ezalatt azt értettem, hogy a függvény írásakor nem tudjuk, hogy hány beviendő adat lesz. Persze, a ... a feladathoz jobban passzoló. Ezért is kerestem ki a neten először azt, mert már nagyon régen csináltam, gőzöm nem volt, hogyan is kell. Ezt tettem a 16600-ba.
"Amit csinász az standard C ben is egy láncolt listára is mutathatna.... akár egy pointer is". Teljesen igazad van, de én azok közé tartozom akiknek feláll a szőr a hátukon a standard C nagyon széles pointer használatától. Nem is foglalkoztam a C-vel, csak később a C++ -al. Igyekszem nem lemenni alacsonyabb szintekre, ha nem muszáj. Épp eleget programoztam assemblyben ahhoz, hogy kerüljem az alacsonyabb szinteket. Persze azért nem akarom a COBOL szószátyár szintjét sem, de a C++ az szimpatikus, szimpatikusabb, mint a pascal bővítések.
"ennyi erővel struct ba tehetnél". Igen az általánosabb, nem macerás.Én azért úgy gondoltam/lom, hogy nem káros emlékeztetni/megmutatni/memóriát frissíteni (ki hol tart a programozásban) azt, hogy a vektor, list, deque, és egyéb konténerekről se feledkezzünk meg, és hogy az iterátorok nem felesleges dolgok, meg az auto se, ezek néha egyszerűbbé teszik az életünket, mintha visszamennénk a standard C szintre. Ott nem kell se iterátor, se auto. Mellesleg most muszáj a standard C-vel foglalkoznom, mert kíváncsiságból az ESP32 net kezelését bogarászom mélyebben, és az LWIP ugyebár a standard C-ben íródott.
Ez legalább emlékeztet arra, hogy minden külvilággal való kapcsolat "file". Tulajdonképpen nem is tudom, hogy a mikrokontrolleres világban a perifériákra miért nem a bevált file kezelést alkalmazzuk, ahelyett, hogy ezerféle könyvtárat használnánk, és összevissza hibákat okoz, hogy egy neten talált program nem megy, mert más könyvtárat használ.
Az SPI, stb. kényelmesen kezelhető file-ként is az ESP32-n is.
Hű, hosszú lett, bocs mindenkitől.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
válasz ekkold #16606 üzenetére
"írok egy printf()-hez hasonlóan működő függvényt"
Hú, valamikor a ... használatára mintapéldaként pont egy ilyet láttam a neten, de már nem emlékszem, hol.
LCD-re meg igazán megírhatná már valaki, hogy file-ként használjuk! (Tudom, ez az én mániám)[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
-
Tankblock
aktív tag
válasz Janos250 #16607 üzenetére
Szia
No problem, ismerem az érzést. Nem hiába szoktam a C++ referenciát betenni.
Nincs a standard C vel sem semmi probléma. Feladathoz választunk megoldást, és nem fordítva. Addig örülj amíg nem más által összerakott projectbe kell új featuret írnod, full nulla dokumentációval, kesze kusza arhitechtúra alatt....Amúgy a structos megoldást egyszer már megcsináltam demo szintjén, működik szépen, a hátránya a castolás overheadje.
Az összevissza könyvtárazást ar Arduino hozta el véleményem szerint. és mivel kényelmes elfejeltettek programozni, csak az jön hogy nem működik.... Igen ez egy szép szakma....
Release the Beast....
-
Janos250
őstag
Való igaz, hogy mondjuk az UNO-n és se akartam fájlként kezelni semmit, a PIC-eken meg végképp nem. Attól függetlenül, hogy nincs háttértároló, még a UNIX-ból adódóan eléggé elterjedt a "minden fájl" szemlélet. Tényleg az ESP-ben gondolkodom, de én azt hiszem, növekszik azoknak a tábora, akik áttérnek valamilyen 32 bitre.
ESP32-n például a WiFi is fájl. Lehet rá fájlként írni, róla fájlként olvasni, és nem kell hozzá külön library, hanem a C-ben szokásos file kezelési módon használható.
Például:FILE* filePointer = fdopen(fileSorszama, "r+");
fprintf (filePointer, "Szevasz!\n") ;[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Tankblock
aktív tag
válasz Janos250 #16611 üzenetére
Nem véletlenül a ESP32 Flash structúrájában hasznáét SPIFF et használod itt, mint háttértár?
Arduino alatt lehet hogy az is be van hozzá includálva.
Ahol minden egy file az UNIX alapú operációs rendszerek.
ESP32 FreeRTOS használ és az nem egy operációs rendszer sokkal inkább egy scheduler.Release the Beast....
-
Janos250
őstag
válasz Tankblock #16612 üzenetére
(I)"FreeRTOS használ és az nem egy operációs rendszer sokkal inkább egy scheduler."(/I)
Hát, azért az OS, ha nem is hejde...
Igaz ugyan, hogy boldog és boldogtalan ráhúzta a freeFTOS-t a legkülönbözőbb kontrollerekre, és gondolom, pl. az AVR-ekre megírt verziók csak schedulerek.
A freeRTOS tartalmazza például az lwip-t, ami egyértelműen UNIX filozófia.
Onnan tudom, hogy az ESP32 net kezeléséről kevés info van a neten, de a UNIX-hoz rengeteg, és azt kell nézni, mert teljesen passzol az ESP-hez. A teljes socket kezelés, miegymás. A nevek is megegyeznek.
Espéék nem találták fel a spanyol viaszt, hanem - jó kínai módra - alkalmazzák azt, amit mások megcsináltak.
Van file leíró tábla, ahova a file-ok be vannak jegyezve. A soros port sorszáma (file descriptor) például 2.
Futtasd le a következő programot:void setup() {
Serial.begin(115200);
delay(2000);
FILE* filePointer = fdopen(2, "r+");
fprintf (filePointer, "Szevasz ESP!\nEn vagyok a soros port\n") ;
fclose(filePointer);
} ;
void loop() {};Vagyis eredendően a Serial is file, csak rá van ültetve mindenféle Arduino dolog.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Tankblock
aktív tag
válasz Janos250 #16613 üzenetére
[link] A Wiki is pont azt mondja hogy :
RTOS typically does not have the more advanced features that are typically found in operating systems like Linux and Microsoft Windows, such as device drivers, advanced memory management, user accounts. The emphasis is on compactness and speed of execution. FreeRTOS can be thought of as a thread library rather than an operating system, although command line interface and POSIX-like input/output (I/O) abstraction are available.
Ezért írtam inkább egy scheduler mint egy rendes operációs rendszer. Bare Metálba kell megírni hozzá egy csomó mindent, ami meg van annak meg örülni kell.
[link] pont arról beszél, hogy mikor éri meg milyen projectet építeni. 10 perc körül....
Release the Beast....
-
Janos250
őstag
válasz Tankblock #16614 üzenetére
Igazad van, az RTOS nem operációs rendszer olyan értelemben, hogy nem tudok konzolról ilyen-olyan userként bejelentkezni, programokat futtatni, de nekem erre egy mikrokontrolleren nincs is szükségem. Amire szükségem van, azt tudja. Legalábbis az Espressif kiegészítéseivel. Tudja a fájlok kezelését úgy, hogy ha írok neki egy fájlnak a C szerinti megnyitását, tudja mi az, vagy ha azt mondom neki, hogy cout, tudja miről beszélek.
Ha valamelyik perifériát fájlként akarom használni, akkor persze meg kell hozzá írnom a drivert, de ezt be tudom illeszteni az ő rendszerébe, beírja a fájl leíró táblába, és onnantól már fájlként (is) tudom használni. Kell persze saját magamnak írni drivert, de már a DOS-hoz is saját magunk írtunk COM port kezelő drivert, mert az eredeti nem megszakítással dolgozott, pedig az Ix86x proci tudta.
Vagy, ha nem akarom az ő thread kezelését használni, hanem a programban szerepel a thread és a join, tudja, mit akarok, a fordító le tudja fordítani az ő API-jaira.
Végezetül, ami elvárásom nekem van egy mikrokontroller nem tudom, minek nevezzemjétől, az ebben az ESP32-ben benne van. Mellesleg viszonylag korszerű fordítót használ, bár nagyon sok mindent nem használok ki, mert például lambdát csak minden második szökőévben, bár azzal számos dolog tömörebb.[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Undoroid
őstag
Sziasztok!
Ismét a szakértelmeteket szeretném segítségül hívni! Tudjátok, hogy teljesen kezdő vagyok ebben a témában, de remélem elnézitek ezt Nekem!
Nemrégiben vettem egy kezdőkészletet és szereztem hozzá egyszerű próbafeladatokat, amiket egymás után ki is próbáltam, de...
...de volt olyan feladat is, aminek a program legelején szerepelt egy sor, ami a példában szereplő főalkatrész nevét tartalmazta és minden esetben ".h" -kiterjesztésű (?) volt. Ahogyan ITT is: " #include <DS18B20.h> "
A próbafeladataim egytől - egyig a teljes programot tartalmazták, de amiben ez a sor benne volt ott már a feltöltésnél problémák akadtak...
Kérdés: mire szolgál ez a sor? Hogyan kell az ilyet pótolnom, mert nyilván nélküle nem megy a dolog!
Biztos pofonegyszerű a válasz, de Én nem szégyellek kérdezni, ha valamit nem tudok!
https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-
-
válasz Undoroid #16616 üzenetére
Ez egy ún. header fájl, amiben konstansok, függvény deklarációk, makrók vannak. Ez azért kell, hogy az objektumfájl le tudjon fordulni. Utána, hogy működő programot kapj, hozzá kell linkelni a könyvtárat is. Tehát a megoldás az, hogy fel kell telepíteni Arduino IDE-ben a könyvtárat, és akkor már fordulni fog a kód. Mármint nem te linkelsz, hanem az IDE helyetted, de a háttérben ez történik, többek között.
[ Szerkesztve ]
I did nothing, the pavement was his enemy!
-
nagyúr
válasz Undoroid #16616 üzenetére
Az Arduino IDE-ben keresd meg a könyvtárak kezelését, és írd be a keresőbe az eszköz nevét! Ha szerencséd van, 1db találatot kapsz rá, ami pont ez lesz.
Ha nincs szerencséd, több találatot is kaphatsz, amiből lehet mind jó, de lehet egyik sem. Ilyenkor egyesével töltsd le, próbáld ki, ha nem jó, töröld, és töltsd le a következőt.
Abban az esetben, ha egyik fenti megoldás se működik, a Google-ben keress rá arra, hogy "DS18B20.h", valószínűleg találsz egy github oldalt, onnan töltsd le az összes fájlt zip-ben:
majd csomagold ki az Arduino könyvtárban található library könyvtárba.[ Szerkesztve ]
-
Undoroid
őstag
Szia!
Köszönöm a részletes ismertetőt!
Megelőztél! Pontosan ez lett volna a következő kérdésem! Ezek hiánya okozta a problémát, amik nem szerepeltek a próbafeladatokban! Végre megnézhetem az RF-modult működés közben...
Mindenkinek köszönöm a segítséget!
[ Szerkesztve ]
https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-
-
kavalkád
aktív tag
teljesen kezdő vagyok ebben az Arduino bizniszben, elektronikai ismeretem erősen korlátozottak, úgyhogy előre is bocs ha valami triviálisan egyértelmű kérdéseim lennének most vagy a jövőben.
egy egyszerű kis stepper vezérlőt próbálok összerakni, amit Uno vagy Nano vezérelne, DRV8825 vagy A4988-as vezérlővel. kapcsolási rajzot találtam, szoftvert meg tudom írni, amiben viszont segítség kellene az, hogy mivel transzformáljak áramot hálózatról.
az Arduino-nak kellene 5 V, viszont a stepper olyan 35V körül szeretném táplálni (a leírása szerint ez a max amit tud) olyan 1.5-2A-el. hogy tudnám megoldani, hogy egy eszközzel le tudjam venni mindkét feszültséget? erre valók a step-up/step-down eszközök vagy teljesen rossz nyomon járok?
[ Szerkesztve ]
-
nagyúr
válasz kavalkád #16622 üzenetére
erre valók a step-up/step-down eszközök?
Pontosan. Kellene egy dedikált 35V-os táp, és abból kellene előállítani egy step-down konverterrel az 5V-ot. Bár nem tudom, hogy van-e belőle olyan, ami ekkora tápfeszültségről is működik, emiatt esetleg lehetne helyette egy külön usb-s töltő az Arduino tápja.
Esetleg ha mindenképp 1 eszközt szeretnél, egy olyan trafót lehetne használni, ami mindkét tápfeszültséget elő tudja állítani, és abból csinálni egy stabilizált tápot, de ebben szerintem a hobbielektronika topikban több segítséget kapsz.
[ Szerkesztve ]
-
Janos250
őstag
válasz kavalkád #16622 üzenetére
Egy lehetőség pl:
48V-os táp. Olyat lehet kapni, én is használom. Egyik LM2596HVS (a HVS elbírja a 48 V-ot, a sima nem!) előállítja a 35 V-ot, a másik az 5V-ot (vagy 3.3 V-ot, ha korszerűbbet választasz UNO helyett). Vagy Aryes javaslatai, azok is jók!Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
_q
addikt
Mit gondoltok a raspberry pico-ról? Én ESP32-t használok, esetleg arduino minit és nem látom hol van az előnye. Vagy ez nem is erről szól, hogy előnye lenne, csak a raspberrysek egy rést fedtek le vele, a név meg eladja a terméket?
-
Janos250
őstag
Régebben én is megnéztem, de úgy döntöttem, maradok az ESP32-nél:
Okok:
A legfontosabb, hogy az ESP32-n bótilag ott a WiFi
Ugyanígy 2 mag van benne, amihez elég jó a kezelés, nem tudom, ez hogyan van a RP-nél
C++11 fordító van hozzáillesztve, lehet, hogy az RP-nél ez jobb, mert ARM proci van benne.
Vannak, akik szidják az Arduino kezelő felületét, de én megszoktam, nekem jó.
Az ESP32-n van még egy csomó hardver (periféria) lehetőség, ami hasznos, de az RP-n nincs.
Az, hogy az ESP32 összes lábát bármire tudom használni, azaz bármit át tudok helyezni bármelyik lábró bármelyik másikra, az számomra előny.
Az ESP32-re rengeteg kidolgozott program, könyvtár van, fene tudja, mi a helyzet az RP-vel.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
tonermagus
aktív tag
Sziasztok!
Sebességgel kapcsolatos kérdésem lenne.
Egyik kollégám folyamatosan csesztet, hogy a már meglévő Arudino Mega 2560-on futó projektemet ültessem át ESP32/STM32-re, mert hogy azok sokkal gyorsabbak.
Ebben igazat adok neki, tény hogy azok a mikrovezérlők jóval gyorsabbak.
Viszont én úgy gondolom, hogy arra a feladatra amire én használom az Arduino Mega 2560 sebessége is túlzó.
Ebben kérném a segítségeteket, hogy ti mit gondoltok? Elég a Mega?
A kód kb. ~300 sorból áll.
Amit a fő loop csinál dióhéjban:
- másodpercenként 2 alkalommal GPS koordinátát olvasok be (2Hz)
- ezekhez a koordinátákhoz képest looponként számításokat végzek. Irány, távolság, szatelitek száma, stb.
- 1 db UART porton keresztül looponként beolvasok 10 sort
- 1 db UART porton keresztül looponként kiírok 5 sort
- 8 db PWM értéket mérek digitális bemeneten
- 10 db PWM értéket írok ki digitális kimeneteken
- Másodpercenként 10 alkalommal olvasok be i2c eszközről adatot
- a kód többi része if feltételek és matematikai sorokból áll össze, jellemzően soronként egy feltétel/művelet és tök egyszerű összeadás/kivonás
- Feltétel teljesülése esetén EEPROM-ba írok 10 memóriaterületre adatot (ez csak ~10 secenként forul elő)
Szerintem ez egy Arduino Megának bele kell hogy férjen a számítási sebességébe, jól gondolom?
Nem akarnék teljesen feleslegesen áttérni ESP/STM-re csak azért mert az gyorsabb, de amúgy gyakorlatilag semmi különbség nincs a kettő között... Én úgy gondolom a vékony keresztmetszet jelenleg a GPS modul...
Amúgy meg a sok EEPROM kezelés miatt úgy hallottam célszerűbb Arduinot használni. Talán annak jobb a memória kezelése.
Ti mit gondoltok? -
nagyúr
válasz tonermagus #16629 üzenetére
Egész pontosan mi az a jelenlegi konfiguráción, amit lassúnak talál? Lehet, hogy egyszerűen csak szoftver-optimalizálásra van szükség.
Amiket írtál, hogy másodpercenként 2 alkalommal, meg 10 másodpercenként csinálsz feladatot, ezeket gondolom aszinkron módon oldod meg, nem delay()-jel[ Szerkesztve ]
-
tonermagus
aktív tag
Hát ez az, nem lassú semmi
Egyszerűen csak profibbnak érezné ha ESP/STM-en futna...
Természetesen nem használok blocking delay()-t, csak millis()-el operálok.Személyes véleményem hogy hiába lenne gyorsabb a hardware, az adatok amikkel dolgoznom kell úgyis csak 500ms-enként jönnek... Szerintem ezt röhögve tudja a Mega.... Még ha 100ms-enként jönne az adat, gondolom még az sem lenne neki probléma.
[ Szerkesztve ]
-
őstag
válasz tonermagus #16632 üzenetére
Nekem anno azt mondta az egyik tanárom, hogy mindig van jobb, olcsóbb meg gyorsabb. A jó mérnök nem az, aki mindenből a legjobbal dolgozik, hanem aki tudja, hogy mibe fektesse a leghasznosabban a forrásait.
Ha valóban szükséged lesz valami miatt platformot váltani, akkor pedig majd fogod tudni, hogy mit keress, mi az amiből jobb kell.
Mások számára a kondi fáradós, nekem farad-os...
-
nagyúr
válasz tonermagus #16632 üzenetére
Egyszerűen csak profibbnak érezné ha ESP/STM-en futna...
Hülye sznob...
-
Tomika86
senior tag
válasz tonermagus #16632 üzenetére
A jelszintek is változnak ESP32 esetén, 3,3v lehet maximum.
[ Szerkesztve ]
-
Janos250
őstag
válasz tonermagus #16629 üzenetére
"Egyszerűen csak profibbnak érezné ha ESP/STM-en futna..."
Nem az a lényeg a váltásnál, hogy "profibb"!
A korszerűbb technikára való áttérésnek az az elsődleges előnye, hogy megtanulod.
Évek múltával úgyis mindenből a korszerűbb jön elő. Én használtam a Z80-at. Ami akkor kellett, meg tudtam vele oldani, mert nem is gondoltam olyan dolgokra, ami azzal ne lett volna megoldható. Ma már nagyon nem szívesen dolgoznék Z80-al, pedig még valószínűleg kerülne 1-2 darab belőle, és vannak olyan dolgok, amit azzal is meg tudnék oldani.
A jelen problémára visszatérve: Az, hogy egy csomó minden hardverben meg van oldva, ha azokat az emberfia megismeri, azok azért hasznosak.
Továbbá a multitasking szisztéma is olyan, hogy nagyon sok mindent világosabban, áttekinthetőbben lehet vele megoldani. Mondok egy példát a saját dolgomból.
Hőmérő méri a hőmérsékletet (akár Z80-al is meg tudnám oldani, de nem teszem), és időnként WiFi-n átküldi egy másik lapra, ami mindenféléket csinál. Hogyan oldjuk ezt meg? Időnként lekérdezzük a ciklusban, hogy jött-e új adat, ha igen, akkor azt beolvassuk, és beírjuk, hogy onnantól kezdve azzal számoljunk.
ESP32-n: egyik task semmi mást nem csinál, csak megnézi, érkezett-e új adat, ha igen, akkor azt beteszi a globális változóba, így mindig automatikusan a legfrissebb adattal történik a további meló. Az "időnként megnézi" azt jelenti, hogy semmi más nincs egyik taskban, mint "megnézi", ha van beolvassa, majd delay. Ugyanis a multitasking esetén a delay nem jelenti azt, hogy ténylegesen várakozik, hanem, hogy a várakozás alatt egyszerűen nem megy rá a vezérlés arra a taskra, hanem fut a többi. Az már csak hab a tortán, hogy két mag van, és megválogathatjuk, ha akarjuk, hogy melyik task melyik magon fusson. Így ídőkritikus dolgokat lehet tenni önállóan az 1-es magra, ami meg ráér, az mehet minden a 0-ra. Ha meg nem akarjuk, akkor rábízhatjuk az oprendszerre, hogy válogasson, azaz egyszerűen használjuk a C++ thread-jét
Például:thread szal1(helloWorld1);
thread szal2(helloWorld2);Ha kell:
szal1.join();
szal2.join();
Ő majd eldönti, mit hova tegyen.
Ha ezeket megtanulod, akkor jössz rá, mire is használd. Evés közben jön meg az étvágy."- 8 db PWM értéket mérek digitális bemeneten
- 10 db PWM értéket írok ki digitális kimeneteken"Nem tudom, mennyire jól van a PWM a Megán megoldva, de STM-en, ESP32-n például igen kényelmesen, hardverből.
[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Tankblock
aktív tag
válasz Janos250 #16637 üzenetére
Szia,
Ha már Thread és kezelés, ESP32 -n ott a FreeRTOS, az legalább threadsafe módon tud megszakításból is adatokat kezelni, van benne MUTEX, miegymás....
Ha nem vagy jártas Design Patternekben a sokszálazáskor random fogsz találkozni a az ugynevezett Deadlock jelenséggel, ami kezdőnek megtalálni nem triviális. Azt nem mondom egy szóval sem hogy a FreeRTOS nem lehet ilyet csinálni, mert lehet, de a dokumentációjában nagyban segít benne.
AVR ekben nagyszerűen van hardwaresen a PWM megoldva. A Mega az egy 2560 as (még ANSI Cből vagy Assemblyből is )... [link]
Volt alkalmam könyékig turkálni pár kódban, van amire nem használnak ESP-t csak bevált technológiát hiába régi.Release the Beast....
-
Janos250
őstag
válasz Tankblock #16638 üzenetére
Igazad van, de éppen a mikrokontrolleres alkalmazásban gyakran vannak egymástól teljesen független teendők. Például az egyik szál nem csinál mást, csak egy hőmérsékletet olvas, és ez alapján állít egy PWM-et, és ezeket senki más nem használja. A másik szál meg figyeli a lángérzékelő detektort, hogy nem lángol-e az Anetka (kigyulladni szerető 3D nyomtató), és ha igen, akkor mindent áramtalanít, vagy szirénázik, vagy akármi. Hát az ilyennel nagy tudomány lenne deadlockot generálni.
Aztán, ha egy több bájtos adatot egy valaki ír, de többen olvassák, akkor meg lehet flaget használni.
És persze - mint írtad - a freeRTOS tudja ezeket kezelni. A minták szerintem nem igazán használhatók a sokszálazáshoz.Megnéztem, tényleg rendben van a PWM.
Én továbbra is úgy vagyok vele, hogy ha ott van a ládafiában a Mega, akkor ne dobja ki, használja, de venni már ne vegyen, hanem vegyen korszerűbbet. Elsősorban azért, hogy megtanulja.Én mindenesetre maradok az ESP-nél, pedig valóban van még nekem Z80 is. Amit mellesleg - a maga idejében - kedveltem is. Lehet, ezért szerettem a ZX81-et, és a Spektrumot is.
[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
nagyúr
válasz Janos250 #16639 üzenetére
Ne becsüljük alá annak a jelentőségét, hogy nagyon sokszor azért használnak egyszerűbb processzort, mert egyszerűbb-> megbízhatóbb. Nem ok nélkül használtak például még a 90-es évek végén is Intel 8086-os CPU-kat az NASA űrsiklóiban: a lassabb órajel, a nagyobb csíkszélesség jobban tűrte a szélsőséges körülményeket, kiröhögte az űrbéli háttérsugárzást.
Én ha egy feladatot meg tudok oldani AVR-rel, nem fogok ESP-t használni, ha nincs szükségem a nagyobb tudásra. Miért? Mert régebbi, kipróbált technika, jobban tűri a hibákat (például: ESP-n lévő flash chip 3,6V tápfeszültségen megfő, egy AVR 7-8V-ot simán kiröhög). -
Tankblock
aktív tag
válasz Janos250 #16639 üzenetére
Szia,
Arra próbáltam reflektálni, hogy kezdőnek csak óvatosan az ajánlásokkal, mert általa nem vagy csak nehezen feloldható problémák jöhetnek elő. A Design Pattern meg azért szükséges, mert adott problémára nyújt működő megoldást.
Aztán ha megy a C,C++, ... bármilyen programnyelvben is akkor lehet mélyre ásni. Tanulási görbe mellett fontos a sikerélmény is.
Én mondjuk a Micro Phytonnal vagyok úgy hogy életidegen feláldozni egy csomó erőforrást egy interpreterre, de ki tudja merre megyünk.
Lassan FPGA is olyan olcsó lesz h csak na és abban meg mindent is lehet csinálni még Linuxot futtató ARM magokat is lehet szimulálni.Release the Beast....
-
Szancsó
aktív tag
Sziasztok!
Elkezdtem próbálkozni Arduino Nano -val és lenne vagy 2 kérdésem, az egyik "égetőbb".
1) LED vezérlésre lenne használva, ehhez a LED 12V-os tápjáról hajtanám meg egy kis DC-DC step-down átalakítóval, amin a poti segítségével 7V -ra lőttem be a kimeneti feszültséget. A gondom ott van, hogy a szabályzó melegszik, de nem kicsit. Ennek egy zárt dobozkában lesz a végleges helye és nem szeretnék még egy 5V -os bemenetet is használni. Van valakinek ilyen bevált szabályzó, ami nem fő fel és elérhető mondjuk EU -n belül? Végszükség esetén lehetne valami hűtőbordás verzió és azt kirakom akkor a dobozból a LED tápja mellé, de az sem lesz épp huzatban
(Valami ilyesmi lehet.)2) unsigned long változókban tárolok "időt" és van egy függvény, ami 2 idő különbségét adná vissza. Az mitől lehet, hogy ehelyett fixen a típus max. értékével (4294967295) tér vissza?
My story is one of many thousands, and the world will not suffer if it ends too soon.
-
Janos250
őstag
válasz Tankblock #16642 üzenetére
Az igaz, hogy kell a sikerélmény, és ebben az UNO verhetetlen, mert túlcsordul tőle a net. Hogy kinek mit ajánlunk, az egy sokkal általánosabb didaktikai probléma. Van, aki azt mondja, hogy a kezdő kezdjen a régebbi dolgokkal, van aki azt, hogy a kezdő is a korszerűvel kezdje. Nekem ezidáig egyetlen pattern se volt hasznomra, de lehet, nem igazán kerestem. A C++ az UNO-n és a többin is ugyanaz - kibővítve néhány spec Arduino dologgal - és persze régebbi, vagy újabb verziójú fordító, de az újabban is (majdnem) minden benne van, ami ami a régiben, alig van valami, ami obsolete.
Az FPGA dolgot nem tudom. Elég közeli ismerősöm diplomamunkája volt az FPGA, de azóta elő se vette, mondván, nincs rá igazán igény, inkább az általánosabb megoldásokat kedvelik.
Majd meglátjuk, én csak néha ránéztem, mit csinál, de soha nem foglalkoztam FPGA-val.
Egyébként az a véleményem, hogy ami UNO-n elmegy, az általában korszerűbbön is elmegy, és akkor a felhasználót idővel csak hajtja a kiváncsiság, hogy továbblépjen, de ha ehhez lapot kéne váltani, akkor inkább ott ragad.[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Undoroid
őstag
válasz Szancsó #16647 üzenetére
Akkor valószínű, hogy azért melegszik ennyire az a modul, mert kitekerted a trimmer-t 'nullára' és ez annak a modulnak nagyon nem tetszik! Az "ilyesmi" kimenetére mit kötöttél?
Ha a teljes terhelésed áramfelvétele nem haladja meg az 1A-es határt, akkor a DC-DC konverter helyett használj egy 7805-ös stabkockát! Nem árt rá egy kis hűtőzászló, de vigyázz, mert negatív potenciálon lesz a hűtőzászlód!
https://logout.hu/bejegyzes/ngabor2/nyugodj_bekeben_bordoi.html _ https://robo-venture.com -> Az ökotudatos, digitális közösségi alkotóműhely <-
-
kavalkád
aktív tag
egy Nema 17-es stepper motornak (nincs benne nyomaték áttét) mennyi kb. a maximálisan elérhető fordulatszáma DRV8825 illetve A4988 vezérlővel ha a motor 24V-ot és 2A-t kap? Arduino Nanoval lesz meghajtva.
Új hozzászólás Aktív témák
- XFX Radeon Speedster SWFT 319 RX 6800 - BONTATLAN - ALZA GARANCIA
- Bomba ár! Lenovo X1 Yoga 3rd - i5-8GEN I 8GB I 256GB SSD I 14" 2K Touch I W11 I CAM I Garancia!
- Bomba ár! Lenovo X1 Carbon G3: i7-G5 I 8GB I 256GB SSD I 14" QHD I HDMI I Cam I W10 I Gari!
- Bomba ár! Lenovo ThinkPad T450s - i5-5GEN I 8GB I 128GB SSD I 14" HD+ I Cam I W10 I Garancia!
- Bomba ár! Lenovo ThinkPad T14s - i5-10G I 8GB I 256GB SSD I 14" FHD Touch I Cam I W11 I Garancia!
Állásajánlatok
Cég: HC Pointer Kft.
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest