- Google Pixel topik
- Mobil flották
- Honor 400 - és mégis mozog a kép
- Android alkalmazások - szoftver kibeszélő topik
- iPhone topik
- Honor 400 Pro - gép a képben
- One mobilszolgáltatások
- Samsung Galaxy Z Fold6 - ugyanaz, sarkosan fogalmazva
- Samsung Galaxy A34 - plus size modell
- Azonnali mobilos kérdések órája
-
Mobilarena
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
-
-
vargalex
félisten
válasz
Tomika86 #19898 üzenetére
Eddig is tiszta volt, hogy mit szeretnél!
Csak a redirect-et - ahogy írtam - a javascript-ből indított ajax hívás nem kezeli le. Ha a böngészőben megnézed Developer módban a Network fület, akkor látni fogod, hogy megkapja a HTTP 302-t (legalábbis a forrás szerint 302 megy vissza), de a böngésző nem kezd vele semmit... Ezt neked kell a javascript kódodban kezelni, ahogy a http 200-at is teszed.
Legalábbis emlékeim szerint nem kezd a redirect-el semmit a böngésző, de amint időm engedi, tesztelem. De a Developer mód Network füle sokat tud segíteni... -
vargalex
félisten
válasz
Tomika86 #19896 üzenetére
ESP oldalról válaszolod az átirányítást (ezt látnod is kell a böngészőben developer módban a network fülön, ahogy minden más választ is), de azt ajax hívás esetén a böngésző nem követi, azaz neked kell a javascript-ben a location-t beállítani. Ennek a résznek nincs köze az esp-hez, tisztán böngésző/javascript működés.
-
Tomika86
senior tag
válasz
vargalex #19893 üzenetére
Az esp32 kódjában lenne az átirányítás (nem a javascriptben)
Ahol a send(400, "text/plain", "FAIL CONNECTION")(sima szöveg küldés böngészőre)
de próbáltam ezzel is
request->redirect("/nextion_fail");
És ehhez megvan a hozzátartozó http_get kérés, ahol a html kódot küldöm el.
Ez a nextion.cpp az other mappábanDe akkor valamit félreértek, illetve teljesen máshogy kell csinálni.
Az ajax kód jó így.
Az esp32nél a post kódnál ahol ellenőrzöm a check_status értékét, ott egy hibaközlő html oldalt szeretnék megjeleníteni.Köszönöm
-
válasz
t72killer #19894 üzenetére
mi van, ha az alany éjszakai fürdőszobába menéskor esik el? Jellemzően nem okoskütyükkel a nyakunkban alszunk
Dehát pont ezért csinálok karórát, ami mindig a kezén lesz, második eset, hogy a telefon az ágyon maradt, ő meg a földön feküdt, amíg gyanús nem lett, hogy nem hív egy teljes napja... 😶 Nyomni tudná, ha lenne mit.
Talán egy kibelezett régi óra tokját fogom használni, vagy 3D nyomtatok egy tokot hozzá.
spektrométert építek éppen
Jópofa projekt! -
Elektro topikból átköltözködve (hosszas privi csevejre most nincs időm, spektrométert építek éppen
, így ide szemetelnék): azon gondolkozz még el, hogy milyen formában kellene a kütyüt hordani. Mert ha szorosan bőrhöz rögzítve, akkor muszáj, h kényelmes legyen, máskülönben a polcon végzi.
Pulzusmérőt nem kell megépítened, már megtették helyetted - igaz, erre még ráférne egy kis miniatürizálás:
Tipikus időskori baleseteken okulva: azon is el kell gondolkodni, hogy mi van, ha az alany éjszakai fürdőszobába menéskor esik el? Jellemzően nem okoskütyükkel a nyakunkban alszunk, lehet tele kéne poloskázni a lakást, a hanganyagra meg valami jó scriptet írni, hogy mikor kattanjon be a rendszer?
-
vargalex
félisten
válasz
Tomika86 #19892 üzenetére
Nem teljesen értem, mert az átirányítás nincs kezelve az ajax hívásodban. Miért irányítana bárhová a böngésző?
Milyen kiíratott üzenetre gondolsz, hogy nem jelenik meg? A javascript-ből csak az alert megy, semmilyen visszatérő értékkel nem foglalkozol ott... Tehát a jelenlegi kódoddal az alerten kívül más nem is kell, hogy megjelenjen a böngészőben. -
Tomika86
senior tag
válasz
vargalex #19890 üzenetére
Átalakítottam, így az ESP32 400-as kódot küld, ha true a check_status és nem jelenik meg az upload gomb.
De a fő probléma az hogy nem jelenik meg az oldalon a kiíratott üzenet sem:
if (check_status)
{
request->send(400, "text/plain", "FAIL CONNECTION");
// request->redirect("/nextion_fail");
Serial.println("Check status Fail");
}
else {
Serial.println("Check status Ok");
request->send(200);
}itt a redirect ki van kommentelve, de azzal sem jelenik meg, pedig a redirect még működik, de az ott lévő request->send(400, "text/html", fail_page); nem működik.
Tehát a fő probléma, hogy az átirányított oldal nem töltődik be, illetve még a sima text sem (nem a scriptben lévő alert)
Köszönöm!
-
vargalex
félisten
válasz
Tomika86 #19889 üzenetére
Szia!
A
valcheck
és asendInfo
függvényben is független, önállóXMLHttpRequest
objektumot hozol létre. Így asendInfo
-ban elküldött adat nem fogja szerintem kiváltani avalcheck
-ben definiáltXMLHttpRequest onreadystatechange
eseményét. És ugye a sorrend is rossz, előbb kell azonreadystatechange
definiálás, utána a küldés..
Illetve a /size feldolgozásnál a check statustrue
esetén (bár én éppen megcserélném a true-false értékeket, mert így az elnevezéshez képest fordítva működik, azaz igaz esetén hibás, hamis esetén OK) nem http 200-at kellene visszaadni, ha azt szeretnéd, hogy a javascriptonreadystatechange
else ága fusson le.Szóval, szerintem valahogy így kellene (csak részleteket írok):
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(xhttp.readyState == 4 && xhttp.status == 200) {
alert('Ok status');
}
else {
alert('Invalid status');
}
};
sendInfo(xhttp, file.size);
...
function sendInfo(xmlHttp, size) {
xmlHttp.open("post", "/size");
xmlHttp.send(size);
}
...
if (check_status)
{
request->send(400, "text/plain", "FAIL CONNECTION");
Serial.println("Check status Fail");
}
else {
Serial.println("Check status Ok");
request->send(200);
}
-
Tomika86
senior tag
Sziasztok!
Hátha itt valaki tud segíteni, eddig sehol.
Röviden a program(teszt jelleggel van):
1. betallózva a fájlt, ellenőrzi a kiterjesztést, .tft esetén elküldi a méretet az esp32 felé. illetve aktív lesz az upload gomb.
Eddig működik
2. check_status direkt true értékkel van
3. ha a check_status értéke 1 akkor át kellene lépnem egy hibaüzenetet megjelenítő oldalra.Na a 3. lépésnél van a gond, nem csinálja meg.
Sima text/plain szövegkiírást sem ami a példában van.
Próbáltam redirectet is, de az ott lévő html oldalt sem jeleníti meg a böngésző (odalép pedig)Sehol sem találok ilyen példaprogramot, ahol átirányítás van és megjelenítve egy hibaoldal. Serial.print van mindenhol, ami nálam is működik, de ez nem felhasználóbarát. Inkább kiírnám a hibát az oldalon.
Ide tettem fel a programot:
[link]Köszönöm ha bárki tud hozzátenni valamit, akármi is legyen az.
-
ViZion
félisten
Apósnak sógorék most vesznek/vettek vmit, ami sim kártyás. Ha vész van, akkor 5 számot próbál hívni, ha nem veszik fel, akkor vmi központot, ahonnan visszahívják. Ha nem sikerül, akkor küldik a mentőt. Elvileg, asszonynak ezt magyarázták. Gondolom ez drágább, sim havidíj+szolgáltatás is van, de nem ismerem, h mi ez, jobb kimaradni dolgokból.
-
válasz
Wolfram #19884 üzenetére
Nem hiszem, hogy ez túl nagy matekozást igényel. A hangsebesség ismert, a jel beérkezési ideje közti különbséget kell mérni, meg a hangerőt.
A csatornák legyenek hangszigetelő anyaggal rendesen elválasztva/körbevéve, hogy ne legyen crosstalk, és maga a helyiség is, amiben ezt a dolgot szeretnéd megvalósítani, legyen csillapított, különben a visszaverődések megnehezítik a dolgod. Érdemes mélyvágást csinálni, mert a magas hangok irányát lehet jól meghatározni.
-
Wolfram
aktív tag
Hang helyének/irányának meghatározása, csinált már valaki ilyet? A setup egy ESP32-S2 és 4db MAX4466 mikrofon egy 2x2m-es négyzet sarkain elhelyezve.
Kezdjek házilag matekozni, vagy van már valami megírt kód erre? -
-
agent_k
őstag
válasz
vegyszer #19867 üzenetére
Írattam vele egy mqtt küldős scriptet. Működött végülis. Arra, hogy ha már eleve olvasott utána az ember és van valami fogalma a témáról akkor jó. De arra, hogy beadod neki mit szeretnél és aztán feltöltöd arra nem jó. Indulásnak viszont szerintem nem rossz a dolog.
Mondtam neki, hogy írjon nekem zambretti kódot az időjárásállomásomhoz. Na abba belekeveredett, mint macska a gombolyagba. Meguntam és inkább gitről összeszedem.
-
Tud valaki olyan vezeték nélküli megoldást, ami elfér egy karórában ?
Anyukámnak szeretnék egy karra csatolható vészjelző eszközt csinálni, ami elmegy egy darab CR2032-es elemről. Attiny85 (Attiny12?) + IR LED + nyomógomb a terv, csak az a gond, hogy az IR nem megy át a falon. A vevő oldalon egy ESP8266 lenne IR vevővel, wifire kötve.
A másik ötletem, hogy magát az ESP8266-ot tenném az órába, van egy pucér ESP8266 modulom. Csak szemben az Attiny-vel, ami szépen elműködik 2,5V-ról is, ennek kellene stabilizátor és egy nagyobb áramot leadni képes táp, a wifi miatt.
Szóval valami rádiós eszköz kellene, ami méretben nem nagyobb egy gombelemnél. Az egyetlen, amit tudnia kell, hogy ~10m távolságban falon át egyetlen jelet/impulzust tudjon megbízhatóan átvinni a vevő oldalra.
-
Wolfram
aktív tag
ESP8266-on a hostnévből hogy tudok IP címet gyártani?
Konkrétan az a probléma hogy a websocket kliens úgy tűnik nem tudja feloldani a hostnevet, csak IP címmel kapcsolódik. -
ekkold
Topikgazda
válasz
Janos250 #19861 üzenetére
Sokszor hasznos a pointerek használata, ugyanis (ha jól van megírva a program) akkor hatékonyabb kódot fordít belőle a fordító. Pl. nem ugyanúgy fordul le ha a ciklusváltozóval indexelsz egy tömböt, vagy helyette egy pointert növelsz a ciklusban. Bár az újabb fordítók (beállítástól függően) olyan mértékben is tudnak optimalizálni, hogy ha szándékosan rosszul írom meg a kódot, akkor is ugyanaz fordul belőle, mint egy hatékonyabb forráskódból. Néha viszont a túlzott optimalizálás elrontja a kódot. Ha viszont erre is MI-t használunk majd egyszer, ami értelmezi, hogy "mi a fenét akart a költő", akkor onnantól ez az egész elveszti a jelentőségét (tartok tőle, hogy ez nincs is olyan messze).
-
válasz
ReFleXx #19860 üzenetére
Sajnos már nem emlékszem, hogy hol olvastam, de az a lényeg, hogy engem az zavart meg, hogy a * operátornak két funkciója van, ezen az oldalon például ezt le is írja.
Ebben a kódban látszik is:int myAge = 43; // Variable declaration
int* ptr = &myAge; // Pointer declaration
// Reference: Output the memory address of myAge with the pointer (0x7ffe5367e044)
printf("%p\n", ptr);
// Dereference: Output the value of myAge with the pointer (43)
printf("%d\n", *ptr); -
válasz
Janos250 #19861 üzenetére
Nem arról van szó, amikor én döntök arról, hogy mit használok
Hanem amikor például egy függvénynek kell valami speciális módon paramétert átadni, illetve az átvett adattal dolgozni, mert ugye a referenciaként átadott változónál a globális változóhoz tartozó memóriarészhez férek hozzá, de utána hogy kell rá hivatkozni a függvényen belül stb. az nem mindig világos elsőre. De próbálgatással eddig még mindig megoldottam az ilyen helyzeteket. -
Janos250
őstag
Én annak idején a pointerekbe keveredtem bele, és el is hajítottam a C könyvet. Szerencsére a C++ -ban már kevesebbet kell használni. Igyekszem is - ha csak egy mód van rá - elkerülni a pointereket. Mivel pointer = tömb, így van is rá lehetőség. A tömb neve a pointer, a tömb[index] pedig a pointer + index. Ahogy a pointernek bármilyen - értelmes - értéket adhatunk, ugyanúgy a tömböt is rádefiniálhatjuk bármire, pl. akár a processzor perifériáinak hardver memóriájára is, akár többféleképp is, hogy ha úgy tartja úri kedvem, akkor uint8_t - ként, vagy uint32_t -ként érem el. Ugyanez megoldható a struktúrával is, az is bárhova definiálható a memóriában, bármilyen más néven használt mezőre is.
Sokkal kisebb a hibalehetőség, mint pointerezni. Mindamellett arra se kell vigyázni, hogy a new által létrehozott felszabadításra kerüljön, mert másként, idővel baj lesz. (Bár ezt már az okospointerek tudják, hogy felszabadítják.) -
Annyira nem értem a pointereket, hogy három nap után esett le, hogy mi van a képen.
Mentségemre szolgáljon, hogy elsőre azt hittem, hogy értem, mert más jelentést tulajdonítottam neki.Egyébként valószínűleg az lehet a gond, hogy egy olyan könyvből tanultam (teljesen autodidakta vagyok), ami valahogy rossz nyelvezettel írta le, ami rosszul rögzült, aztán évekig nem használtam, és végül nemrég olvastam egy jó leírást róla, ami végre talán tisztába tette a fejemben a dolgokat.
-
DigitXT
félisten
válasz
lanszelot #19855 üzenetére
A többszálúság az a kivétel.
Azt arra mondtam, hogy olyankor "kicsit"
bonyolultabb tervezni a programot. Amúgy, ha szigorúan nézzük, nem
soronként fut a program, hiszen a fordító előre lefordítja gépi kódba.
A leírt szöveg absztrakció...Szkipt nyelvek tudnak soronként futtatni
programokat. (Ott simán lehet, hogy teljesen szar sor marad a kódban,
mégis hibátlanul fut, amíg oda nem ugrik... És akkor elszáll hibával...)
Ilyen szempontból az Arduino által futtatott C sokkal jobb, mivel már a
fordítás közben kiderülnek a szintaktikai hibák + típusosak a változók...
(Mondjuk egy AWK ezzel szemben sokkal rugalmasabb, könnyebb vele
pl. szövegeket feldolgozni, ad hoc jelleggel, rövid programokat írni. Ám
ha elírsz valamit simán megeszi: csak futás közben jön ki, hogy bugos.)Az Arduino Uno/Mega mint egymagos architektúra, egyszerre egyetlen
dolgot csinál, de azt relatíve gyorsan, így tudod kihasználni, hogy kvázi
egyidejűleg látszólag több dolgot csináljon, hogy "pörgeted" a loop-ot.Na most a delay az ezt hazavágja! Szóval nagyobb projekteknél, amikor
több bemenetet kell figyelni, vagy pl. szoftveres soros portot használsz,
nem fér bele, hogy álldogáljunk másodperceket, mert elveszik az adat...
És ilyenkor jön az, hogy megszakítás: az észreveszi... Illetve a hardveres
UART (ami szintén megszakításokkal működik), nagy sebességnél jobb!
Viszont felesleges megszakításokra építeni a programot, ha bőven elég
az is, hogy pörög a loop... A millis() figyelése jobb. Lásd órádra pillantás.Szerk: oké, a SoftwareSerial is megkerüli a delayt megszakításokkal, de
vannak limitációi. Én most pl. Nextion kijelzővel kommunikálok 115200
baud sebességgel (RX1), anno ez mintha nem akart volna összejönni...
Szerk: emellett egy másik porton olvasom a kijelzendő adatokat, stb. -
válasz
Harcipocok84 #19854 üzenetére
Sokkal könnyebb lenne, ha elmondanád a feladatot, amit szeretnél megoldani, mert most a gombhoz keressük a kabátot.
A hardveres UART nem igényel processzoridőt magához a kommunikációhoz, robusztusabb, de már egy 8MHz proci is elég gyors ahhoz, hogy gyakorlatilag semmit ne vegyél észre belőle. Persze vannak határai, ha jól tudom talán 57600baud fölött már nem ajánlják, de ha mondjuk 9600b/s sebességgel szeretnél valamivel kommunikálni, akkor teljesen jó. Ellenben problémát jelenthet, ha megszakításokat szeretnél használni. -
válasz
lanszelot #19855 üzenetére
Na most gondolod rosszul, nem tud több szálon futni (kivétel mondjuk az esp32 ahol két mag van), ezt miből vontad le?
A program futása soronként történik, kivéve ha megszakítást használsz (de valójában ott is soronként fut a kód).
Ami téged félrevezetett, hogy a megoldás, amit adtam neked, egy modern oprendszer időosztásos módszeréhez hasonlóan látszólag egy időben, de valójában felváltva csinál több dolgot. -
lanszelot
addikt
válasz
DigitXT #19849 üzenetére
Nagyon szépen köszönöm a választ mindenkinek.
Mint írtam a kérdés nem a programra irányult.
Tehát, ha jól értem, a program futása nem soronként történik, hanem több szálon, tehát akár több sor is tud futni egy időben. És itt van amit rosszul gondoltam. Mert ezt sehol se írták le./ahol én néztem: c++ alapok, arduino alapok/ -
válasz
Harcipocok84 #19851 üzenetére
Szia! Nem írtad, hogy mekkora sebességre/RAM méretre van szükséged, de a leírt kritériumoknak egy attiny85 is bőven megfelel. 8 lába van, könnyű beépíteni, illetve van belőle olyan modul is, amit USB-n keresztül is lehet programozni (Digispark), itt csak 3 lábat tudsz szabadon használni, cserébe a cucc képes usb eszközöket (mouse, keyboard, midi) emulálni.
5 szabadon felhasználható lába van, 3 analóg, 2 PWM lába van, ICSP (SPI) keresztül lehet programozni, hardveres UART ha jól tudom nincs benne, de szoftveresen megoldható, illetve szoftverből tudsz half-duplex UART-ot is csinálni, tehát 5 lábon 1 pwm, 1 analóg, egy teljes értékű és egy half-duplex UART elfér. -
ReFleXx
addikt
válasz
Harcipocok84 #19851 üzenetére
ha eleg egy uart akkor ott a jol bevalt arduino uno ha tobb is kell akkor pl arduino mega, stm32 bluepill vagy esp32
-
Harcipocok84
tag
Sziasztok!
Egy projethez kellene egy könnyen beszerezhető és olcsó mikrovezérlő chip. Mindenképpen ATMEL Chip kellene, amit Arduino IDE-vel programozható.
Mivel az SMD forrasztás számomra nem megoldható, így mindenképpen SPDIP szerű tokozás kellene, ezeket egyszerű otthon megforrasztani. Milyen chipet ajánlanátok az alábbi feladatra:
1 db PWM digitális láb
1 db analóg láb
2 db UART port (Ha nagyon necces, akkor elég lehet 1 db UART port is)
További kérdésem, hogy ezeknek a chipeknek ugyan úgy van ICSP kivezetése amin keresztül tudom AVRDude-al programozni? Mi kell még hozzá hogy működjön? Egy fesztabilizátor és egy kristály? -
válasz
lanszelot #19848 üzenetére
A kolléga már szépen elmagyarázta (
neki ), én csak a beszúrás részéhez szólnék hozzá:
A hozzászólás írásakor a szövegmező fölött van egy "Váltás a régi szerkesztőre" link. Ez azt csinálja, amit ígér.
Ezzel hibátlanul lehet kódot beszúrni:#include <Adafruit_SSD1306.h>
#include <splash.h>
uint32_t lastms = 0;
bool blink = true;
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
void setup() {
Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x32
display.display();
delay(2000);
}
void loop() {
int sensorValue = analogRead(A0);
int isgas = digitalRead(2);
String gas;
//delay(1000);
display.clearDisplay(); //this line to clear previous logo
display.setTextSize(2); /*text size 3*/
display.setCursor(3, 0); // ez tartja egy helyben a szöveget
display.setTextColor(WHITE); //without this no display
display.print("Gasmeter");
display.setTextSize(1); /*text size 2*/
display.setCursor(0, 50); // ez tartja egy helyben a szöveget
display.setTextColor(WHITE); //without this no display
display.print("CO2 = ");
display.print(sensorValue);
display.print(" PPM ");
if (sensorValue < 90) {
gas = "No Gas";
}else {
gas = " Gas";
if (millis() - lastms > 4000) {
lastms = millis();
blink = !blink;
}
if (blink)
display.drawRoundRect(80, 47, 40, 15, 2, WHITE);
else
display.drawRoundRect(80, 47, 40, 15, 2, BLACK);
}
display.print(gas);
display.display(); //to shows or update your TEXT
}Ez javított kód, minden loop ciklusban kirajzolja a keretet, csak a színét változtatja 4000ms-onként (ez szerintem sok, én 500-at állítanék be).
Ez a két sor a rendszeres törlés miatt valószínűleg nem is kell:
else
display.drawRoundRect(80, 47, 40, 15, 2, BLACK); -
DigitXT
félisten
válasz
lanszelot #19848 üzenetére
Most, hogy bemásoltad a kódot, lehet érdemben beszélgetni róla.
Szóval Arduinonál úgy működik, hogy először lefut a setup, aztán meg
átmegy a loop-ba, s az végtelenül ismétlődik. Esetedben ugye a setup
egyrészt inicializálja a kijelzőt, másrészt (meglepetés!) elindítja a soros
portot is, 9600 baud beállítással. Ez azért jó, mert a Serial Monitoron a
program futását tudod monitorozni és tudod debuggolni, ha vmi "gázos".A delay használata egyszerű programoknál rendben van, vagy ha vmire
kifejezetten várni kell, hogy megtörténjen. Ellenben, egy olyan program,
ami folyamatosan (kellene hogy!) nézzen egy bemenetet megakad tőle:
tehát az a delay(1000) az elején feleslegesen vár egy másodpercet. És
amit utána kiértékelsz, az NEM az aktuális mért érték! Hanem még az
egy másodperccel korábbi: nyilván "tanulós" programban ez is elmegy,
amennyiben az ember tisztában van vele. De ha nem, kigyomlálandó...
Erre jött a jótanács a millis() használatról, hiszen az egy mindenkoron
növekvő számláló, a bekapcsolástól kezdve, ezredmásodpercben.
(Tehát, anélkül tudsz mondjuk ~1 másodpercenként csinálni "akármit",
hogy az MCU kifejezetten addig az 1 másodpercig ne csinálna mást...)A koncepcionális különbség pedig annyi, hogy nem megállsz és vársz,
hogy elteljen egy adott időszak (közben nem csinálsz semmit), hanem
szépen csinálod a dolgod, csak időről időre az órádra pillantasz, és ha
azt látod, hogy eltelt már az adott (várakozási) idő, akkor csinálod meg
az időzített/ütemezett feladatot. (Így több dolgot is kényelmesen tudsz
más-más időközönként végrehajtani.) Első körben szerintem ennyi...pont ezért nem szúrtam be, mert lehetetlen ide berakni
Nekem nem úgy néz ki, mintha lehetetlen lenne, ha egyszer sikerült... -
lanszelot
addikt
válasz
DigitXT #19845 üzenetére
Először is köszönöm szépen a választ.
Mint írtam, már #19815 óta nem a programról van szó, hanem csak általános programozási kérdéseket tettem fel.
Valószínű nem jól fogalmazok, ezért elnézést kérek.Itt az a program az érzékelőhöz aminél a négyzet nem működött. /de nem erről kérdeztem/
#include <Adafruit_SSD1306.h>
#include <splash.h>
uint32_t lastms= 0;
bool blink = true;
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
void setup() {
Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x32
display.display();
delay(2000);
}
void loop() {
int sensorValue = analogRead(A0);
int isgas = digitalRead(2);
String gas;
delay(1000);
display.clearDisplay(); //this line to clear previous logo
display.setTextSize(2); /*text size 3*/
display.setCursor(3,0); // ez tartja egy helyben a szöveget
display.setTextColor(WHITE); //without this no display
display.print("Gasmeter");
display.setTextSize(1); /*text size 2*/
display.setCursor(0,50); // ez tartja egy helyben a szöveget
display.setTextColor(WHITE); //without this no display
display.print("CO2 = ");
display.print(sensorValue);
display.print(" PPM ");
if (sensorValue < 90) {
gas = "No Gas";
}else{
gas = " Gas";
if (millis() - lastms > 4000) {
lastms = millis();
if (blink)
display.drawRoundRect(80, 47, 40, 15, 2, WHITE);
else
display.drawRoundRect(80, 47, 40, 15, 2, BLACK);
blink = !blink;
}
}
display.print(gas);
display.display(); //to shows or update your TEXT
}
pont ezért nem szúrtam be, mert lehetetlen ide berakni
Mint láthatod, nincs benne semmi az "if" -en kívül -
DigitXT
félisten
válasz
lanszelot #19842 üzenetére
Az a program amit bemásoltam az annyi.
Nem, nem annyi, mert csak egy részét másoltad be, a többiről meg vagy írtál,
vagy nem. Így nem lehet érdemben segíteni, hogy félinformációkat közölsz.Nincs vizsgálat.
Mert a sensorValue < 90 az szerinted mi, ha nem egy feltétel vizsgálata?mit tanulnék, ha megírt programokat töltögetnék fel a leírás szerint?
Nagyon sokat: megnézed mit csinál, lépésről-lépésre megpróbálod megérteni.Nincs program. Csak kezdő vagyok. A legelején tartok.
Attól még amit megírtál, és feltöltöttél egy program. Arduino esetén van neki
egy setup része, meg egy loop. Te a loop-ot sem osztottad meg velünk...Mondok egy vicceset. Annak idején egy programozási versenyen sajnos már
nem maradt időm az egyik feladatra egyáltalán, de mivel volt példa, hogy mit
kérdezhetnek a programtól tesztként, annyit írtam, hogy azt választ írja ki.Még csak if sem volt benne, egyszerűen ilyen jellegű megoldás volt: print(42)
Ha és amennyiben a teszt kérdésre jó volt a válasz, érhetett egy pontocskát.Azt mindenkire rábízom, hogy mi volt a kérdés...
-
tibi-d
tag
Adott egy fűtőberendezés. A teljesítmény szabályozása PWM jellel történik. A teljesítmény fokozatnak van egy engedélyező bemenete is. Ha az engedély "H" akkor a PWM vezérli a teljesítményt. Ha "L" a PWM csinálhat akármit, a teljesítmény "0". Ezt egy Arduino vezérli. A probléma akkor keletkezhet, ha mondjuk az Arduino "lefagy", tönkre megy, és az engedélyező bemenet és a PWM jel is "H"-ban ragad. Ekkor a fűtőberendezés kontrollálatlanul elfűtheti magát, és akár tüzet is okozhat. Ennek a lehetőségét is el kéne kerülni. Arra gondoltam, hogy az engedélyező jelet nem közvetlenül az Arduino vezérelné, hanem egy védelmi áramkör közbeiktatásával, ami érzékelné, ha az Arduino lefagyna, vagy meghibásodna. Arra gondoltam, hogy az engedélyező jelet ciklusonként kapcsolgatnám ki-be, így kapnék egy szaggatott jelet. Ezt egy kondival leválasztva, egyenirányítva vezérelnék egy tranzisztor, vagy fetet és ez engedélyezné a teljesítmény fokozatot. Ha a jelváltozás megszűnik, az engedély egy idő múlva megszűnne, és leáll a fűtés. Az elképzelés életképességére lennék kiváncsi, vagy, ha van egyszerűbb megoldás, azt is szívesen fogadom.
-
lanszelot
addikt
De milyen programot látok?
Bármelyik program futásáról kérdeztem.
Hogyan fut le egy program?
Ez volt a kérdés.
Írtam hogy hogyan gondolom.
Azt is valószínű hibásan.DigitXT:
Az a program amit bemásoltam az annyi.
Nincs" ==" nincs semmi. Nincs vizsgálat.
Tanulok, és par soros programokat próbálok írni.
Vettem egy készletet, van benne minden.
Kiveszek valamit a készletből és megpróbálom működésre bírni.
Van hozzá program a dvd-n, de azzal mit tanulnék, ha megírt programokat töltögetnék fel a leírás szerint?Az előbb kivettem egy gáz érzékelőt:
Érzékelő egy adatot küld.
Ezt kiiratom, és ennyi.
Semmit se csinálok vele, nincs semmi más.
Oled programja ott van a linkben, gáz érzékelő pedig x pin -rol bejön.
A gaz érzékelőnek még library se kell.
Semmi sincs a programban.
If-et azért raktam be hogy gyakoroljam az 'if' et.
Ennyi. Nincs hova rakni a serial print -et, mert van az 'if' és nincs más.
Nincs program. Csak kezdő vagyok. A legelején tartok.
De azt a programot már megoldották.
2 megoldás is jött.
Utána irtam, hogy nem értem az egyiket.
Majd azt hittem jól gondolom a program futásának menetét az arduino -n, és emiatt rosszul értelmeztem a programot.
Rájöttem hogy rosszul értelmezem.
Leírtam hogy képzelem el a program futását.
De oda írtam valószínű rosszul kepzelem.
Ezért kérdeztem, hogyan fut le egy program?
Most már az egymagos két magost sem értem.
Valószínű mivel az alap futást sem tudom. -
-
DigitXT
félisten
válasz
lanszelot #19836 üzenetére
Nagy vonalakban úgy, ahogy írod, egymagos processzoron: pont erre céloztam,
hogy azért a megszakítás ennek keresztbe tud verni rendesen, illetve többszálú
programnál egyéb problémák is felmerülnek a párhuzamosítással kapcsolatban.
(Márpedig egy ESP32 pl. kétmagos, szóval nem teljesen elrugaszkodott dolog.)Az a baj, hogy feltételezed, hogy adott programrészbe került és ott volt a baj a
delay funkcióval, pedig ez a legkevésbé valószínű.Sokkal valószínűbb, hogy
a kód nem is ott tartott. Ilyenkor hasznos beszúrni egy pár Serial.print(akármi)
hívást a kritikus részekre, és nézni a Serial Monitor-on, hogy mit írtál el...Nagyon könnyű elgépelni valamit, s ha megeszi a fordító, akkor sz.rul fog futni:
az egyik ilyen legtriviálisabb (kezdő*) hiba valami értékének a téves vizsgálata,
nevezetesen ha véletlenül nem az "==" operátort használod, hanem az "="-t...
Simán lefordul, simán fut, csak nem azt csinálja, amit gondoltál, hanem amivel
hasonlítanád, azt adja értéknek, majd értékeli, hogy 0 vagy 1* az eredmény.*: de nem csak kezdők követhetik el, hiszen lehet elgépelés is, emiatt néhány
fejlesztői környezet direkt nézi az ilyet, warningot dob rá, hogy ezt akartad-e...*: pontosabban "nem nulla", nehogy valaki belekössön... Egy gyors példa erre:
if (sensorValue = 90) { valami } else { egyéb } Ennél nem csak az a baj, hogy
az "egyéb" soha nem fog lefutni, hanem az is, hogy a sensorValue utána végig
90 lesz, egészen amíg újra be nem olvastad... (És ez egyetlen pici elgépelés.) -
DigitXT
félisten
válasz
lanszelot #19834 üzenetére
Nincs ezzel baj, senki nem úgy kezdte, hogy mindent tud, bár bizonyára
könnyebb úgy az élet, hogy az ember legalább nagy vonalakban ismeri a
koncepciót. Viszont úgy segíteni, hogy nem írod meg, pontosan miben...De örülünk, hogy megoldódott. Ha lenne bármi kérdés, biztos tudunk vmi
segítséggel szolgálni, csak ilyenkor látni kellene, miben kell segíteni...Ui: ha már mindent megértettél, akkor rátérhetünk a megszakításokra.
(Vagy nekem még nagy kedvenceim a mutatók, és a type casting, LOL.)Sőt, egy időben a bitshifting is valami fekete mágiának tűnt. Pont csak a
minap vetettem bele magam, és tök könnyű vele dolgozni... Ez van.
Ez a belevetés erős túlzás, de maga a koncepció ott is tök egyszerű, és
ha érted a szintaxist, akkor teljesen triviális a megfogalmazás...
De ha egyik sincs meg, akkor tényleg csak néz az ember, hogy EZ MI?! -
-
Janos250
őstag
válasz
Janos250 #19828 üzenetére
Nem tudom, mennyire érthető, mert a sajátot az emberfia nem tudja megítélni, de itt
https://prohardver.hu/tema/arduino/hsz_19675-19675.html
próbáltam írni egy demót.
Más, persze, de van egy input. Igaz, hogy az is range, de input<input type="range"
.
.
.
onchange="servernekElkuld('F',this.value)"
>
servernekElkuld= function(keszulekKod,mitKuldErtek) {
var futesXML = new XMLHttpRequest();
futesXML.open("GET", keszulekKod+"="+mitKuldErtek, true);
futesXML.send();
}
Ezzel valami ilyesmi érkezik meg
GET F=26 ...... -
DigitXT
félisten
válasz
lanszelot #19829 üzenetére
A 200 ms delay nagyon rövid, ha normálisan működne, akkor se villogás, inkább vibrálás lenne az, amit látsz. Amúgy azért nem szerencsés a delay, mert addig nem csinál semmi az MCU, tehát pl. nem mintavételezi az analóg bemeneteket, így ugyanennyivel később fogod észrevenni, ha változott. (Nyilván 0.2 mp nem a világ, de ha felrakod mondjuk 0.5-re, akkor már látható, és felesleges késleltetés a program érdemi működésében, egy minimalista animáció/keret villogtatás miatt.
)
Valami alap dologban szerintem el vagyok tájolódva.
Másold be a teljes kódot, kérlek! -
lanszelot
addikt
feketét fehéret felcserélve is fekete van hosszan, tehát törli a kijelzőt az a gond.
Nincs bug.Valami alap dologban szerintem el vagyok tájolódva.
Nem úgy működik a program, hogy egy sor lefut, majd csak utána a következő, es csak utána a következő..stb fentről le.... ballról jobbra?
Kivéve function, mert ott oda ugratjuk, és végeztével vissza ugrik.Tehát bemegy "if"-be ott tru/false utat követ.
Bent "if" -ben, ha van delay , akkor addig ami meg van ott adva megáll és csak a késleltetési idő leteltével folytatja?
Ha igen, akkor hogy lehet, hogy folyik a delay, és a loop elejére ugrik?
Ha nem, akkor hogy működik?#19817 erre a linkre utaltam
-
Janos250
őstag
válasz
Tomika86 #19820 üzenetére
Nem ástam bele magam az ESPAsyncWebserver rejtelmeibe, nem is tervezem, mert én szeretem "gyalog" megoldani a dolgokat.
Ennek ellenére - mivel a kíbicnek semmi sem drága - azért leírom, hogyan próbálnám
Én így próbálnám meg:t.open("GET","/nextion_update",true)
t.send()
vagy:t.open("GET","/nextion_update="+e.target.result,true)
t.send()
bár annyira nem bogarásztam végig, mi az a e.target.result, gondolom valami érték, amit küldeni akarsz. -
DigitXT
félisten
Egyébként teljesen felesleges az egész képernyőt törölni, csak villogni fog.
De amúgy igaz, hogy így részleteiben beszélgetni egy baromi egyszerű, kicsi
kódsorról, nem fog megoldást hozni, ha a teljes program máshol van elszúrva.
(És itt nem bántásból írom, hogy elszúrva. Én is elkövettem "koncepcionális"
hibát, még a minap is, pedig már programozgattam Arduinora is, és mégis...)Kérjük a teljes kódot, és megköpködjük...
Helyesen: segítünk debuggolni!
-
válasz
lanszelot #19823 üzenetére
Ha törölné a fekete tovább lenne.
v.s.
Kijelzőt a loop elején törli.Ha a loop végén rajzolsz valamit a kijelzőre, amit a loop elején azonnal törölsz, akkor miért csodálkozol, hogy csak egy pillanatig látszik?
Továbbra sem értem ezt a "fekete keret látszik, a fehér nem" helyzetet, mikor monochrome a kijelző, fekete alapon te hogy látod a fekete keretet?
A megosztott oled linkemben is ott van.
Én nem láttam, hogy bármikor linkelted volna a teljes programot.
Szóval ha minden loop ciklus elején törlöd a kijelzőt, akkor mindent újra kell rajzolni, a keretet is, sőt, ez esetben nem is kell fekete keret, hiszen a ciklus elején a fehér keret törlésre kerül... Jó, hogy úgy kell kibarkóbázni belőled a részleteket.
-
lanszelot
addikt
Nem tűnik el. Van fehér keret. Csak rövid ideig.
Ha törölné a fekete tovább lenne.
display.drawRoundRect -> ez újra rajzolja és ott van a fehér és fekete előtt is.
Nem értem mi az hogy nem rajzolja minden ciklusban.
Kijelzőt a loop elején törli. A megosztott oled linkemben is ott van.
Majd ha este haza érek megnézem, ha felcserélem akkor a fehér lesz e hosszabb ideig , vagy akkor is a fekete.Mielőtt kötekedésnek venné bárki, nagyon kezdő vagyok, és próbálom megérteni. Ezért azt írom le amit látok. Lehet rosszul írom. Csak megérteni szeretném.
-
válasz
lanszelot #19819 üzenetére
Miután nem láttuk az egész programot, nem is lehet így megmondani, hogy okozza a "bugot". Amit írtam, logikailag nem hibás, valószínűleg a te programod törli a kijelzőt ezért a fehér keret eltűnik kirajzolás után. A másik megoldás azért "nem bugos", mert az minden ciklusban rajzol.
-
Tomika86
senior tag
Sziasztok!
Kettő részből áll a kérdésem:
- Tud valaki jó tutorial-, vagy leírást, hogy a weboldalon lévő javascript kód hogy adja át az adatokat az esp32-nek. ESPAsyncWebservert-t használok, ebbe hogy jönnek át az adatok.
- Ki van aki beleásta magát az ESPAsyncWebserver könyvtár rejtelmeibe?
Egy WebServer könyvtárral íródott programot szeretnék átalakítani async könyvtárra, de nem akar menni.Példaként, itt egy html kód:
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript'>
var file,cmp,partSize=100,offset=0;
function upload(){
file=document.querySelector('input[name=file]').files[0],
partSize=parseInt(document.querySelector('input[name=partSize]').value),
cmp=document.getElementById('completed'),
file?sendInfo(file.size):alert('Choose firmware file.')
}
function sendDataHandler(e){
if(null==e.target.error){
cmp.innerText=(100*offset/file.size).toFixed(1)+'%',
offset+=e.target.result.byteLength;
var t=new XMLHttpRequest;
t.onreadystatechange=function(){
4 == t.readyState && 200 == t.status && (offset<file.size?sendData():cmp.innerText='All data was sent')
},
t.open('post','/nextion_update'),
t.send(e.target.result)
}
else alert('Error: '+e.target.error)
}
function sendData(){
var e=new FileReader,
t=file.slice(offset,partSize+offset);
e.onload=sendDataHandler,
e.readAsArrayBuffer(t)
}
function sendInfo(e){
var t=new XMLHttpRequest;
t.onreadystatechange=function(){
4==t.readyState&&200==t.status&&sendData()
},
t.open('post','/nextion_fs'),
t.send(e)
}
</script>
</head>
<body>
<input type='file' name='file'/>
<input type='button' value='upload' onclick='upload()'/> <br/>
<label id='completed'></label>
<br/> Chunk size: <input type='text' name='partSize' value='1024' size='4'/>
</body>
</html>
Ebben történik adatküldés esp felé, és ESP programban megérkezik, de hogyan?// Receive file size
server.on("/nextion_fs", HTTP_POST, [](AsyncWebServerRequest * request){},
NULL,
[](AsyncWebServerRequest * request, uint8_t *data, size_t len, size_t index, size_t total) {
uint32_t fsize = atoi((const char*)data);
Serial.println("Nextion prepare message: " + String(nextion.prepareUpload(fsize)));
Serial.println("File size: " + String(fsize) + "bytes");
// Filesize and connection test
if(nextion.prepareUpload(fsize)) {
Serial.println("Start upload. File size is: " + String(fsize) + "bytes");
request->send(200);
}
else {
Serial.print("Bad file size");
Serial.println(nextion.statusMessage + "\n");
request->send(500);
}
});Nem működik a kód egyébként
Köszönöm!
-
lanszelot
addikt
válasz
bagarol #19818 üzenetére
A tiéd azért jobb, mert jól működik.
A másik vmiért bug -os. Sztem a millis() function működése okozhatja.Igazából mivel a kijelző nem színes, így a fekete valójában kikapcsolja. Mivel pont ugyanazokat a pixeleket irom felül, ezért mind a 2 esetben ki be kapcsolgatom a pixeleket.
-
lanszelot
addikt
válasz
DigitXT #19816 üzenetére
Ez a kijelző.
Nem frissítési turpisság.
És nem írja felül semmi. Ha egymásra iratok vmit, mind a kettő ott van egymáson. Nem takarja ki.
Az érték folyamatosan változik.
A fehér a loop futtatási idejét tartja, a fekete a beírt értéket.
Pl 200 nál szinte egyformán váltanak, hisz 0.2s. 8000 nél pedig a fekete 8s míg a fehér ugyanannyi mint volt 200 nál. De írhatok be bármilyen számot.
Biztos hogy vmilyen bug, hogy páratlan futásokkor miért nullázódik. Valami a lastms alap ertéke miatt lesz. Csak én nagyon kezdő vagyok. Nem tudom miért. -
DigitXT
félisten
válasz
lanszelot #19815 üzenetére
Nem lehet, hogy valami LCD frissítési turpisság van mögötte? Vmi felülír valamit? Milyen kijelző? Szerintem a display.print(gas)-t sem kellene állandóan kitolni neki, csak ha változott az érték. Meglehet, hogy maga a felirat tünteti el a fehér keretet: ha így van, megpróbálkoznék kicsit nagyobbra venni, hogy kilátsszon mögüle.
-
lanszelot
addikt
Mindenkinek nagyon szépen köszönöm
(millis() - lastms > 200)
ezzel a villogás idejét szabályozom, ha jól értem
ha 200 helyett 4000 -et írok, akkor lassabban villog.
Fura megoldás, mert így csak a feketét késlelteti, tehát a fehér ugyanúgy rövid ideig vam.
Így meg olyan mintha nem villogna, ha pl 8000 -et írok.
Tudom, hogy kell átírni delay-el, csak értelmezni próbálom, hogy miért csak a fekete kapja meg a delay időt. Hiszen az mindenképpen lefut ha fehér ha fekete.
Nagyon kezdő vagyok programozásban
Agyalnom kellett mi micsoda.
uint32_t sem ismertem.
De legalább utána kellett járnom, és tanulhattam -
válasz
lanszelot #19811 üzenetére
uint32_t lastms= 0;
bool blink = true;
void loop() {
if (sensorValue < 90) {
gas = "No Gas";
}else{
gas = " Gas";
if (millis() - lastms > 200) {
lastms = millis();
if (blink)
display.drawRoundRect(80, 47, 40, 15, 2, WHITE);
else
display.drawRoundRect(80, 47, 40, 15, 2, BLACK);
blink = !blink;
}
}
} -
lanszelot
addikt
válasz
bagarol #19809 üzenetére
Hello,
A program az ennyi.
Ha a szenzor érték 90 alatt van akkor írja ki nincs gáz, ha felette akkor villogjon a négyszög
Utána még annyi van hogy azt is kiírja, hogy gáz, bele a négyszögbe
De az már az "if" -en kívül van, az nem szól beledisplay.print(gas);
Amit írtál az sehogy se jó: - "a" nincs létrehozva.
- így nincs értéke, se tipusa.
- ezért "if" -en belül nem igaz/hamis lesz "a", így "if" nem működik
- te ha létrehozom "a" -t akkor se müködik, mivel minden esetben ugyanaz az ág fog lefutni a loop miatt. Attól függ igaz vagy hamis "a" -t hozok létre.kérdéseim:
- Az enyém miért nem működik? loop indul, kirajzoja a fehér négyzetet, vár, kirajzolja a fekete négyzetet, vár, loop újra indul. vagy nem ezt írtam?
- "a^=1;" mi az a ficak, és mit csinál?
- -
lanszelot
addikt
válasz
lanszelot #19750 üzenetére
Hello,
Akkor ebben senki sem tud segíteni?
Nem lehet megoldani?Ez nem működik /loop ban van/:
if (sensorValue < 90) {gas = "No Gas";}
else {gas = " Gas";
display.drawRoundRect(80, 47, 40, 15, 2, WHITE);
delay(200);
display.drawRoundRect(80, 47, 40, 15, 2, BLACK);
delay(200);} -
gordonfreemN
addikt
válasz
bagarol #19806 üzenetére
kérdésem még az volna, hogy ha értem mi történik az már egy lépés előre?
Annak ellenére, hogy most pl. te írtad meg a kódot helyettem, azért ilyenekből is tanulok, vagy ezt teljesen más szinten kellene művelnem?Ezekre keresem a választ, hogy mit csinálnak:
1) IRrecv irrecv(RECV_PIN);
2) decode_results results;
3) irrecv.enableIRIn();
4) if (irrecv.decode(&results)) {
5) long int decCode = results.value;
6) irrecv.resume(); -
bagarol
tag
válasz
gordonfreemN #19805 üzenetére
-
bagarol
tag
válasz
gordonfreemN #19803 üzenetére
Pedig rá kéne futnia az utolsó if-re.
A break-re kilép a switch-ből. -
gordonfreemN
addikt
válasz
bagarol #19802 üzenetére
Ugyanaz. Miután lenyomtam a gombot, világít és úgy is marad gomb felengedésre is. Váltani persze vált a két led közt.
(#19791) vargalex: egy kérdés még a break-kel kapcsolatban: tehát ha befut egy case-be, akkor végrehajtja ami ott van, majd ha a végén ott figyel a break, akkor ez azt jelenti a loop innen indul ujra. Jól gondolom?
-
bagarol
tag
válasz
gordonfreemN #19801 üzenetére
Kicsit megkavart a waiting,de ennek jónak kell lenni:
#include <IRremote.h>
int RECV_PIN = 11;
int playPin = 8;
int pausePin = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
uint32_t lastms= 0;
void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // Start the receiver
pinMode(playPin, OUTPUT); // sets the digital pin as output
pinMode(pausePin, OUTPUT); // sets the digital pin as output
}
void loop() {
if (irrecv.decode(&results)) {
long int decCode = results.value;
Serial.println(decCode);
switch (results.value) {
case 6072407:
Serial.println("Play");
digitalWrite(playPin, HIGH); // sets the LED on
digitalWrite(pausePin, LOW);
lastms = millis();
break;
case 6066287:
Serial.println("Pause");
digitalWrite(pausePin, HIGH); // sets the LED on
digitalWrite(playPin, LOW);
lastms = millis();
break;
case -1:
lastms = millis();
break;
default:
Serial.println("Waiting ...");
}
irrecv.resume(); // Receive the next value
}
if (millis() - lastms > 150) {
lastms = millis();
digitalWrite(pausePin, LOW);
digitalWrite(playPin, LOW);
}
} -
gordonfreemN
addikt
válasz
gordonfreemN #19790 üzenetére
Ez jelenleg szintén azt teszi, hogy megnyomom: felvillan és marad akkor is ha elengedem a gombot.
(#19791) vargalex
A -1-es case esetén (eset esetén) ha betettem a break-et, akkor a case -1 és a hozzá tartozó break közti műveleteket sem hajtotta végre.
(#19792) vargalex
A soros log alapján Ayres kolléga megoldása jó kell, hogy legyen. A case -1 ágába a break-on kívül más nem kell. Akkor ez pipa, így is csináltam, de nem a kívánt (még nyomom addig világít) módon működött továbbra sem.
Viszont azt gyanítom, hogy kellene valami timeout is, mert amíg nyomod, addig jön a -1, igen ez így van
de ha elengeded, akkor nem fog jönni semmi igen, ez is így van
és nem is fut be a default ágba. pontosan ezt próbáltam meg lentebb kevesebb sikerrel megosztani
Vagy, ha nem nyomsz gombot, akkor az irrecv.decode-ban áll? Ott hogyan állhat, ezt honnan tudom? Az a baj, azt se tudom az irrecv.decode mit jelent vagyis mit csinál, számomra ismeretlen arduino parancs. Keresgéljek utánna? Vagy van kedved esetleg segíteni megérteni? A jelentése gondolom én az lenne, hogy IR receiver decode, azaz az IR vevő dekódolás, tehát a fogadott jel dekódolása, vagyis a fogadott, IR adó által küldött kódból különböző szűrőfázisokon és demoduláláson átesett jel
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! MSI SUPRIM X RTX 4080 16GB videokártya garanciával hibátlan működéssel
- BESZÁMÍTÁS! 6TB Seagate SkyHawk SATA HDD meghajtó garanciával hibátlan működéssel
- BESZÁMÍTÁS! 4TB Samsung 870 EVO SATA SSD meghajtó garanciával hibátlan működéssel
- BESZÁMÍTÁS! Intel Core i7 8700K 6 mag 12 szál processzor garanciával hibátlan működéssel
- BESZÁMÍTÁS! Intel Core i7 4790 4 mag 8 szál processzor garanciával hibátlan működéssel
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RTX 5070 12GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! Xiaomi Redmi Note 13, Xiaomi Redmi Note 13 Pro, Xiaomi Redmi Note 13 Pro+
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Bomba ár! Dell Latitude 5310 - i5-10GEN I 16GB I 256SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9700X 32/64GB RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged