Hirdetés
- 3D nyomtatás
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Lenovo Legion és IdeaPad Y széria
- Mennyibe fog kerülni a Steam Machine?
- 5.1, 7.1 és gamer fejhallgatók
- Hamarosan "kémkedhet" az NVIDIA a saját GPU-i után?
- SSD kibeszélő
- Pánik a memóriapiacon
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Milyen asztali (teljes vagy fél-) gépet vegyek?
-
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
-
dzz
aktív tag
Sziasztok!
Beszereztem egy LilyGO-T-SIM7000G panelt, de eddig még nem volt esp a közelemben (illetve igen, de nem programoztam). Szeretném a lehetőségeit kihasználni, pozíciót lte hálózaton szerverre feltölteni, esetleg telemetriát a saját állapotáról vagy kap egy gyorsulásmérőt, de ez még képlékeny. Nem vagyok nagy programozó, néha kisebb dolgokat csinálok arduinoval és linux alatt scriptelek, néha egy kis C, de nem hivatásom a programozás.
A kérdésem az lenne, hogy mi az amivel érdemes egy esp-32-n ismerkedni? Arduino keretrendszeren gondolom menni fog, de mi van a freertos-el meg a micropythonnal? Mennyire használhatóak ezek rajta? Érdemes ezeken a vonalakon keresgélni? Esetleg van még valami érdekesnek tűnő OS szerű projekt amit érdemes megnézni? Teljesen hobbyprojekt lesz, az idő mellékes tényező, szívesen ismerkedem új lehetőségekkel és itt inkább az esp lehetőségei érdekelnek, nem is annyira a pontos board lehetőségei. -
Tomika86
senior tag
válasz
Tankblock
#17341
üzenetére
Írtam, hogy van egy oled kijelző, ami a panelból ki van vezetékkel vezetve kb 60cmre a fő paneltől.
Arra gondolok akkor ezt külön venném a többitől, talán ez foglalja le leginkább a buszt, az u8g2 könyvtárral és kiiratásokkal.A többi pedig maradna a mostani buszon, közel az esp32höz. Eeprom, io bővítő, adc, giroszkóp.
Jól gondolom?
Köszi -
Tomika86
senior tag
válasz
Tankblock
#17339
üzenetére
[link]
Megszakítás 2 bemenete marad az esp32őn.
Csak a többi menne erre a bővítőre.
Mit jelent a gyorsan kell?
Bemenetek:
Számláló nullázás, olajnyomásgomba figyelés, fékfolyadék kifogyott, 2 tartalék.
Kimenetek:
Hűtőventilátor
Izzítás
VilágításEgyiknek sem kell megszakítással kapcsolni.
Az aggaszt, hogy az i2c vonalon van több dolog, ezek nem fognak belassulni vagy bármi romlás lesz?
Pl analóg kiolvasás Ads7828 icvel ciklikusan történik. Eeprom olvasás/írás
Oled kijelző ciklikusan van írva folyamatosan
Giroszkóp is folyamatosan van olvasva
Busz 400khzre van állítva, csak 2,7kohm van az sda és scl buszon.
Eddig működik minden -
Tomika86
senior tag
Sziasztok!
Ezt az üzenetet kapom program feltöltésnél, egy új panelen.
Mit nézzek meg?
GPIO12 kimenetnek van használva, egy optocsatolót hajt meg.esptool.py v3.1
Serial port COM4
Connecting........___
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 30:ae:a4:d4:83:18
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Warning: Could not auto-detect Flash size (FlashID=0xffffff, SizeID=0xff), defaulting to 4MB
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x000defff...
Compressed 17104 bytes to 11191...
A fatal error occurred: Timed out waiting for packet content
*** [upload] Error 2Köszönöm!
-
quigon
tag
Megvan és ebben már benne van minden időzóna. HTML file-t miként tudok az esp-re feltölteni?
Talán rájöttem.
-
Ugyanezt akartam írni, de túl trollnak találtam

