- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Argos: Szeretem az ecetfát
- vrob: Az IBM PC és a játékok a 80-as években
- Magga: PLEX: multimédia az egész lakásban
- sziku69: Fűzzük össze a szavakat :)
- zebra_hun: Hűthető e kulturáltan a Raptor Lake léghűtővel a kánikulában?
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- gban: Ingyen kellene, de tegnapra
- sziku69: Szólánc.
-
LOGOUT
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 #17298 üzenetére
Külföldi fórumban azt olvastam, hogy felesleges mert a hardware serial ezt megszakításként kezeli.
Serial2.available() ez mikor igaz? Mert nekem csak akkor kellene ebbe az első if feltételbe lépni, ha adatot kapok soros porton.ui. azt olvasom, hogy az érkező karakterek számával tér vissza a Serial2.available() függvény. akkor jó ez így nekem végülis
-
-
Tomika86
senior tag
Jelenleg a nextion kijelzőről kapott Stringet a következő formában olvasom be uartról:
// Soros portról olvasás
if (Serial2.available()) {
String indata = Serial2.readStringUntil('#'); // # jelig várjuk az adatot
if (indata.indexOf("page0") > -1) // Ha "page0" string érkezik
{
kepernyo_szam = 0; // Képernyő változó értéke 0 lesz
}
else if (indata.indexOf("page1") > -1) // Ha "page1" string érkezik
{
kepernyo_szam = 1; // Képernyő szám változó értéke 1 lesz
szerviz_oldal_nem_folyamatos_kiiras (); // 1. oldalon adatok frissítése
}
}Ezt megtudom oldani megszakítással is? Jobb lenne az nekem?
A következő programsorokban az indata tartalma alapján határozom meg hogy mit csinálok (kettő van csak utána itt, de van kb 50).
Működik, de szebb lenne megszakítással?Köszönöm
-
válasz
razorbenke92 #17291 üzenetére
Lehet kapni kereskedelmi forgalomban ilyen Bluetooth pedált, van, amelyiknél meg tudták oldani a zajmentes működést, de az olcsóbbak jellemzően - pont az anyag spórolás miatt - jellemzően nem. Én viszont úgy döntöttem, hogy nem fogok 30+e Ft-ot kifizetni egy 2 gombos billentyűzetért
inkább megcsinálom jól. Elég kreatív vagyok.
Persze tudom, hogy nem ezzel kapcsolatban kértél tanácsot
Nagyon örülök minden ötletnek
Egy optós távolságszenzor is tök jó megoldás lenne, de praktikus okokból olyan szerkezet kell, ami ad haptikus visszajelzést, és kisebb mozdulatokra nem reagál, rajta tudom tartani a lábam pl. két lapozás között, mivel játék közben nem látom se a lábam, se a pedált, szóval nincs lehetőség megkeresni, ha levettem róla a lábam, vagy elcsúszik. -
bár a követelményed ellent mond a csendességnek...
Szerintem azért, mert ha pedál (vagy bármi mechanikus), akkor van benne két végállás, amelyeknél a felkoppanásokat nehéz tompítani.Ha vékonyra csinálod a házat, és nem holdjáróban koncertezel, akkor érdemes megpróbálni egy nagy "antennát" a lábszenzor belsejében. Én hackeltem már meg TTP szenzort, hogy érzékeljen 18-as bútorlapon keresztül.
Ismerve a felhasználást, én valamilyen távolságérzékelőben gondolkodnék, ami könnyen már azt is látná, ha fölé fordítod a lábfejed.
Persze tudom, hogy nem ezzel kapcsolatban kértél tanácsot -
válasz
Tankblock #17286 üzenetére
Én is gondoltam résoptóra, van is itthon, de gondoltam teszek egy próbát a touch-al, mégis külön alkatrész nélkül, esetleg néhány darab alufóliával kiváltható lenne a kapcsoló.
bár a követelményed ellent mond a csendességnek...
Miért is?
Lapozó pedált építek elektronikus kottaállvány mellé. Az előző (szintén általam épített) példány egy Bluetooth billentyűzet +3D nyomtatott tok felhasználásával készült, működik is szépen, de egyrészt elalszik, ha sokáig nincs nyomkodva, másrészt a mechanikája elég hangosra sikerült, így gyakorlásra jó, de koncertre, stúdiófelvételre nem alkalmas.
Az optimális megoldás minden mozgó alkatrész nélküli touch érzékelés lenne. Kézenfekvő lenne, hogy zokniban nyomkodjam közvetlenül a touch szenzortde ez színpadon megint nem megoldás.
Mi lenne, ha egy gumilap vagy egy vékonyabb habgumi lap két oldalára tennék nyáklapot vagy alufóliát? Cipővel toppantásra vajon lehetne aktiválni?
Apropó toppantás: mi lenne, ha piezo-t használnék? 🤔 -
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). -
Tankblock
aktív tag
Anno játszottam a Touch bemenettel, emlékeim szerint egy tresholdot kellett állítani és ahhoz képest mérte h van-e érintés vagy nincs ---> töltés és kisütés ciklusokat végzett abból kalkulált. Hát nekem nem volt megggőző, egy touch sensor internetről simán jobb eredményeket hozott, igaz felületekkel nem kísérleteztem.
ha csak ON-OFF kapcsoló kell akkor infrakapu közé meg betenni egy fizikai gátat a pedál által aztán kész is....
PLehhez hasonlót lehet bontani is nyomtatókból :
[link]bár a követelményed ellent mond a csendességnek....
-
Tomika86
senior tag
válasz
razorbenke92 #17281 üzenetére
Nem csökken a feszültség annyira le. Step down konverterek vannak, elvileg 8vról is megy.
-
-
Tomika86
senior tag
Sziasztok!
Gondom van a kocsiban a műszerfallal, lehet van itt aki jártas autó elektronikában.
Ha az izzítógyertyák be vannak kapcsolva akkor újraindul a műszerfal. (Relén és optón leválasztva a kapcsolása biztos ami biztos alapon). Amikor bekapcsol az izzítás egyből újraindul, és folyamatosan, mivel a panel kapcsolja az izzítást.
Ha le vannak húzva az izzítógyertyák, akkor nem, akkor minden jó.
Illetve érdekes, de ha a fordulatszám VR szenzor csatija szét van húzva akkor se indul újra.
Mitől lehet ez?
-
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.
-
puritan
csendes tag
Kedves Mindenki!
DS3231 RTC-vel van egy kis problémám.
Pontosan arról lenne szó, hogy egy nanohoz csatlakoztatva működik az óra. Ha a tápfeszt elveszem az egésztől, és mondjuk 2 óra múlva visszaadom, akkor az óra a két órával azelőtti időt mutatja. Van rajta elem, és jó is. Hogy lehet azt elérni, hogy az óra a tápfesz lekapcsolása alatt is működjön, és a program újraindulásakor a helyes időt mutassa? -
A214
aktív tag
Szuper, és azt tudja netán valaki mit és hol (melyik sorban)?
Vagy hol lehet letölteni a módosítottat,ékezetes karakterest.Tehát:
Működik, időt, dátumot ,időjárás adatokat város kód szerint szépen kiírja.
A hét napjait és a időjárási paraméterek megnevezését ékezet nélkül magyarul szintén.
Na ide szeretnék ékezeteket, ha megoldható.
-
A214
aktív tag
Sziasztok,
Ékezetes karakterek használatát(kiírását) ,hogy lehet ezen a kijelzőn megoldani?
MAX7219 LED mátrix modul 4 x 1 kijelző
és wemos d1 mini pro
-
ratkaics
senior tag
Sziasztok!
Van egy eszközöm, amivel RS485 Modbus RTU-n keresztül lehet kommunikálni, Ezt szeretném integrálni a HomeAssistant szerveremre. Ehhez szükségem lenne egy olyan cuccra, ami a Modbus RTU-t "átteszi" Modbus TCP-re. Van esetleg erre valami költséghatékony megoldása valakinek?
Köszi előre is a segítséget!
-
vegyszer
addikt
válasz
vegyszer #17252 üzenetére
Közben tegnap este, mikor a család már nyugovóra tért, volt időm jobban tesztelni a kütyüt a rá töltött kóddal. ( https://github.com/ArthurFDLR/br-m5, PlatformIO, M5Stick-Cplus)
Sajnos három perc után a kapcsolatot elveszti valamelyik fél a Bluetooth-on...Mint kiderült, alant a kódhoz írtak ilyen megjegyzéseket, egy arc más eszközön rendbe is tette, de ide vissza nem portolta.
Most jön az a rész, ahol már forrás kódot kellene faragnom
Még majd tesztelni is... Hát érdekes lesz ez... -
-
-
Tomika86
senior tag
Sziasztok!
Ezt, hogy nevezzük, amikor itt Oled kijelzőhöz kiválasztom(ezt a sort amikor megadom a programban), hogy milyen IC, van-e reset pin?
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
Köszönöm!
-
vegyszer
addikt
Sziasztok!
A legegyszerűbbnek tűnő feladatba is sikerült bele törni a bicskámat.
Rendeltem január elején egy M5StickC PLUS eszközt. A héten végre megjött.
Volt egy kész projekt, amit rá akartam volna vala egy az egyben tenni.https://github.com/ArthurFDLR/br-m5
Itt az a leírás, hogy:
Installation:
Install Visual Studio Code and the PlatformIO IDE extension. Clone this repository -git clone https://github.com/ArthurFDLR/br-m5
-, open it as project in PlatformIO and upload -Ctrl+Alt+u
- to a M5Stick-Cplus connected to your PC.De mivel se a VSC, se a PlatformIO általam eddig nem használt appok, így meggyűlik vele a gondom...
Már többször is újratelepítettem, mert friss telepítés után is a VSC összeomlik, néha többször is egymás után. Valamiért a letöltési mappám teljes tartalmát vizsgálja az App, hogy hátha van ott valami számára.
Az, hogy a PlatformIO felületen belül merre van a terminál a klónozáshoz, megint valahogy számomra nem egyértelmű. Pedig csak egy egyszerű ötperces kis semmiségnek tűnt. És bosszant, hogy balféknek érzem magam emiatt.
Valaki használja ezt a platformokat? -
Tomika86
senior tag
válasz
its_grandpa #17248 üzenetére
Köszönöm!
-
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
its_grandpa #17248 üzenetére
Igen, ez így valszeg jobb.
-
its_grandpa
tag
Ha boolean visszatérési értékűre módosítod a függvényt, a hívó oldalon kell egy ellenőrzés.
Mivel Tomika86 eredeti fv-e int (nem uint), én valami ilyesmit csinálnék:int ADS7828_olvasas (int Addr_byte, byte Cmd_byte) {
byte data[2];
int adc = -1 ;
Wire.beginTransmission(Addr_byte); // I2C átvitel indítása, az adott címen
Wire.write(Cmd_byte); // Command byte küldése
Wire.endTransmission(); // I2C átvitel megállítása
Wire.requestFrom(Addr_byte, 2); // 2 byte adatra várakozás
if (Wire.available() == 2) { // Ha megérkezett a 2byte
data[0] = Wire.read(); // Első byte tömbbe írása
data[1] = Wire.read(); // Második byte tömbbe írása
delay(2); // Ciklus késleltetés
adc = ((data[0] & 0x0F) * 256) + data[1]; // Adat konvertálás 12bit-re
}
return adc;
}
Persze a hívó oldalon így is kell egy ifADS7828_olvasas
..... -
válasz
Tomika86 #17245 üzenetére
De, az egy rohadt nagy probléma. Én valami ilyesmit csinálnék:
bool ADS7828_olvasas (int Addr_byte, byte Cmd_byte, int *adc) {
byte data[2];
Wire.beginTransmission(Addr_byte); // I2C átvitel indítása, az adott címen
Wire.write(Cmd_byte); // Command byte küldése
Wire.endTransmission(); // I2C átvitel megállítása
Wire.requestFrom(Addr_byte, 2); // 2 byte adatra várakozás
if (Wire.available() == 2) { // Ha megérkezett a 2byte
data[0] = Wire.read(); // Első byte tömbbe írása
data[1] = Wire.read(); // Második byte tömbbe írása
delay(2); // Ciklus késleltetés
*adc = ((data[0] & 0x0F) * 256) + data[1]; // Adat konvertálás 12bit-re
return true;
}
return false;
}De nem ismerem az egész kódot, lehet megoldható szebben.
-
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)
-
-
Tomika86
senior tag
Sziasztok!
Visual Studio miért ad figyelmeztetést erre?
int ADS7828_olvasas (int Addr_byte, byte Cmd_byte) {
byte data[2];
Wire.beginTransmission(Addr_byte); // I2C átvitel indítása, az adott címen
Wire.write(Cmd_byte); // Command byte küldése
Wire.endTransmission(); // I2C átvitel megállítása
Wire.requestFrom(Addr_byte, 2); // 2 byte adatra várakozás
if (Wire.available() == 2) { // Ha megérkezett a 2byte
data[0] = Wire.read(); // Első byte tömbbe írása
data[1] = Wire.read(); // Második byte tömbbe írása
delay(2); // Ciklus késleltetés
int adc = ((data[0] & 0x0F) * 256) + data[1]; // Adat konvertálás 12bit-re
return adc;
}
}Ezt írja:
src\main.cpp: In function 'int ADS7828_olvasas(int, byte)':
src\main.cpp:2094:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^ -
DarkByte
addikt
válasz
DarkByte #17238 üzenetére
Egy ilyet találtam, itt 3dBi-t adnak meg ehhez a kis csavart antennához. (már ha igaz) [link]
Kalkulátorba beírva 8dBm-el és teoretikus 0dB kábel veszteséggel, 11 dBm EIRP jön ki. Szóval azért maxra (20dBm) tekerve elvileg át lehet vele lépni.
-
DarkByte
addikt
Van reális esélye egyáltalán hogy ilyen kis antennákkal ezt a limitet túllépi az ember?
Nyilván ki lehetne számolni ha meg lenne adva mekkora a nyereségük, de ez nincs így. Illetve szoftveresen az adóteljesítmény szabályozható ezeken a rádiókon. Elemről üzemeltetve azt amúgy se érdemes a szükségesnél jobban felcsavarni.
Ez [link] pl. jobb vásárnak tűnik, eleve az értelmesebb lábraszter és a jobban elvezethető antenna miatt.
De majd nézek 868MHz-eset is, csak úgy nézem az ritkább valamiért és emiatt drágább. -
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)
-
dew28
aktív tag
válasz
DarkByte #17234 üzenetére
The LoRaWAN technology can be used in ETSI EU433 band as long as the radio device EIRP is less than 12.15 dBm and the end-device transmit duty-cycle should be lower than 10%. The center frequency of the channels associated with this band ranges from 433.175 to 434.665 MHz.
Az NMHH szerint ezeknek az eszkozoknek az olcsositott, gyenge zavarszurovel, vagy a nelkul forgalomba hozott valtozatait (kina), pl. az MVM NET 450MHz-es bazisallomasai is 'zavarhatjak', hogy a mindenfele, limit nelkuli kaputaviranyitokrol, 'okos/kinetikus' kapcsolokrol mar ne is beszeljunk.
hossszabb tavon is celszerubb a 863-870 MHz tartomanyt hasznalni ilyen celra szvsz.
-
DarkByte
addikt
Sziasztok!
Azt valaki tudja esetleg hogy a különböző frekvencia sávban működő LoRa modulok közül mi használható itthon legálisan? Úgy tudom a 433 és 868MHz-es sávok ISM sávok, tehát ott nincs vele gond. Pl. gondolom egy ilyen rendben kellene hogy legyen [SX1278 433MHz] -
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!
-
Janos250
őstag
válasz
Tomika86 #17220 üzenetére
Hát, a lényegét nem sikerült elkapni! :-(
Az csak egy megjegyzés volt, hogy minek írsz négy sort, amikor egy is elég. Rövidebb is, memóriában is kevesebbet foglal. Hogy azt az egy sort közvetlenül írod be, vagy függvénybe teszed, nem lényegi kérdés."Ha már a program legvégén deklarálom a függvényt, és csak meghívom a setup blokkból, akkor nem csinálja meg. "
Ha függvény hívását később a loopba teszed, akkor megy?
Le kéne írni, hogyan deklaráltad, és hogyan hívtad, hogy valami fogalmunk legyen, hogy mi a kérdés.
Mi az, hogy nem csinálja? Lefordítja hibajelzés nélkül, csak nem hajtja végre?
Van elég várakozás az elején, hogy minden talpra álljon?
A Serial2 beginje megvolt előtte? Van utána elég várakozás?
A képernyőt nem kell inicializálni ? -
válasz
tonermagus #17217 üzenetére
Mi lesz ez, valami labdajáték, vagy hasonló?
1. nemigen jelent akadályt, sőt, akár még jól is jöhet, ha szeretnéd a hatótávolságot pontosan behatárolni, mert ha megfelelő szögben leárnyékolod a vevőt, egy távolságon túl nem kap jelet. Egy tsop vevő 120°-ban vesz, de mivel filléres cucc, semmi akadálya, hogy teleszórd vele a célpontot, hogy minden irányt le tudj fedni.
2. a pára ilyen kis távolságon nem hiszem, az eső talán ronthatja a vételt, ezt ki kell tapasztalni, de ha például saras lesz az adó vagy a vevő, az kitakar(hat)ja a jelet.
-
Janos250
őstag
válasz
Tomika86 #17218 üzenetére
Ha ez helyett:
Serial2.print("page 0");
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
ezt írod:Serial2.print("page 0\xff\xff\xff");
Akkor, ha 4 sorban írod az jó, ha egyben, akkor nem? Na, ne!
Biztos, hogy a Serial2 beginje a setup elején van, és van utána delay? Mondjuk delay(2000)?
Egyáltalán feléled akkorra a képernyő?
Van elöl elég delay, hogy minden felálljon? -
tonermagus
aktív tag
Köszi a tippet és egyben bocsánat a késői reagálásért
Ez a megoldás szimpatikusnak tűnik. Az teljesen jó, ha 1-2 méteren belül tud érzékelni.
Kérdés hogy az jelenthet-e tapasztalataid alapján problémát ha:
- A vevő magasabban van picit mint az adó. Itt ugye kérdés, hogy a vevő milyen szögben érzékel, vagy az adó milyen szögben sugároz vertikális irányba. Elképzelhető hogy az oszlop 30-50 cm-el magasabban lesz mint az adó, ami a földön lesz. Ez lehet-e probléma?
- Párás/esős idő befolyásolja-e az érzékelést? Szabadtéren lesz használva... -
Tomika86
senior tag
Sziasztok!
Lehet kiröhögtök, de setup blokkból miért nem működik függvényhívás?
Csak egy példát hozok:Serial2.print("page 0");
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
Ha ez van a setup blokkban, akkor működik.
Ha már a program legvégén deklarálom a függvényt, és csak meghívom a setup blokkból, akkor nem csinálja meg. Valamit nem tudok ezzel még
Prototípusát meg kell adnom? Vagy mi a kínja? -
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....
-
Janos250
őstag
válasz
Tankblock #17210 üzenetére
Köszi, tulajdonképpen nem a konvertálásra gondoltam, de közben megtaláltam, hogy nem szabad kitenni az x elé a 0-t.
https://en.cppreference.com/w/cpp/language/escape
Vagyis a
Serial2.print("page 0");
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);helyett a
Serial2.print("page 0\xff\xff\xff");
a jó.
-
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
Hozzáértők!
Hogy lehet a printf (vagy print) idézetében "elbujtatni" a 0xff-et? Valahogy úgy, ahogy a \n megy? A \0xff nem jó.Vagy C string konstansba tenni, és azt nyomtatni?
-
Tankblock
aktív tag
válasz
Tomika86 #17203 üzenetére
mivel nem látom a teljes kódot addig annyit tudok mondani:
void endData(void) {
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}
és ezt mindenhova ahol aSerial2.write(0xff);
hármas vanés ahol ezt használod:
if (izzitas_be) {
Serial2.print("vis p15,1"); // Izzítás lámpa bekapcsolása
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}
else {
Serial2.print("vis p15,0"); // Izzítás lámpa kikapcsolása
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}helyette:
if (izzitas_be) {
Serial2.print("vis p15,1"); // Izzítás lámpa bekapcsolása
}
else {
Serial2.print("vis p15,0"); // Izzítás lámpa kikapcsolása
}
endData();Így is úgy is ki kell küldeni a Nextionnak a lezárást ....
-
Tomika86
senior tag
Hogy lehetne egyszerűsíteni ezeket?
Nagyon sok helyen használom, jelenleg mindenhol külön használva, mindenhol külön ott vannak a lezáró karakterek
pl képernyő váltás:Serial2.print("page 0");
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
Kép be és kikapcsolás:if (izzitas_be) {
Serial2.print("vis p15,1"); // Izzítás lámpa bekapcsolása
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}
else {
Serial2.print("vis p15,0"); // Izzítás lámpa kikapcsolása
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}
Ha txt-be küldökSerial2.print(F("t14.txt=\""));
Serial2.print(izzido_kiir);
Serial2.print(F("\""));
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);Serial2.print("x8.val=");
Serial2.print(beszivott_lev_hofok_kiir);
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff); -
Janos250
őstag
"Ha működik, akkor nem szabad megjavítani"
Én ezt mégis fordítva szoktam követni. Amikor működik, akkor 50 %-ban van kész. Akkor kell elemeire szétszedni, és logikusan újból, optimalizálva összerakni, kommentezni, változóknak beszélő neveket adni, bekezdésekkel, szóközökkel olvashatóbbá tenni, sortörésekkel az összetartozókat blokkba szedni, stb. :-)
Új hozzászólás Aktív témák
Hirdetés
- Ultimate előfizetés új fiókra akár 2105 Ft/hó áron! Azonnali, automatizált aktiválással, csak Nálam!
- LENOVO ThinkBook 13s - 13.3" FullHD IPS - i5-10210U - 8GB - 256GB SSD - Win11 - MAGYAR
- Fujitsu USB Port Replicator PR09 docking station (1x5K vagy 2x4K felbontás) (DisplayLink)
- Xbox Game Pass Ultimate kedvező áron, egyenesen a Microsoft-tól! - AUTOMATA BOLT
- Hibás! Dísznek, Porfogónak, tesztkártyának vagy böngészni! Asus Rog Strix RX 470 4GB Videokártya.
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged