Hirdetés
-
Robotkart irányított a majom a kínai Neuralink agyi chipjével
it A mindezt lehetővé tévő Neucybert a Neuralink kínai riválisa, a Beijing Xinzhida Neurotechnology fejlesztette ki.
-
VR játék lesz az Alien: Rogue Incursion
gp Az év végén érkező program PC-re, Meta Quest 3-ra és PlayStation VR2-re érkezik a tervek szerint.
-
Érkezőben a Poco M6 4G
ma 5G-s és 4G-s Pro modell már van, hamarosan lesz Poco M6 4G-s alapváltozat is.
-
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
-
Harcipocok84
junior 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? -
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
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
nagyúr
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.[ Szerkesztve ]
-
-
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/ -
nagyúr
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.[ Szerkesztve ]
-
nagyúr
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.[ Szerkesztve ]
-
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.[ Szerkesztve ]
-
nagyúr
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.
-
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.)[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
nagyúr
válasz Janos250 #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. -
nagyúr
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); -
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).
-
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. -
nagyúr
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.
[ Szerkesztve ]
-
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.
-
ReFleXx
addikt
-
nagyúr
-
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? -
nagyúr
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.
[ Szerkesztve ]
-
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.
Hold on, trying to give a fuck... Nope, not Happening • Powered by Fedora Linux • "Az élet olyan sz@r, szerencsére a felén már túl vagyok" Al Bundy
-
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.
-
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);
}
[ Szerkesztve ]
Alex
-
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 #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.Alex
-
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 ?[ Szerkesztve ]
Mindig meglep milyen sokan hiszik el, hogy van ingyen ebéd.
-
nagyúr
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! -
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
[ Szerkesztve ]
-
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.
[ Szerkesztve ]
Alex
-
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...Alex
-
Új hozzászólás Aktív témák
- Olympus M.ZUIKO DIGITAL 25mm f/1.8 objektív
- Xiaomi Redmi 9 64GB, Kártyafüggetlen, 1 Év Garanciával
- Dell Latitude E7450 Full i7-5600U, 16GB DDR3, 512GB SSD, FHD IPS, Nvidia, HUN Vil.Bill. Új
- Dell Latitude 7310 i7-10610U, 16GB DDR4, 512GB NVMe, FHD IPS Privacy, HUN Vil.Bill, NBD, Új Állapot
- Dell Latitude 7310 2in1 Alu i7-10810U, 16GB DDR4, 512GB NVMe, FHD IPS Touch, HUN Vil.Bill.