Tomika86
Olvastam a másik topicban a feedbacket. ESP8266-nál a watchdogból ki lehet olvasni, hogy mi volt az oka a legutóbbi resetnek, biztos van ilyen az ESP32-nél is (sajnos nincs sok tapasztalatom vele, de hátha itt valaki meg tudja mondani, hogyan csináld). -
Sziasztok! Esp32 kérdésem lenne. Használja valaki a touch button funkciót? Az érdekelne, mivel lehet még érintést kiváltani a touch lábakon az emberi testen kívül?
Szeretnék csinálni olyan lábpedált, aminek nagyon halkan kellene működni, és bírni kellene a strapát, például ha nagyobb erővel vagy sebességgel taposok rá. Az jutott eszembe, hogy mivel úgyis esp32 lesz benne, mi lenne, ha tactile kapcsolók helyett valahogy a touch funkciót használnám? Ha jól sejtem, kapacitív elven működik, tehát egy nagyobb fémlemez, vagy kondenzátor segítségével tudnám esetleg megbízhatóan aktiválni? -
Dißnäëß
nagyúr
Ájjájjjájjjjj Urak, nagyon rég Arduino-ztam meg ESP-ztem, pffh.
Pedig ez a világ legszebb dolga a szex és szerelem után.Shit.
-
Janos250
őstag
Szia!
Köszi, van, ami megy, de egyre rejtélyesebb.Van ugyebár két Arduino fejlesztés az ESP32-re.
Van egyszer, amit az espressif-nél van, valami régebbi IDF alapján, és ezt 1.0.6 verziónak nevezi. Ez, ha a File/Preferences-be ezt írjuk be:
https://dl.espressif.com/dl/package_esp32_index.jsonAztán van a github-on, a 2.0.2 verziónak nevezett, amit folyamatosan fejlesztenek aktív emberek, ez jelenleg a 4.4-es IDF alapján.
https://github.com/espressif/arduino-esp32/releases/download/2.0.2/package_esp32_index.jsonAz espressifesben megy a fájlkezelés úgy, ahogy egyszer korábban leírtam:
https://prohardver.hu/tema/arduino/hsz_16613-16613.html
Viszont nem megy az általad javasolt.A githubosban nem megy a fenti fájlkezelés, de - ha az IDF-ből bemásolom neki, amiért nyavalyog -, akkor megy, amit leírtál.
Ez alapján sikerült kiíratni azokat a dolgokat, amit tulajdonképpen akartam. Tulajdonképpen az s_vfs-et akartam leírni, csak egyszerűen akartam megfogalmazni, mert ez is ugyanolyan
FD_SETSIZE = 64
s_vfs[0] = 3ffb6d70
vfs = 3ffb6e10
path_prefix[] = /dev/uart
path_prefix_len = 9
ctx = 0
offset = 0
s_vfs[1] = 3ffb6e3c
vfs = 3ffb6edc
path_prefix[] = /dev/console
path_prefix_len = 12
ctx = 0
offset = 1Szóval a fene se érti.
Még majd bogarászok vele. -
válasz
Janos250
#17242
üzenetére
Mint múltkor is említettem, direktben szerintem sehogy, de ha szeretsz hekkelni, ha eléred ezt a függvényt, akkor bináris kereséssel ki tudod deríteni, mi az utolsó index, ami nem NULL-t ad vissza.
const vfs_entry_t *get_vfs_for_index(int index)
{
if (index < 0 || index >= s_vfs_count) {
return NULL;
} else {
return s_vfs[index];
}
}A components\vfs\private_include\esp_vfs_private.h-t kell include-olni.
-
Janos250
őstag
Szevasztok.
Egyszer már próbálkoztam ezzel, de abbamaradt.
Van nekem egy fájl: libvfs.a
Ebben van egy változó: s_vfs_countA program valahogy eléri, mert használja, de nem tudok rájönni, én hogyan tudnám elérni. Például kiíratni (Ja, ESP32 Arduino természetesen)
-
DarkByte
addikt
Köszi!
De akkor igazából mindkettőn szabadon használható.
Igazság szerint nekem nem nagy távolságot kellene vele áthidalni, maximum 100m, egy ESP-NOW is megoldaná valószínűleg. Csak amúgy is terveztem hogy kipróbálom a LoRa-t.(868-as sáv is telítődik, itthon nálam kapásból a kazán termosztát, a társas házi kapu távirányító is azt használja)
-
Janos250
őstag
válasz
Tomika86
#17229
üzenetére
Az ESP32-höz tartozó main.cpp része:
void loopTask(void *pvParameters)
{
setup();
for(;;) {
if(loopTaskWDTEnabled){
esp_task_wdt_reset();
}
loop();
if (serialEventRun) serialEventRun();
}
}Vagyis:
Meghívja a setup függvényt egyszer, majd egy végtelen for ciklusban a loop() függvényt.
Ha a setupba teszel valamit, annak egyszer le kell futnia.
Én továbbra is időzítési problémára gyanakszom, bár gyanús, hogy fgv nélkül megy. -
Tomika86
senior tag
válasz
Janos250
#17222
üzenetére
A többi is függvényként van a végén a programnak, az összes nextion parancs.
A loopon belül csak meghívom a függvényt, ami te írtál az az egy darab parancs van a setup blokk végén, elötte van delay(csak itt), azért írtam azt is függvényként, mert az össze többi úgy van.Nem a leírásoddal van baj, hanem ha csak egy függvény hívást használok, az nem hajtódik végre. Minden hiba nélkül lefordul és rátöltődik az esp32re.
Innét tudom:
-Áram alatt van a kijelző és az esp32.
-Kijelzőben átlépek egy másik oldalra.
-rátöltöm a programot
-nyomok esp32re egy resetet
Itt függvény híással nem lép át a 0 képernyőre.
Függvény hívás nélkül, a te 1 soroddal beírva átvált a kezdő képre(page 0).Setup blokk
Loop blokkFüggvények
Függvény prototípus nincs!
-
Tankblock
aktív tag
válasz
Tomika86
#17211
üzenetére
ESP-IDF (ESP32 wroom ha jól emlékszem) c++ ban Arduino nélkül, Eclipse alatt :-)
az InitNextion() Fv felparametrizálja a 2.v3. UART drivert ESP32 ön a Nextionnak megfelelően - Hozzátenném, hogy a nextiont is át kell configolni magasabb baud rate - re, mert alapból csak 9600 bps.
A sendData fv az alap UARTra logol és a Nextion UARTnak meg kiküldi a megkapott stringet.
végül egy taskban ahol szükséges szépen stringet összerakom és ahogy látod a templateneél meg van írva a .to_str() fv ami lehetővé teszi a const char * tudjak átadni a sendData fvnek :-)
Ebben a projectben pl nincs Arduino és nem is szeretnék. FreeRTOS+ MQTT van még ebben a projectben használva, az tuti h át kell még írnom párszor, de egy ilyen hőmérő + világítás kapcsoló már fut az asztalomon 3+ éve.
Szedd le az ESP-IDF és a example mappában benne van szinte minden, "csak" össze kell rakni saját tetszés szerint.
Egyre rájöttem a Nextionból a RTC részért még 1x nem fizetek, mert az enyémben nincs a hőmérséklettel kikompenzálva és sosem mutat helyes időt....
-
Tankblock
aktív tag
válasz
Janos250
#17208
üzenetére
char endData[] = {0xFF,0xFF,0xFF};ez akár még működhet is....using namespace std;
template < typename Type > std::string to_str (const Type & t)
{
std::ostringstream os;
os << t;
return os.str ();
}
csakhogy meglegyen a fvnyek:
(CODE)void initNextion() {
const uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE
};
uart_param_config(nUART, &uart_config);
uart_set_pin(nUART, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
// We won't use a buffer for sending data.
uart_driver_install(nUART, RX_BUF_SIZE * 2, 0, 0, NULL, 0);
}
int sendData(const char* logName, const char* data)
{
const int len = strlen(data);
const int txBytes = uart_write_bytes(nUART, data, len);
ESP_LOGI(logName, "Wrote %d bytes\n", txBytes);
ESP_LOGI(logName, "#%s#\n", data);
return txBytes;
}(/CODE)
string store ="";
store += "page2.valami.val=";
store += (x.sData=="ON") ?"1":"0";
store += endData;
sendData(TX_TASK_TAG, store.c_str());ezt használtam home projectben, működik
-
Janos250
őstag
Találtam egy hasznos felhasználási módját az ESP-nek!
![;]](//cdn.rios.hu/dl/s/v1.gif)
Ha a nem kívánatos SPAM jellegű "néznivalók" linkjeit windows alatt a host nevű fájlba berakja az ember egy nem létező IP címmel, akkor azt nem hozza be, de vannak oldalak, amelyek addig várakoznak, míg meg nem érkezik onnan valami. Most erre az IP-re tettem egy ESP mini WEB szervert, ami egy üres html oldalt hoz be. Azóta kellemesebb az életem
Nem jön az "akarsz a közeledben ingyen ....et?", és hasonló oldalak. Legfeljebb G...tyán milliárdjait nem növelem. -
Tankblock
aktív tag
válasz
Tomika86
#17160
üzenetére
Szia,
unsignedután nem maradt le a változó típus dekraláció véletlen plint?Én a helyedben a If statementben vizsgálnám h mi van benne pl <1 vagy valami....
Standard struktúra működik c ill c++ alatt nincs benne semmi esp32 specifikus, vagy nem értem a kérdésed lényegét.
A kérdésed második felére hoznál fel példát? Mitől lenne a Makró gyorsabb és a Fv kevesebb memória?
-
Tomika86
senior tag
Sziasztok
Most volt mikrovezérlős órám, pic32mx.
Kérdeznék,hogy itt lehet-e(esp32)
Bit kezelés:
struct {unsigned b0:1;unsigned b1:1;unsigned b2:1;} Bit;
A programban pedig így kezelem a bitet:if(Bit.b0)Meg a másik hogy függvény vagy makró?
Makró gyorsabb, több memória. Függvény "lassabb", kevesebb memória?Köszönöm
-
válasz
tonermagus
#17156
üzenetére
A "tárgy"-ban lévő elektronikában követelmény, hogy passzív legyen?
Egy lecsökkentett TX poweres ESP-t (vagy herpákolt antennásat) ha beleteszel, egy másikkal az oszlopban tudod mérni a jelerősséget.
-
Tomika86
senior tag
válasz
Tankblock
#17145
üzenetére
Szia!
Igen, egyetemen most PIC32 programozása van. MPLAB X-ben.
Xtensa LX6 ha jól tudom az ESP32 ic-je, de olyan részletességűt nem találtam mint egy PIC32MZ családé.
Ezért is tettem fel a Visual Studio Code programot, de ez is hiányolja a loop és setup ha main és while függvényeket használom. függvényeket. -
Janos250
őstag
Srácok! Valahogy nem boldogulok én a lib szerkezettel.
Valakinek tasmotát kellene fordítanom, Arduino IDE alatt.
Régebben már csináltam, de most valahogy nem megy.Van a tasmota.ino file:
C:\Arduino\arduino-1.8.19\portable\sketchbook\Csikor\tasmota.inoA programban: #include <t_bearssl.h>
A neten azt írják, hogy a lib könyvtárat másoljam be a sketchbook\libraries-be. Megtettem, ott is van a file:
C:\Arduino\arduino-1.8.19\portable\sketchbook\libraries\lib_ssl\bearssl-esp8266\src\t_bearssl.hValahol meg azt írták, hogy a saját sketch-be tegyem. Oda is betettem:
C:\Arduino\arduino-1.8.19\portable\sketchbook\Csikor\tasmota\lib\lib_ssl\bearssl-esp8266\src\t_bearssl.h#include <t_bearssl.h>-nél továbbra is jön a hibajelzés:
t_bearssl.h: No such file or directoryLehetne persze az összes .h és .cpp file-t berakni a sketchhez, de annyi van belőlük, hogy a maradék hajam is kihullik, mire átpakolom.
Hogyan csináljam, hogy megtalálja?
Nem, nem akarok platformio-t használni, hanem Arduino IDE-t -
-
Janos46
tag
Sziasztok.
Segítséget szeretnék kérni. ESP8266 amit ha a COM portra dugok eként látom: Silicon Labs CP210x USB to UART Bridge (COM5), azonban a routerben nem (MAC és IP cím). A driver fennt van (CP210x_6.7.4 ) Mi lehet az oka? -
Janos250
őstag
válasz
tibi-d
#17055
üzenetére
Sok jelentősége nincs. ha a default pineket használod, akkor talán 1-2 ns-sel gyorsabb.
Ha nem azt használod, akkor meg teljesen mindegy, ugyanis van egy hardware mátrix - olyasmi mint a fóliás billentyűzetekben - azon keresztül megy. A mátrix egyik oldalához vannak kötve a perifáriák, a másikhoz meg a pinek, és amikor összerendeled őket, akkor egy adott sort összekötsz egy adott oszloppal.
Az analogokat a defaultból válaszd. Az UART1-nek is van default, de az nem jó, mert azt a memória kezeléshez használja, a lapok többségén ki sincs vezetve.
Én az I2C-t, és az SPI-t (VSPI) az alapértelmezetthez szoktam kötni, de csak megszokásból. Itt elég jól fel vannak tüntetve:
https://i2.wp.com/randomnerdtutorials.com/wp-content/uploads/2018/08/ESP32-DOIT-DEVKIT-V1-Board-Pinout-36-GPIOs-updated.jpg
Meg itt is:
https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2018/08/esp32-pinout-chip-ESP-WROOM-32.pngVagy ez:
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <stdint.h>
#define EXTERNAL_NUM_INTERRUPTS 16
#define NUM_DIGITAL_PINS 40
#define NUM_ANALOG_INPUTS 16
#define analogInputToDigitalPin(p) (((p)<20)?(esp32_adc2gpio[(p)]):-1)
#define digitalPinToInterrupt(p) (((p)<40)?(p):-1)
#define digitalPinHasPWM(p) (p < 34)
static const uint8_t LED_BUILTIN = 2;
#define BUILTIN_LED LED_BUILTIN // backward compatibility
#define LED_BUILTIN LED_BUILTIN
static const uint8_t TX = 1;
static const uint8_t RX = 3;
static const uint8_t SDA = 21;
static const uint8_t SCL = 22;
static const uint8_t SS = 5;
static const uint8_t MOSI = 23;
static const uint8_t MISO = 19;
static const uint8_t SCK = 18;
static const uint8_t A0 = 36;
static const uint8_t A3 = 39;
static const uint8_t A4 = 32;
static const uint8_t A5 = 33;
static const uint8_t A6 = 34;
static const uint8_t A7 = 35;
static const uint8_t A10 = 4;
static const uint8_t A11 = 0;
static const uint8_t A12 = 2;
static const uint8_t A13 = 15;
static const uint8_t A14 = 13;
static const uint8_t A15 = 12;
static const uint8_t A16 = 14;
static const uint8_t A17 = 27;
static const uint8_t A18 = 25;
static const uint8_t A19 = 26;
static const uint8_t T0 = 4;
static const uint8_t T1 = 0;
static const uint8_t T2 = 2;
static const uint8_t T3 = 15;
static const uint8_t T4 = 13;
static const uint8_t T5 = 12;
static const uint8_t T6 = 14;
static const uint8_t T7 = 27;
static const uint8_t T8 = 33;
static const uint8_t T9 = 32;
static const uint8_t DAC1 = 25;
static const uint8_t DAC2 = 26;
// PWM Driver pins for PWM Driver board
static const uint8_t PWM0 = 12;
static const uint8_t PWM1 = 13;
static const uint8_t PWM2 = 14;
static const uint8_t PWM3 = 15;
static const uint8_t PWM4 = 16;
static const uint8_t PWM5 = 17;
static const uint8_t PWM6 = 18;
static const uint8_t PWM7 = 19;
#endif /* Pins_Arduino_h */Apropó!
Szerintetek ennek a sornak mi az értelme:#define LED_BUILTIN LED_BUILTIN -
-
Janos250
őstag
válasz
Sebiferi
#17047
üzenetére
Erre én is kíváncsi lennék, mert irreálisan alacsonyak az árak. pl. ESP32CAM 1100 Ft.
Lehet, arra játszanak, hogy nem küldik, és mivel hosszú a szállítási határidő, és az nem is a rendelés napjától, hanem attól a naptól számít, amikor ők postára adták, így aki nagyon erősködik annak visszautálják, de sokan addigra el is felejtik, és az a hasznuk. -
válasz
Killer man
#17039
üzenetére
Sosem hallottam még ilyen nevű eszközről. Milyen uC van rajta?
Látatlanban azt mondom, hogy nem bír el 40mA-t. Az AVR-ek talán bírnak ennyit, de inkább sink módban, push módban asszem 27mA a max. Az esp-k még ennyit se, ott talán 17mA a max áram. -
Janos250
őstag
válasz
Ton-ton
#16973
üzenetére
A Ramp az jó, bár Megaval megy, de nem tudok olyan, nagy szériában gyártott panelről, ami korszerűbb procival (STM, ESP) megy. Utólag szokták hozzá mókolni az ESP8266-ot, akinek kell.
A programodat hova akarod tenni? A RAMP Megájába? Vagy külön panel lesz rá?
USB ügyben elég gyenge vagyok.
"Esetleg tudnál compilert javasolni?"
Ha az Arduino IDE-t letöltöd, abban minden benne van, szőrötül-bőröstül.
Megnyomot a feltöltés menüt, és mindent elintéz.
Van olyan IDE, ami régebbi fordítót tartalmaz, de pl. az ESP32-höz ami van, az már tudja a C++11-et, bár az alapesetben nem szükséges. -
válasz
sisi22
#16965
üzenetére
Ez a soros port nem az a soros port, amire te gondolsz, ez usb-n keresztüli (virtuális) soros port emuláció. Vagyis usb-vel rádugod a gépre, csak kell valami, ami tudja kezelni. Valószínűleg a legjobb megoldás Janos250 javaslata alapján egy esp32, ami egy önálló webszervert képes megvalósítani. Felkapcsolódva vele az otthoni wifi hálózatra, gépről rá tudsz kapcsolódni és megnézni rajta az adatokat.
20 forintos kérdés: Arkagyij Rajkin

Jó lenne, ha megmásznád ezt a spanyol hegyet, különben kell valaki, aki megmássza helyetted.

Lehet önálló kütyü is, van mindenféle kijelző, karakteres vagy grafikus, pénz kérdése.
-
vegyszer
addikt
válasz
Dißnäëß
#16944
üzenetére
Azt láttam, hogy ESP32, illetve ESP8266 esetén van MicroPython használati lehetőség.
Getting started with MicroPython on the ESP8266De hogy ez azt az érzést, élményt hozza, amit te szeretnél, azt már nem tudom. Én megragadtam a kapott kódok alantas igényeimre formálásának a szintjén.
-
Dißnäëß
nagyúr
Urak !
Van ez az Arduino IDE ugyebár. Most egy nagyon fura kérdést hoznék, nem ér kiröhögni
Szóval: jó ez a C++, de én amúgy így egyébként udemy-ről meg innen-onnan python-t tanulok épp.Van rá lehetőségem, IDE, akármi, hogy python-ban fejlesszek a kütyükre ? Gondolok a Leonardo-imra arra a kettőre, meg az ESP8266-omra.
Nem is maga a nyelv érdekel, hanem a library-k széles választéka. Gondolom, C++ -ra van a legtöbb, nem ? (Van ugye az OLED kijelzőm). Végülis tök jó nekem a C++ mert nem egy világvége, de ha már amúgy egyébként python-ozok, miért ne használjam itt is azt.
Csak elfilóztam, nem nagy dolog. Köszi.
-
Janos250
őstag
válasz
tonermagus
#16908
üzenetére
Én ajánlani már semmit senkinek nem ajánlok, csak azt mondom el, én hogyan csinálom/csinálnám.
Én az IRLB4030-at használom, ez nagyon jól bevált, kivétel, amikor az Aliról használhatatlan példányokat kaptam.
Gyakorlatilag tökéletesen nyit, zár, nem melegszik, nagyon kicsi az ellenállása az ESP32 kimenetével hajtva a gate-et.
A vásárolt példányoknak kb. a fele rossz volt, nem nyitott ki teljesen, és nagyon melegedett.
Amit megbízhatóbb eladótól vettem az mind jó, de volt 2 olyan rendelésem is, hogy mind rossz volt. Kénytelen voltam az összes példányt lemérni, és a rosszakat kidobni.
Részlet, hogy én hogyan használom: (Csak a FET-eket és az ESP32-t nézd, mert van ami el van rontva, de nem találom a javítottat)
-
Tomika86
senior tag
Sziasztok
Pár kérdésem lenne:
1. Fordítaskor kiírja az arduino ide hogy az egyik library nem kompatibilis esp32 platforma, működik, de esetleg okozhat gondot?
2. Nagyon lassan fordít le, ha másodszor is fordítom már sokkal gyorsabb
3. Reset és gpio0 10kohm-al felhúzva 3,3vra. Ha a kapcsolóhoz kondenzátort teszek akkor boot módba lép tápfeszültség megjelenésekor, 100nF és 1uFal is próbáltam, kisebb kell? 1nF?
Usbs újraindítás nincs, csak a kettő gomb.Köszönöm
-
Janos250
őstag
válasz
JozsBiker
#16879
üzenetére
Az ESP32-nek van saját time.h-ja, az jól működik, ahogy weiss is írta.
Itt jobban kirészletezve:
https://lastminuteengineers.com/esp32-ntp-server-date-time-tutorial/Vagy maga a program:
#include <WiFi.h>
#include "time.h"
const char* ssid = "xxxxx";
const char* password = "xxxxxxxx";
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;
void printLocalTime()
{
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Failed to obtain time");
return;
}
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}
void setup()
{
Serial.begin(115200);
//connect to WiFi
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" CONNECTED");
//init and get the time
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
printLocalTime();
}
void loop()
{
delay(1000);
printLocalTime();
} -
JozsBiker
aktív tag
Sziasztok !
Ennek szerintetek kellene működni ESP32 -n ?
/**************************************************************
* Local Time Stamp with ESP32
* Developed by Marcelo Rovai - 8 September 2017
**************************************************************/
#include <NTPClient.h>
#include <WiFi.h>
#include <WiFiUdp.h>
#define NTP_OFFSET -3 * 60 * 60 // In seconds
#define NTP_INTERVAL 60 * 1000 // In miliseconds
#define NTP_ADDRESS "0.europe.pool.ntp.org"
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
void setup()
{
Serial.begin(115200);
timeClient.begin();
}
void loop()
{
timeClient.update();
String formattedTime = timeClient.getFormattedTime();
Serial.println(formattedTime);
delay(1000);
} -
válasz
Sebiferi
#16835
üzenetére
Az áramváltós és a hall-effektes mérők tudtommal nem tudnak ilyen kis áramokat mérni.
Ez igaz, de sokkal könnyebben meg tudod emelni a rajtuk keresztül folyó áramot, mint hinnéd.
Mondok egy példát:
Veszel egy 5A-es lakatot ami 5mA-re vált. Teszel rá egy terhelőt, ami az 5mA-ből 5V-ot csinál (1kOhm).
Ezt az 5V-ot 1024 felé tudod bontani, azaz az 5A-t is. Az már 4,8mA felbontás.
Ha viszont a vezetékedet 4x viszed át a hurokban (ügyelve az azonos áramirányra) akkor 4x olyan érzékeny lesz, azaz 1,2mA felbontást kapsz.
Ezekben az áramváltókban a vasmag szaturációja a névleges értékre van belőve, afölött nem - vagy nem sokkal nagyobb - feszültség/áram nyerhető belőlük, így amikor a valós 10 amperes fogyasztás megérkezik, nem fog túlfeszültséget okozni a mérő oldalon. (Illetve amit okoz, azt simán elviszed egy ellenirányú 5V-os zenerrel).
A közös nullpont azt hiszem nem lesz gond, ennek (is) utánajártam. Pl. a sonoff cuccok is ilyenek és jól működnek.
A Sonoff cuccokban az ESP-k nem az AC vonallal közösítenek nullát, hanem a dedikált energiamonitorozó chippel (HLW8012). A schematicon ne keverd össze az Earth és a GND pontokat, mert azok nincsenek közösítve. -
Tankblock
aktív tag
válasz
Dißnäëß
#16797
üzenetére
Szia,
Van másik út is ha ,egengedik a követelmények. RTC memóriájába írod a ESP-nek, majd deep sleep, és csak a deep sleep currentet kell megtartani 20 µA ami nem sok, ha csak pár percig kell, vagy egy szép LiPo akksit/ CR2032/Alkaline elemx2 teszel rá, backupnak attól függ hányszor jön elő.
Ha visszajön a tápfesz kiírod.
-
Dißnäëß
nagyúr
Három számot kellene beleírnom, üzemóra. Amit szerintem percekben tartanék nyilván, és a maximum az 10.000 (legyen 20.000 de 10.000 óránál jelezne). Ez 60-al felszorozva 600.000.
Szóval 3db értéket update-elnék mindig, mindegyik maximum 600.000-ig menne, de főleg sokkal korábban már reset-elném egy külön nyomógombbal. (1 nyomás egyiket, 2 nyomás másikat, 3 nyomás harmadikat).
Nem percenként írnék bele, hanem csak kikapcsoláskor és/vagy áramszünetkor. Ez szobai erősítő, ergo egyetlen bekapcsolással elmegy 1-4 órát, mikor milyen kedvem van, szóval az írás gyakorisága nagyon kicsi szerintem. Amíg működik, nem tárolnám le benne mindig az újabb +1 percet.
@ekkold, a modul már megvan, lásd korábbi hsz-em. Ezzel kell élnem, egy RTC és egy EEPROM.
@razorbenke92 értem, nagyon jó gondolatmenet, én is ilyen biztonsági játékos volnék inkább. Köszönöm, megnézem a linkeket is. Táp: 6V AC a szekundere a kis nyáktrafónak, tehát olyan ~8.5V DC-re érkezek vele egyenirányítás után, és akkor innen ketté válnék:
1. direktben odaadnám ezt a feszt az ESP-nek, Vin elbírja és 3.3V-ra belsőleg stabizza
Vin is the NodeMcu's voltage input that is connected to its internal voltage regulator allowing an input voltage range of 4.75V to 10V. It will be regulated to 3.3V. Alternatively an external voltage source of 3.3V can be directly connected to the NodeMcu's 3V3 pins. The 3V3 pin can be also a voltage source to other components such as LEDs. GND is the common ground of the board.
2. minden egyéb kütyüt az LM317T-vel lestabizva 3.3V-ra, tudok külön táp-ágra tenniMivel így még mindig ugyanabból a pufferkondiból ennének, nem kerül semmibe 4 plussz kis diódával két híddal mennem, a trafó elbírja ezek minimális többletáramát, és akkor egyik táp ág ESP nagykondival stabilizálatlanul (azaz a sajátjával), másik táp ág egy átlag kondiértékkel az összes egyéb periféria 3.3V-ra stabizva.
Ez a nagy ötlet.
Hát azt hiszem, az órát, percek beleírását stb. még olvasnom kell, úgyhogy "elhallgatok" egy kis időre.
Ja és próbálok KiCAD-et tanulni, lehet ennek csináltatnék egy pici nyákot, úhh. Ez se holnap lesz kész...
-
Teljesen jogos a kérdés, bennem is megfordult már, amikor láttam a 10másodperces áthidalási igényt korábban.
Dißnäëß
Egy Arduino 3.3ms alatt ír egy bájtot. Tegyük fel, hogy ennyi kell egy ESP-nek is (úgy gondolom, az gyorsabb, de számoljunk a legrosszabb esettel).
Legyen szükséged 8 bájtra, az 26,4 ms.
Az ESP8266 tombolás közben 400mA-t tud fogyasztani - ez megint a legrosszabb eset. Idleben, bekapcsolt rádióval is 80mA körül eszik csak.
Számoljunk 5V-os táppal - bár az ESP 3.3V-al megy, de gondolom a modulon LDO van, ami veszteséggel konvertál, így marad az 5V.5V-on 0,4A az 2W
2W-ot 26,4ms-ig fenntartani kell 0.0528J energia.
0.0528J energiát egy 5V-os kondenzátorban 4224uF-al tudsz tárolni.
Persze a kondenzátor feszültsége folyamatosan esik energia leadása közben, az akksikkal ellentétben egészen nulláig. Az LDO miatt pedig ez azt jelenti, hogy kb. 25%-át tudod elfogyasztani a kondiknak.
Tehát vagy négyszerezed a kapacitást, és mondjuk használsz 2mF-od, vagy használsz 5000uF-ot és valami jó boost convertert.
Esetleg ha nagyobb feszültségű tápod lesz valahol, pl. 12V akkor tegyél 16V 5000uF-ot (0,36J). Annak már ki tudod használni a bő 2/3-át, ami 0,24 J, azaz bő négyszerese amire szükséged van.Ebben a pesszimista helyzetfelmérés miatt már jó kis biztonsági tartalék is van.
Hasznos linkek:
[Energia számoló teljesítmény és idő alapján]
[Kondenzátor kapacitás számoló energia és feszültség alapján] -
Janos250
őstag
Valahogy nem értem én ezeknek a könyvtáraknak a logikáját.
Most SHA1 és base64 ami kell nekem, de mindkettőből tele van a padlás különböző verziókkal.
Pl. SHA-ból ezt#include <C:\Arduino\arduino-1.8.19\portable\packages\esp32\hardware\esp32\1.0.6\tools\sdk\include\esp32\hwcrypto\sha.h>
akarom használni, mert az hw.
Ha így beírom a teljes utat, meg is találja, és azt találja meg, ami nekem kell, de hogy írjam be, hogy más környezetben is megtalálja, ha máshova teszem az Arduinot, vagy ha pl. nem portable?
Base64-ből is rengeteg van.#include <base64.h>
hatására talál egyet, ami jó eredményt is ad, de honnan tudom, hogy ez éppen a sok közül melyik base64.h-t, és base64.cpp-t használja? -
Dißnäëß
nagyúr
Üdv Urak, megjött a kis csúcskütyüm. Tök jó, hogy naptár funkció is van benne.. bár én úgyis csak bekapcsolva eltöltött órák száma miatt vettem + gombnyomásra lehessen nullázni azt. És legalább van mibe beírni..
Remélem, megfelel a célnak.Segítenétek nekem behasalni - tényleg semmi számolás meg ilyesmi - hogy az egész NodeMCU 8266-osom és kiegészítői hány mikrofarádon megy el táp nélkül úgy 10 mp-ig. A cél az, hogy áramszünet, központi táphiba, bármi egyéb esetén legyen ideje kiírni valamit a kijelzőre + az EEPROM-ban azonnal frissíteni három számláló óraszámát az aktuálisra. Aztán elszállhat, tartja a kijelzőt amíg lehet, majd goodbye.
Az ESP-re kötve:
- egy kijelző ugye
- ez az RTC + EEPROM
- terveim szerint vagy 4-5 hőérzékelő
- 3 szilárdtest relé, amiket már ki is próbáltam vele, kiváló (pici vezérlő fesz, pici vezérlőáram)Nos, mindez szerintem még így sem sok. Erre gondoltam. Tényleg csak hasra.
Vélemény ? -
Dißnäëß
nagyúr
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..
-
Dißnäëß
nagyúr
Sziasztok Szakik !
A NodeMCU ESP 8266-omat szeretném nyákra tenni. Természetesen cserélhetô foglalatba. Ami vagy gyári, vagy 1-1 ilyen nyákba forrasztható tüskesor, aminek a fenekébe meg bedughatom a kontroller tüskéit, így kivehetô-cserélhetô marad nyák zaklatás nélkül.
No, ennek nem tudom, mi a neve és hol kapni

