Hirdetés
-
Egy hibát javít az új Arc meghajtó
ph A 31.0.101.5592-es, WHQL aláírással rendelkező csomag nem is kínált mást.
-
Retro Kocka Kuckó 2024
lo Megint eltelt egy esztendő, ezért mögyünk retrokockulni Vásárhelyre! Gyere velünk gyereknapon!
-
GRAVEN - Befutottak a PS5 és Xbox Series X/S verziók
gp A tervek szerint PlayStation 4-re és Xbox One-ra is megkapjuk idén a teljes kiadást egy későbbi időpontban.
-
PROHARDVER!
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
válasz
Janos250 #16395 üzenetére
Szia
Úgy döntöttem, hogy nem a fejlesztőpanelt teszem a panelemre, hanem magát az ESP32-WROOM-32 tokot.
Megrajzoltam a sprint layout makróját.
Egy olyan kérdésem van hogy ha veszek külön usb cp2101 panelt, ezen tx és rx van csak.
Kellenek nekem a dts, cts, dtr... lábak?Köszi
-
válasz
Janos250 #16436 üzenetére
Ha
printf("probaArduinoString=%s\n",probaArduinoString); // badarsagot nyomtat
akkor logikus, hogy ez is
printf("probaCpp_string=%s\n",probaCpp_string); // badarsagot nyomtat
ehelyett
printf("probaCpp_string=%s\n",probaCpp_string.c_str()); // nem badarsagot nyomtat
mert a printf c tömböt vár paraméterként(?)
-
Tankblock
aktív tag
válasz
Janos250 #16444 üzenetére
Szia
Ebben a függvény bemenétben a "const" annyit jelent hogy a függvény nem fogja/tudja a pointert értékét megváltoztatni. Ez egy String osztállyal tér vissza.
.c_str()
fuggvény viszont constchar *
pointerrel tér vissza amivel kezdeni illene valamit.
Vagy átmásolod másik memória területrestrcpy()
, vagy standard library -re egy példastd::string str;
char * writable = new char[str.size() + 1];
std::copy(str.begin(), str.end(), writable);
writable[str.size()] = '\0'; // don't forget the terminating 0
// don't forget to free the string after finished using it
delete[] writable;
[ Szerkesztve ]
Release the Beast....
-
ekkold
Topikgazda
válasz
Janos250 #16446 üzenetére
char akarmi[ 100]; //
Ez lefoglal 100 bájtot adott kezdőcímmel, azért nem adhatsz értéket a ilyen módon, hogy akrami = ... mert ahhoz módosítani kellene a címét, viszont a lefoglalt memória adott területen/címen van. Igy az akarmi szögletes zárójelek nékül, gyakorlatilag egy pointer konstans.char * akarmi//
Ez csak egy pointert hoz létre, ami mutathat bárhová, (kaphat tetszőleges értéket) de a pointerhez nem foglal le memóriaterületet. Tehát ha létező c stringre mutat akkor lehet egy tömbhöz hasonlóan használni, egyéb esetben elszállhat a program.A c string egy olyan karaktertömb ami nullára végződik (ez jelzi a tömb végét). Tehát van egy aktuális hossza, ami változhat is, és van a számára lefoglalt memóriaterület ami megszabja a maximális hosszát. Ha "túlírod" elszállhat a programod.
Azért tud jól működni az strcpy() a korábban felvázolt esetben, mert ott a pointer által mutatott szöveget, valós lefoglalt memóriaterületre másolod.
A pointerhez egyébként a malloc() függvénnyel lehet (standard c-ben, de talán arduinoban is) memóriát foglalni, azaz a maloc() által adott címet töltöd a pointerbe , és akkor a malloc() által lefoglalt nagyságú tömbként is használhatod.
Jelenleg kevered a tömb és a pointer funkcióját, működését. Ezeket kellene tisztázni elsősorban.
[ Szerkesztve ]
Eladó: https://www.hobbielektronika.hu/apro/apro_159350.html
-
ekkold
Topikgazda
válasz
Janos250 #16448 üzenetére
Deklaráláskor nem ugyanaz történik. A használatában vannak hasonlóságok.
A char * egy pointer tipusú változó, ami karakterre mutathat (persze lehetnek egymásután karakterek a memóriában), de mutathat pl. nullára is (nullpointer), vagy pl. egy tömb kezdőcímét is belemásolhatjuk.
A char[ ] egy karakterekből álló tömb, ami a szögletes zárójelek nélkül a tömb kezdőcímét mutatja mint pointer.[ Szerkesztve ]
Eladó: https://www.hobbielektronika.hu/apro/apro_159350.html
-
Tankblock
aktív tag
válasz
Janos250 #16448 üzenetére
A tömb fix méretű egymást követő foglalt egységek a memóriában, a pointer meg egy memória címet tároló memória cím, ahova mutat az lehet bármi pl nullpointer, tömb egy eleme, ami nem feltétlenül az első eleme.....
const char * amit a c_str() fv visszaad az a String osztály belsőmemóriájának első elemére mutat, és nem engedi változtatni annak értékét. Szép is lenne, ha engedné....
Release the Beast....
-
its_grandpa
tag
válasz
Janos250 #16434 üzenetére
Szerintem nem szép de legalább nem is jó, viszont észérvekkel meggyőzhető vagyok.
char inputChars[200];
for (int i = 0;i<5;i++){
fgets(inputChars, 199, filePointer);
printf("%s", inputChars);
} ;A költő vélhetően 5*200 karaktert szeretne olvasni
és kiírni.
Az inputChars tömb azonban nincs terminálva ( inputChars[200] mitől lenne "\0" ?) ezért vannak kétségeim.
Meg lehetne ezt szebben is, #define-al vagy sizeof()-al. -
Janos250
őstag
válasz
Janos250 #16456 üzenetére
Látjátok, ennyi eszem van. Már kikapcsoltam a gépet, amikor eszembe jutott, hogy basszus, a printf a régi C-ből maradt, a string meg C++, persze, hogy nem tudja kiírni.
Ez természetesen jól kiírja:std::cout << "encoded2_cpp_string:" << encoded2_cpp_string << "\n";
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Dißnäëß
veterán
válasz
Janos250 #16461 üzenetére
Sziasztok,
pici Arduino-val (5V) szeretnék megtartani 230V/5A mechanikus, NO relét, 250mW a tekercs fogyasztása, megoldható ez direktben 1 pin-rôl szerintetek, vagy egy kis tranzisztor segítségét kérjem ?
Vagy totál modellfüggô ?
A kiszemeltem, de fogalmam sincs, mit bír. (Leonardo 40mA).
[ Szerkesztve ]
POKE 16017,44 ..... SYS 2077
-
Dißnäëß
veterán
válasz
Janos250 #16464 üzenetére
Köszi Urak és Weiss-nek is.
Van a szilárdtest relének hátránya alábbi felhasználásban ?
Erôsítô.
Hátul kézi tápkapcsoló. Ha ott bekapcsolom, az arduino áram alá kerül - ez a standby mód kb. Figyeli az elején lévô nyomógombot (amit debounce-al kombináltam). Ha ezt 1x megnyomom, behúzna és megtartana 3 további relét, ezek lehetnek szilárdtestek is (?) - 250, 250, 50VA toroid hálózati trafók, a tényleges erôsítô âramkörök indulásához.
Kikapcsoláskor pedig elengedné (újabb pushbutton nyomás). Mivel normally off a relék logikája, áramszünet esetén természetesen minden elenged és visszaáll alapállapotba.
Van a szilárdtest reléknek zaja, ami akkora, hogy átmegy a toroidokon, graetz-en, pufferkondi blokkon ? (Szerintem ha van is pici, totál elnyelôdik a trafókban).
Ilyen szempontból kérdezem, jó-e nekem a szilárdtest.
(+ Extrán kell/érdemes védeni ôket ? Pl. villám, ESD..)
[ Szerkesztve ]
POKE 16017,44 ..... SYS 2077
-
gyapo11
őstag
válasz
Janos250 #16548 üzenetére
Vám 150 EUR fölött van ha nem Európából jön a csomag. A kisebb értékű küldeményeken áfa van és ha a posta vámkezeli, akkor még valamennyi. A BG az áfát vásárláskor beszedi, ezt később átutalja a navnak, Európába behozza valahogy és innen mint európai csomag érkezik az országba, ezért semmi további költség nincs, mivel áfa fizetve, EU-ból érkező csomagra pedig nincs vámkezelés.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
Tomika86
senior tag
válasz
Janos250 #16560 üzenetére
Most esp32-re készült el a kódom, amiben persze van library, és nagyon sok segítséget kaptam innét is. A library belvilágát nézegettem, azokat nem értettem meg, a többit már kapisgálom.
A fejlesztés alatt, a különböző részegységeket külön külön kipróbáltam az ESP32-őn. Átrágtam minden lépést. A tömbökkel még vannak gondjaim, aztán a bonyolultabbakkal osztályok, stb.
Így nagyon sokat tanultam mire ide jutottam a kijelzővel. Majd teszek fel videót róla, hogy sikerült.Köszönöm!
-
Dißnäëß
veterán
válasz
Janos250 #16598 üzenetére
Köszi !!
Egy hőmérséklet szenzort próbálgatok, alábbi kóddal percenként tudom a konzolra kiiratni a hőmérsékletet:
#include <DS18B20.h>
DS18B20 ds(2);
void setup() {
Serial.begin(9600);
}
int n=0;
void loop() {
while (ds.selectNext()) {
Serial.print(n, DEC);
Serial.print(". perc: ");
Serial.println(ds.getTempC());
delay(60000);
n++;
}
}Mi a különbség print és printf között ? (println sortöréssel, ENTER-el megy, erre már rájöttem).
[ Szerkesztve ]
POKE 16017,44 ..... SYS 2077
-
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.Eladó: https://www.hobbielektronika.hu/apro/apro_159350.html
-
-
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....
-
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....
-
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....
-
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....
-
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....
-
válasz
Janos250 #16663 üzenetére
Én is Ali-BG párossal megyek mióta új szabályok vannak, de nemrég kénytelen voltam visszamenni, és láttam, hogy már az eBay is számolt áfát a rendelésre. (és probléma nélkül meg is jött a magyar postán keresztül ugyancsak UH*BE azonosítóval.
Mások számára a kondi fáradós, nekem farad-os...
-
Dißnäëß
veterán
válasz
Janos250 #16688 üzenetére
Természetesen a /* clock=*/ 14, /* data=*/ 12, bármelyiket használod is, mindenképpen bekötendő akkor is, ha a konstruktorban nem adod meg, hanem defaultként kezeli.
Aaaa kezdem kapizsgálni. Vélhetően default-ol a kikommentelt sorom clock-ra és data-ra a zöldekkel jelölt portokat illetően ? (Tegyük fel, rápróbálok a jobboldali zöldekre, akkor
clock = HSCLK, azaz GPIO14
data = HMOSI, azaz GPIO 13).Ettől függetlenül még CS-t megadhatom neki (kéri is a sor), HCS = GPIO 15-re.
A konstruktorban a dc és a reset hova lennének köthetők ezen ?
[ Szerkesztve ]
POKE 16017,44 ..... SYS 2077
-
válasz
Janos250 #16737 üzenetére
Én úgy gondolom, hogy azért bukik meg a validáción, mert maga az .ino fájl plain-text dokumentumként nem szerepel egyik webes szabványban sem.
Emiatt - még ha valószínűleg a nagyobb böngészők ismerik is - nem következetes az, hogy minden eszközön/böngészőben ugyanúgy jelenik meg, vagy ugyanazt a hatást indukálja.
Mások számára a kondi fáradós, nekem farad-os...
-
Dißnäëß
veterán
válasz
Janos250 #16770 üzenetére
Köszi !
Szép lassan száll el minden ára. Először csak elektronika, aztán a többi, mert nem csak chiphiány van, hanem energiahiány is, áram, gáz, ami mindenre kihat.Lehet most kéne betárazni egy zsák ESP-t, egy marék Pi4-et, pár marék ellenállást, relét, kondit, szenzorokat, betolni egy kisebb szemmel látható összeget a dologba, aztán ha jön a Mad Max, csöndben elbütykölni otthon és automatizálni a medence töltést-ürítést, az esővízgyűjtő ciszternából a padláson lévő tartályba felpumpálást, meg a teljes üvegház öntözést, fűtést, minden fiszfaszt.
Na jó, bilibe lóg a kis kacsóm..
POKE 16017,44 ..... SYS 2077
-
gyapo11
őstag
válasz
Janos250 #16784 üzenetére
Nem lehet a környezeti változóba beírni elérési utat? Persze ha átteszed másik path-ra az arduino foldert, akkor ezt is át kell írni, de csak egy helyen.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
Új hozzászólás Aktív témák
- Eladó bontatlan AMD Ryzen 7 7800X3D processzor
- Új bontatlan Sandisk Ultra 3d SSD 4TB és Samsung 2.5 870 Evo 500GB SATA3 (MZ-77E500B)
- AkciÓ ÚJ Bontatlan MacBook Pro 16 M3 Pro 12CPU/18GPU 18GB/512GB SSD Magyar bill Azonnal átvehető.
- ÉRKEZETT Bontatlan Új M2 M4 IPAD PRO 2022 11 128GB - 256GB Wi-Fi Azonnal Deák Térnél Átvehető.
- DeLL Precision 7740 workstation, üzletből, I7-9850H/32RAM/512GBSSD/NVIDIA QuadroRTX3000/17,3"FULLHD