(HEStore jóbarát).Köszönöm !

-
Ennyi erővel vehetek egy occó wireless gamepadot, és átalakíthatom azzal a kormányt
Akartam is javasolni.

Ha mindenképp Bluetooth kapcsolatot szeretnél, akkor lehet például egy tetszőleges Arduino uC + hc-05 Bluetooth modul, vagy ESP32, BT Serial módban fogsz tudni vele rácsatlakozni a gép beépített Bluetooth-ára, ehhez kell egy driver/host program a célgépre. Vagy fogsz egy Digispark (Attiny85) modult, rákötsz egy hc-06 modult, a kettőt összepárosítod, a Digispark-ot felprogramozod USB-HID eszköznek.
De minek, ha minimális átalakítással 1db uC-el meg tudod oldani és kapsz egy komplett, hordozható, problémamentes plug&play megoldást. -
Nem úgy értettem, hogy csináld újra.
ESP-ből tudsz csinálni egy dongle-t, amit USB-n a leonardora dugsz. USB hosztként felismeri a Leonardot, mint egy kontrollert, és bluetoothon emulál egy BT-s kontrollert, amire proxyzza a már elkészült eszközödet.
Más megoldást nem fogsz találni az adott problémára:
A Leonardon csak USB van szabad -> az USB-t protokoll szinten nem tudod átvinni BT-on, tehát kell egy aktív eszköz, ami fordít USB-ről BT-ra. -
biker
nagyúr
válasz
razorbenke92
#16720
üzenetére
nem kifejezetten megoldás egy kész arduino buttonbox helyett nekiállni egy esp32-t építeni.
De köszönöm a tippet, majd ha egyszer újrakezdem, ezzel fogom tenni, de most nem jó -
Plug-and-play megoldás sokáig nem létezett, majd az igényt felismerve az egyik kedvelt youtuberem csinált, azt hiszem meg is veheted tőle, vagy megycsinálhato magad is.
[Cheap USB Host Microcontroller [CH559, ESP32, HID]]Szerk.: Bocsi, azt elfelejtettem hozzátenni, hogy ez csak az USB-host rész. De utána ebből BT kontrollert csinálni már csak egy lépés: [link]
Szerk2.: A Blitzwolf cucc az csak audio. -
Pontosan milyen Arduino, és mit szeretnél az USB átvitel közben megoldani?
Ha sima Uno/Nano/Mega, ott amúgy is az Rx/Tx-en van az USB egy USB-Serial chipen keresztül. Ha arra az Rx/Tx-re felteszed a BT modult, akkor utána tudsz vezeték nélkül kommunikálni. A programozás is megoldható.
Persze az ajánlott ESP-vel egyszerűbb a dolog. Ott van OTA is.
Ha valami komolyabb USB protokollt (pl. HID) akarsz átvinni bluetoothon, az már annyira nem evidens.
-
Tankblock
aktív tag
válasz
tibi-d
#16713
üzenetére
Szia
14+2 pin egy sima TFT + touch [link] ez szerint (16+ 4 SD kártyának),
a nextionnal lerövidíted a fejlesztési időt, hiszen GUI nem a MCU számolja és csak UART-on kell küldeni üzeneteket. ESP32 van vagy 3 UART, szóval a debug portot sem kell mellőzni.
ESP8266 platformmal végig kellene számolni van e annyi lába amit fel tudsz használni, szerintem csak GPIO extenderrel lesz annyi, főleg mert 4 PWM lába van, és erre szeretnél I2C is.....
-
válasz
tibi-d
#16706
üzenetére
A wifi eléggé kézenfekvővé teszi az Esperif SoC-it.
Ha kell a 12bit analógnál jobb, akkor tehetsz mellé külső ADC-t.
A 4 digit jel valamilyen periféria? Van előírt jelszint? (5V / 3.3V)Az érintőképernyő csak kezelőfelület lesz, vagy aktív kijelző is lesz? Képfrissítés miatt kérdezem.
(Damn 4 másodpercet késtem :D)
-
Tankblock
aktív tag
válasz
tibi-d
#16707
üzenetére
Szia,
A Wifi és az analóg jelek rejtik a kulcsot...
Ha megelégszel egy nem túl pontos 12bites ADCvel akkor ESP32 + Nextion kijelzőt mondanék a feladat kivitelezésére, mint minimum hardware.
Analog pontosságán lehet segíteni külső SPI busra tervezett külső ADCkkel.A probléma az lesz mit engedhetsz meg a projectben anyagilag, és mit tudsz megvenni a piacról....
-
Dißnäëß
nagyúr
Hát, röhögni fogsz, Nektek triviális, de .. bekötöttem MINDENT, azt is, amit említett a konstruktor (és ott a helyes portot kiválasztottam neki), a maradék, vélhetően default (csak itt kódban nem említett) bekötéseket pedig rendre a jobboldali zöldekre tettem, szóval most így néz ki a bekötésem, ha hozzá nézed ezt az ábrát:
U8G2_SSD1322_NHD_256X64_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 15, /* dc=*/ 4, /* reset=*/ 5); // Enable U8G2_16BIT in u8g2.hA fentebbi definiálandók közül:
- cs-t is bekötöttem azért, biztos ami biztos alapon, bár értettem, hogy nem szükséges, a GPIO15-re (zölddel jelölt HCS) - fizikailag a D8
- dc-nek kinéztem a GPIO4-et - fizikailag a D2
- reset-nek kinéztem a GPIO5-öt - fizikailag a D1A vélhetően defaultokat is bekötöttem, amit nem kellett kódban megadni:
- kijelző SCLK-t ESP8266 HSCLK-ra (GPIO14/D5)
- kijelző SDIN-t ESP8266 HMOSI-ra (GPIO13/D7)
+ a GND és 3v3 természetesen.Így most ha jól látom, 7 kábellel megyek a kettő között, ebből 2 táp, 5 a többi.
Jó ez így, míg működik
Szerk.: próbaképp lehúztam róla RST-t és CS-t, és kifogástalanul megy. Kihúzva-újrabedugva is. Szóval így most 5 kábel, 2 táp, ergo 3 SPI-s kábellel meg van oldva.
-
Janos250
őstag
válasz
Dißnäëß
#16687
üzenetére
"lehet más fejlesztőkörnyezetben és más library-vel jó."
Ezért szeretem én - ha nem nagyon bonyolult - saját magam megírni a kezelést, más által megírt könyvtár helyett.
Látom, közben ESP32-t is bekommenteltél. Ha azon csinálod, akkor többet tudok segíteni, mert azt jobban ismerem. -
Janos250
őstag
válasz
Dißnäëß
#16687
üzenetére
"Ha pedig önkényesen mégis megadom azt neki ugyanúgy, mint az SW verziónál (ahol viszont kéri), hibára fut a fordító."
Ne add meg neki, de kösd be!Mivel csak ESP32-n használtam az SPI-t, ESP8266-on nem, ezért csak általánosságban tudok hozzászólni.
Az általad linkelt képen látszik, hogy két SPI van. Zölddel vannak jelölve.
Általánosságban az SPI használ MOSI , MISO (Master Out Slave Input, a másik fordítva), és egy CLK clock jelet. Az ESP a master, a kijelző, stb. a slave. Van egy-egy CS (chip select láb). Be lehet úgy állítani, hogy a CS-t is a hardver kezelje, általában ez a default. Viszont ezzel az a baj, hogy akkor csak egy slave használható, holott az SPI több slave kezelésére alkalmas. Ebben az esetben minden slave-nek külön CS láb kell, és ezeket szoftverből kell vezérelni, hogy most éppen kihez akarsz szólni. Mivel nálad egyetlen slave (a kijelző) van, ezért célszerű a default választás. Általában a könyvtárakban, ha olyan konstruktort használunk, amiben nem szerepel a CS, akkor a default lesz érvényes, és a hw kezeli. Esetedben ez azt jelenti, hogy HSPI esetén a GPIO15 lesz automatikusan a CS, míg VSPI esetén a CMD-vel jelzett láb. Ha pl. kijelzőt hajtunk meg, akkor vissza irány (MISO) nem is kell. A H-nak, V-nek ne akarj értelmet tulajdonítani, tekintsd egyszerűen egy megkülönböztető jelnek.Az, hogy hány lábat kell a konstruktorban megadni, az még nem jelenti azt, hogy a többi lábat nem kell megadni.
Itt úgy látom, a CS mindig megadandó, nincs default.
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. -
Dißnäëß
nagyúr
válasz
Dißnäëß
#16686
üzenetére
Az u8g2 doksijában nézelődve, a táblázatot középtájon, a második sor lenne rám releváns, tehát clock, data, cs, dc - 4 vezeték.
És mégis, mikor a constructor reference-ből a számomra megfelelőt teszem be a kódba (előre ott van a minta kódban, csak ki kell kommentelnem és a megfelelő GPIO-t megadnom neki), már csak 3 vezetékkel tudok operálni, amit nagyon nem értek, miért. A 6. sor lenne jó, azaz ez:
U8G2_SSD1322_NHD_256X64_F_4W_HW_SPI(rotation, cs, dc [, reset]) [full framebuffer, size = 2048 bytes]
F mint full framebuffer, 4W mint 4-vezetékes, HW mint hardveres, és utána ? A rotation mint paraméter tiszta, megadom, de utána cs és dc marad, clock és data sehol.
Ha pedig önkényesen mégis megadom azt neki ugyanúgy, mint az SW verziónál (ahol viszont kéri), hibára fut a fordító.SPI-kről:
The ESP32 contains 4 SPI bus hosts calledSPI,SPI1,HSPI, andVSPI.SPIis locked to flash communication and is not available for the application.SPI1is currently also tied to flash support, but might be available in the future. Applications can currently only use theHSPIandVSPIhosts.
Még ezt a srácot megkérdezem Youtube-ról, hátha mond valami okosat, ő összetákolta a dolgot sikeresen. Köszi azért a próbát. Kicsit bonyinak tűnik u8g2-vel, lehet más fejlesztőkörnyezetben és más library-vel jó. -
Dißnäëß
nagyúr
Sziasztok,
beszereztem ezt a kijelzőt (leírás, portok legörgetésre lentebb), 256x64-es OLED.
És van egy NodeMCU ESP8266-om, hajszálpontosan ez.Leszedtem Arduino IDE alá a megfelelő library-t a kijelző meghajtására, u8g2 (elvileg ez valami új, ami a régit leváltotta).
A github oldalán az instrukcióknak megfelelően
U8g2 is configured for 8 Bit mode by default. For any device with a pixel width of 256 or higher, you must uncomment (remove the//) from the following line inu8g2.h://#define U8G2_16BIT
u8g2.h-ban kiszedtem a kommentet a fentebbi sorból.Próbáltam bekötögetni a kábeleket, és rájönni arra a mapping-re, ami azt mondja, hogy az ESP lábai más számú GPIO-hoz vannak rendelve az IDE-ben. Ez mesél erről, ha legörgettek.
Hát mondom jó, legyen.
A kijelző 4-SPI jelölésű, azaz 6 drótos, ebből 2 a táp, 4 pedig a többi.
-----------------------------------------
Az IDE alatt mondom betöltök valami Example kódot, legyen egy klasszik Hello World.

A kódban megjegyzés van arra, hogy a sok contructor sorból a rám megfelelőt ki kell kommentelni.Ez a kettő van:
U8G2_SSD1322_NHD_256X64_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 14, /* data=*/ 12, /* cs=*/ 15, /* dc=*/ 13, /* reset=*/ 4); // Enable U8G2_16BIT in u8g2.h//U8G2_SSD1322_NHD_256X64_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 15, /* dc=*/ 13, /* reset=*/ 4); // Enable U8G2_16BIT in u8g2.hAz első SW, a második HW módban kezeli a kijelzőt. Az első tetűlassú, a második gyors. Az elsőnél clock, data, cs, dc, reset PIN-ek adhatók meg, a másodiknál csak cs, dc és reset. Clock és data nuku.
- Tehát az első 5-wire SPI nekem
, nem 4, bár elvileg a reset elhagyható és akkor 4-wire.
- A második viszont csak 3-wire SPI így, és meg se mukkan vele a kijelző.Az első működik, viszont látszik szemre, hogy tetűlassan teszi ki, lehet úgy 2fps talán ?
Srác is ezt tapasztalta előttem, hasonló cipő: [link]Szerintetek hogy a pékbe kell ezt HW módban használni, hogy működjön ? Mi a péket kössek hova, egy 4-SPI-s kijelzőnek, 3-kábeles felállásban, hogy működjön a gyors HW módban ?

-
Janos250
őstag
válasz
gyulank
#16678
üzenetére
Régen én is PIC-et használtam, míg meg nem találtam az Arduinot. A régi PIC fejlesztő így már kipróbálás nélkül szomorkodik a fiókban a PICKIT mellett.
Az STM32 előnye - egyebek mellett - hogy ARM, amihez rengeteg minden van.
Én is Arduino alatt használtam, és kedveltem, amíg az ESP32 támogatottsága el nem érte azt a szintet, aminél már érdemesnek láttam átállni.
Akkor átálltam, és nagyon megkedveltem.
A PICBASIC-et én is használtam, de így utólag azt látom, hogy gyermeteg játék volt.
A PIC-en szerzett ismereteimet nem tudtam a későbbiekben felhasználni, a chipeket elajándékoztam, ami meg már annyira régi, hogy nem kellett senkinek, azt kidobtam.
Kedveltem, hogy a ChipCAD-nél mindent viszonylag tűrhető áron be lehetett szerezni, de persze a mostani kontroller árakkal nem versenyezhetne.
Az STM32-ből a nagyobbak, és a komolyabb fejlesztő készletek ára húzósabb, de a már említett kicsik olcsók, és jók, nagyon sok mindent tudnak, Arduino alatt is lehet jól használni a hardver lehetőségeiket.
Én az ESP32 mellett azért maradok, mert valós 2 magja van, és a hozzá illesztett fordító C++11, és a benne lévő WiFi nekem nagy előny, mert én nem használok se kijelzőt, se gombot, tekertyűt, miegymást, nekem minden a WEB lapon van, mert az ingyenes, és univerzális, a telefon meg kéznél van. És persze fel akarom hívni a figyelmet erre az "okos otthon", stb irányvonalra, aminek én komoly jövőt jósolok. Persze tévedhetek is. -
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).
-
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.
-
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. -
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.
-
Tomika86
senior tag
válasz
tonermagus
#16632
üzenetére
A jelszintek is változnak ESP32 esetén, 3,3v lehet maximum.
-
válasz
tonermagus
#16632
üzenetére
Egyszerűen csak profibbnak érezné ha ESP/STM-en futna...
Hülye sznob...

-
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.
-
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? -
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. -
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
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.
-
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.
-
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. -
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") ; -
-
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.
-
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!
-
Janos250
őstag
válasz
Tomika86
#16559
üzenetére
Még pár megjegyzés:
A C++ tanulásához célszerű valamelyik korszerűbb fordító használata, mert abban minden benne van, ami a leírásokban szerepel. Az ESP32 ilyen, de bizonyára vannak mások is.
Futtasd a mintaprogramokat.
Ami a main()-ben van, az kerüljön a setupba, a return-t hagyd ki. A deklarációk a setup elé. A loop maradhat üresen.
Kiíráshoz, beolvasáshoz általában a cin, és cout szerepel, ezeket az ESP32 tudja.
Egy lehetséges indulás, ami nem a száraz "tudománnyal" kezd:Példának itt van a 3. lecke programja
https://www.webotlet.hu/?p=1726#include <iostream>
using namespace std;
int main()
{
int fokozat;
double sebesseg;
char szinkod;
bool metal;
cout << "Ez egy virtualis auto." << endl;
fokozat = 4;
sebesseg = 48.6;
szinkod = 'R';
metal = true;
cout << "Az auto sebessegfokozata: " << fokozat << endl;
cout << "Az auto pillanatnyi sebessege: " << sebesseg << endl;
cout << "Az auto szinkodja: " << szinkod << endl;
cout << "Az auto metalszinu: " << metal << endl;
return 0;
}Beírva/átírva az Arduino IDE-be:
Feltöltés előtt nyisd meg a soros monitort, mert oda fog írni.
#include <iostream>
using namespace std;
int fokozat;
double sebesseg;
char szinkod;
bool metal;
void setup() {
// ez kell, hogy a cout a soros monitorra irjon
Serial.begin(115200);
delay(2000);
cout << "Ez egy virtualis auto." << endl;
fokozat = 4;
sebesseg = 48.6;
szinkod = 'R';
metal = true;
cout << "Az auto sebessegfokozata: " << fokozat << endl;
cout << "Az auto pillanatnyi sebessege: " << sebesseg << endl;
cout << "Az auto szinkodja: " << szinkod << endl;
cout << "Az auto metalszinu: " << metal << endl;
// return 0;
// ezt ki kell hagyni, mert mikrokontrolleren egy progran nem ér véget,
// ez majd a loop-ban az idők végezetéig fut
} ;
void loop() {
} ;Ezt irja ki a soros monitorra:
Ez egy virtualis auto.
Az auto sebessegfokozata: 4
Az auto pillanatnyi sebessege: 48.6
Az auto szinkodja: R
Az auto metalszinu: 1Ez még alap lecke, de van itt minden a későbbiekben.
-
Janos250
őstag
A múltkori késő esti string és String kínlódásom után úgy döntöttem, hogy nincs értelme a brute force módszernek, inkább gondoljuk át logikusan. És tényleg! Ideírom a tapasztalataim, hátha valaha valakinek hasznos lesz a jövőben.
Kösz mindenkinek, aki segített!
Arduino String (nagybetűs), és a C++ string (kisbetűs) kapcsolata.
Az Arduino String nem írható be paraméterként olyan helyre, ahol C++ string az elvárás, és ez fordítva is igaz.
A kettő közötti átmenetet a .c_str() tagfüggvény teszi lehetővé.String ArduinoString_Hello = "Hello";
string Cpp_string_World = "World";
EzekkelString ArduinoString_Hello02 = Cpp_string_World.c_str();
String ArduinoString_Hello03 (Cpp_string_World.c_str());
string Cpp_string_World02 = ArduinoString_Hello.c_str();
string Cpp_string_World03 (ArduinoString_Hello.c_str());
Így új példányok jönnek létre.A szöveget mind a String, mind a string belül egy 0x0 terminált karakter tömbben tárolja, és a .c_str() konstans pointer mutat rá, ezért ha (char*) C típusú sztinget akarunk, akkor "const" miatt (char*) átdefiniálás szükséges.
Például:char* ArduinoString_Hello_c_str = (char*)ArduinoString_Hello.c_str() ;
char* Cpp_string_World_c_str = (char*)Cpp_string_World.c_str() ;
Ebben az esetben nem jön létre új példány, hanem a char* típusú karaktertömb pointere is az eredeti objektumban tárolt karaktertömb kezdetére mutat. Ha az egyikben megváltoztatjuk valamelyik karaktert, a másikban is megváltozik.Az ESP32-höz használt fordító ismeri az iterátor típust is. A C++ string rendelkezik .begin(), .end() iterátorral.
for ( std::string::iterator it=Cpp_string_World.begin(); it!=Cpp_string_World.end(); ++it)
std::cout << *it;
std::cout << '\n';
/*
Woyld
*/std::string::iterator it=Cpp_string_World.begin();
std::cout << "Cpp_string_World.begin() = :" << *it<< "\n"; // W
it=Cpp_string_World.end()-1; // mert a .end() a 0x0 terminátorra mutat
std::cout << "Cpp_string_World.end() = :" << *it<< "\n"; // dMintának egy teljes program:
#define __cplusplus 201103L
#include <iostream>
using namespace std;
void setup() {
Serial.begin(115200);
delay(2000);
Serial.println("Arduino String (nagybetus), es a C++ string (kisbetus) kapcsolata.");
String ArduinoString_Hello = "Hello";
string Cpp_string_World = "World";
String ArduinoString_Hello02 = Cpp_string_World.c_str();
String ArduinoString_Hello03 (Cpp_string_World.c_str());
Serial.printf("ArduinoString_Hello :%s\n",ArduinoString_Hello);
Serial.printf("ArduinoString_Hello02 :%s\n",ArduinoString_Hello02);
Serial.printf("ArduinoString_Hello03 :%s\n",ArduinoString_Hello03);
Serial.printf("ArduinoString_Hello[0]:%c\n",ArduinoString_Hello[0]);
Serial.printf("ArduinoString_Hello.c_str()[0]:%c\n\n",ArduinoString_Hello.c_str()[0]);
/*
ArduinoString_Hello :Hello
ArduinoString_Hello02 :World
ArduinoString_Hello03 :World
ArduinoString_Hello[0]:H
ArduinoString_Hello.c_str()[0]:H
*/
string Cpp_string_World02 = ArduinoString_Hello.c_str();
string Cpp_string_World03(ArduinoString_Hello.c_str());
std::cout << "Cpp_string_World :" << Cpp_string_World<< "\n";
std::cout << "Cpp_string_World02 :" << Cpp_string_World02 << "\n";
std::cout << "Cpp_string_World03 :" << Cpp_string_World03 << "\n";
/*
Cpp_string_World :World
Cpp_string_World02 :Hello
Cpp_string_World03 :Hello
*/
char* ArduinoString_Hello_c_str = (char*)ArduinoString_Hello.c_str() ;
char* Cpp_string_World_c_str = (char*)Cpp_string_World.c_str() ;
ArduinoString_Hello_c_str[2] = 'x';
Cpp_string_World[2]= 'y';
Serial.printf("ArduinoString_Hello is atirodik :%s\n",ArduinoString_Hello);
std::cout << "Cpp_string_World_c_str is atirodik :" << Cpp_string_World << "\n";
/*
ArduinoString_Hello is atirodik :Hexlo
Cpp_string_World_c_str is atirodik :Woyld
*/
// iterator:
std::cout << "Iterator:\n";
for ( std::string::iterator it=Cpp_string_World.begin(); it!=Cpp_string_World.end(); ++it)
std::cout << *it;
std::cout << '\n';
/*
Woyld
*/
std::string::iterator it=Cpp_string_World.begin();
std::cout << "Cpp_string_World.begin() = :" << *it<< "\n"; // W
it=Cpp_string_World.end()-1; // mert a .end() a 0x0 terminátorra mutat
std::cout << "Cpp_string_World.end() = :" << *it<< "\n"; // d
} ;
void loop() {} ; -
Janos250
őstag
válasz
JozsBiker
#16425
üzenetére
"Én az oldalamra ennek segítségével tettem be a kódot."
Én is
http://arduinouser.hu/esp32/wifisocket/index.htmRégebben itt ajánlottátok nekem a WEB-socketot, de fogalmam se volt mi az. Azt hittem, a klasszikus internet socket. Amikor rájöttem, hogy az egész más, elhatároztam, hogy írok egy hevenyészett leírást az ESP32-n az LWIP internet socket használatáról. Ez most történt meg. Majd egyszer a WEB-socketról is.
Új hozzászólás Aktív témák
- Thinkpad T14 Gen4 14" FHD+ IPS i7-1365U 16GB 512GB NVMe magyar vbill gar
- Apple iPhone 15 Pro Max 256GB, Megkímélt, Kártyafüggetlen, Töltővel, Dobozzal, 1 Év Garanciával!
- MSI Prestige 16 AI Studio 16" QHD+ IPS Ultra 7 155H RTX 4060 32GB 1TB NVMe ujjolv IR kam gar
- Gamer PC - i5 12400f, RX 6700XT, 16gb RAM + Garancia
- Ryzen5 4500/ RX5700XT/ 16GB DDR4 alapú konfig/ garancia/ ingyen foxpost
- GYÖNYÖRŰ iPhone 14 128GB Red -1 ÉV GARANCIA -Kártyafüggetlen, MS3678
- Apple iPhone 15 Pro Max 256 GB Natural Titanium 1 év Garancia Beszámítás Házhozszállítás
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- GYÖNYÖRŰ iPhone XR 128GB Red-1 ÉV GARANCIA - Kártyafüggetlen, MS3984, 100% Akkumulátor
- HP EliteBook 840 G7 i5-10210U 16GB 512GB FHD 400nit 1 év garancia
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi

De akkor igazából mindkettőn szabadon használható.
![;]](http://cdn.rios.hu/dl/s/v1.gif)
Nem jön az "akarsz a közeledben ingyen ....et?", és hasonló oldalak. Legfeljebb G...tyán milliárdjait nem növelem.

Ha pedig önkényesen mégis megadom azt neki ugyanúgy, mint az SW verziónál (ahol viszont kéri), hibára fut a fordító.

ekkold

