- Bemutatkozott a Poco X7 és X7 Pro
- Yettel topik
- Magyarított Android alkalmazások
- Hónap végén érkezik a Xiaomi Band 10, ára is van
- iPhone topik
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Google Pixel topik
- Milyen okostelefont vegyek?
- Fotók, videók mobillal
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
-
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
-
Janos250
őstag
Aztán, persze nem igazán sikerült megértenem a lelki világát, hogy pl.
union x {
uint8_t a;
uint8_t b;
} y ;
Ebben mi a különbség az x és az y között?
Rendben, hogy x a típus, y meg a változó neve, de azért nem sikerült teljes mélységében magamévá tenni. Például a korábbi mintapéldában.
Bonyolultabb esetben (többszörös beágyazások), ha valami hiba van, és az y helyén nincs semmi, akkor hibajelzésként a unionra nem "unnamed union", hanem "unnamed struct" hivatkozik.
Ezek szerint, a union számára egy struct, csak az elemeit egymásra címzi?
Meg lehet azt adni, hogy egy sima struct elemei ugyanazt a memóriaterületet használják, azaz a fenti példában ha az uint8_t b helyére megfelelőt írok, akkor közösen használják?Mert rendben van, hogy tömbnél ezt hasznáhatom, hogy megadom a címet, pl:
volatile uint32_t* SHA_TEXT_0_REG_array_32 =
((uint32_t *)(0x3FF03000));
És akkor érvényes, értelmes pl. az:SHA_TEXT_0_REG_array_32[i] = 0;
(mert ezt épp most írtam, és jó)
viszont, ha nem tömb, hanem egyszerű változó, akkor is meg tudom adni, hogy egy konkrét címre, vagy egy mások változó "tetejére" rakja?
Structnál is megy, de egyszerű változónál hogyan? -
Janos250
őstag
Hogyan lehet használni C++ -ban a unionban benne lévő másik uniont?
Erre a programrészre:union dataFrame1 {
uint8_t bytes6[6];
union x {
uint8_t code[5];
uint8_t code2;
};
} ;
dataFrame1 proba1 ;
proba1.x.code2 = 1 ;
A következő a hibajelzés:
invalid use of 'union setup()::dataFrame1::x'
Tudom, meg lehet kerülni, de én így szeretném megoldani, hogy egymásba ágyazott unionokkal.
Miért nem jó így?
Hogyan kell?Közben meglett: a union nevet a végére kell tenni :-(
-
Janos250
őstag
válasz
5150head #22236 üzenetére
Amit linkeltél, az is jó. Az az egyszerűbb olcsóbb léptetőmotor vezérlő is jól használható. Gyakorlatilag egyformák ezek. Megvan, mit kell a tekercsekhez kötni, van irányt megadó bemenete, és "lépj egyet" bemenete. Van pár pinjük, amivel be tudod fixen, drótozni, hogy milyen legyen a microstep, ha akarod (microstep, amikor nem egész lépést tesz, hanem valahol közte megáll)
A többi szoftver kérdése. Meg kell csinálnod egy szabályt, algoritmust, hogy milyen időközönként léptessen. Olyankor ad egy "lépj egyet" jelet. Ennyi. Az ESP32 annyival jobb, mint az UNO, hogy korszerűbb, hosszabb távon is jó. Ami program az UNO-n megy, annak általában az összes többin (pl. ESP32-n is) kell mennie, hiszen az is Arduino.
ESP32-nek még előnye, hogy van benne WiFi, így később ha kedved szottyan, tehetsz rá WEB szervert, és telefonon keresztül állíthatod a paramétereket. -
Janos250
őstag
válasz
JulianSinulf #22235 üzenetére
" ez sem a TMC2209-et mutatja"
Nem, persze, de az elve ugyanaz. Mert akkor még valószínűleg nem volt divat a TMC2209.
A TMC2209 kétségkívül jó, tavaly én is azt vettem, mert "a következő ötéves tervben" szerepel egy ESP32-vel megépített, panel, ami tartalmaz léptetőmotor meghajtókat, érzékelő kapcsolókat, FET-es "nagy áramú" kimenetet, SD kártya olvasót, stb.
(vagyis, ami egy CNC-hez kell) -
Janos250
őstag
válasz
JulianSinulf #22232 üzenetére
Attól függ, mit akarsz. Azt hiszem nem meglepő, hogy én nem az ezeréves UNO-val hanem nagyjából ugyanannyiba kerülő, vagy olcsóbb, de jóval korszerűbb, hosszabb távon is megfelelő ESP32-vel csinálnám. Lehet hozzá kapni kicsi panelt, amivel lehet csatlakozni.
https://vi.aliexpress.com/item/1005005677080016.html
Én is vettem ilyet, de nem használom, mert korábban készíttettem JLCPCB-n eléggé univerzális 100x100 mm-es ESP32 panelt, aminek lefelejtettem egy vezetékét, ezért a túloldalán van egy vezeték, így már snassz megmutatni valakinek, kidobásra lettek szánva, de tökölődésre megteszi, így ezeket használom, sajnálom kidobni.
Van konkrét példa is ESP32 és léptetőmotor hajtására, pl.:
https://www.youtube.com/watch?v=JQGnLW6SB8M
A TMC2209 jó, korszerű, hosszabb távon is lehet rá számítani, de drágább, mint az egyszerűbbek, mint például az általánosan használt A4988.
Vannak persze mindenféle kész shieldek is, de én nem olyat használnék, de ízlés dolga. -
Janos250
őstag
válasz
ViZion #22186 üzenetére
Én ilyet:
https://vi.aliexpress.com/item/1005004709162265.html
PCB-be forrasztom az anyát, általában a derékszögűt a PCB szélére, apát meg csavarral rögzítem.
Nekem bevált. Pl. 48V 5A -
Janos250
őstag
válasz
JulianSinulf #22095 üzenetére
Erre nekem egy reklámoldal jön be!
-
Janos250
őstag
válasz
JulianSinulf #22078 üzenetére
"Nem mindegy, hogy a valóság ez"
Srácok!
Ezért szoktam mondani, hogy ha mi valamit másként tudunk, nem biztos, hogy a legjobb válasz azt írni, hogy az nem igaz, javasolom helyette inkább az "én úgy tudom", vagy hasonlókat.
Mert attól, hogy mi az egyik aspektust tudjuk, még létezhet más is.
Igen, a földi körülmények közötti forrasztásnál könnyebb bánni az ón/ólom ötvözettel, mert - mint általában az ötvözeteknek - alacsonyabb lesz az olvadáspontja, és más tulajdonságai is változhatnak.
Viszont az ónpestis, ismert jelenség: hidegben az ón egy másik módosulatba (kristályszerkezetbe) megy át, elporlad.
Azt én nem tudom, hogy a pici műholdat először tiszta ónnal (abban is van logika) forrasztották-e, de ha igen, akkor másodszorra már biztosan ötvözettel. Mellesleg nem is annyira alacsony az az átalakulási hőmérséklet, ha jól emlékszem (rég tanultam) valahol 10 és 20 fok között van. Ott még ugyan nagyon alacsony sebességgel, de a hőmérséklet csökkenésével begyorsul, és a folyamat autokatalitikus (önmagát katalizálja)
Azon lehetne vitatkozni, hogy melyik szempont a fontosabb, DE MINEK?
Ha adott dolgot több szempontból is lehet vizsgálni, akkor tegyük be a közösbe azt, amit mi tudunk róla, más meg majd beteszi, amit ő tud. Így leszünk mindannyian okosabbak! -
Janos250
őstag
válasz
mindenes24 #22073 üzenetére
Én már csak minimálisat forrasztok.
easyeda.com
Megszerkesztem, és legyártatom, kb 2 hét múlva itt van.
Utoljára 100*100 mm-es panelokat rendeltem, 5 db. volt 5 dollár.
Szinte hihetetlen ár.
Fog ám a fene forrasztani ennyi pénzért!
Persze az alkatrészeket ebbe is bele kell forrasztani, de az egészen más ügy, mint a vezetékezést is forrasztani. -
Janos250
őstag
válasz
its_grandpa #22047 üzenetére
"Emlékeim szerint a deep sleep-et tesztelgetted"
Az nem én voltam! -
Janos250
őstag
válasz
its_grandpa #22035 üzenetére
Mit teszteljek rajta? Soha nem használtam az RTC-jét.
-
Janos250
őstag
válasz
JulianSinulf #22038 üzenetére
Annak az okoskonnektor szétszedésének megvan a technikája!
Ha megnézed, arról a végéről, ahová Te dugod a villásdugót, ott van körben egy - talán - 3 mm-es perem, és látszik hogy az ott csatlakozás.
Az van beleragasztva. Ha azt megfogod valami nagy fogóval, satuval bármivel, ami átéri az egész szerkezetet, akkor azt megroppantva elenged a csatlakozás, és roncsolásmentesen szét lehet szedni.
Régen ESP8266 volt bennük, a maiakban valami más van. Van hozzá valami saját fejlesztő rendszer - állítólag - , de én még nem próbáltam. Egy nagyon pincurka kis panel van a fő panelba forrasztva, azt ügyesen ki lehet forrasztani, és ott vannak rajta a csatlakozási pontok. Én egyből kiszedtem, meg akartam vizsgálni tüzetesebben, de azóta se tudom, hova tettem. -
Janos250
őstag
Megjött az ESP32 c3 super mini panelkám.
Tényleg aranyos, hogy olyan pici.
Egy valamire nem sikerült rájönnöm: mi a fenének vettem meg ezt is a többi kacat mellé.
Ja, persze! Mert a szomszédnak is van, akkor nekem is kell. Ezt ismerjük.
Aztán persze, sok embernek jó lehet. Ha csak az IC-t nézem, ahhoz - ha jól nézem - a kvarcon kívül más nem is igen kell. Az ESP32 C3 Ic már 500 Ft körül is kapható. Ha valaki szériában épít valamit, és nem a panelkát veszi meg, olcsón juthat egy ESP32-höz, ami ugyan egy magú, de van benne WiFi, BT, ETH, és benn vannak a gyorsító hardverek (Pl. SHA, amit épp mostanában használtam). És a memóriája is elég jó, és jó a fordítója is.
Ha meg a panelt is megveszi, akkor meg azt is belerakhatja a nagy paneljába. Innentől kezdve más csak azt várom, mikor jelenik meg Pl. az okoskonektorokban . -
Janos250
őstag
válasz
JulianSinulf #22026 üzenetére
Igen, döntsd el! Pl. írasd ki a meglévő modulod tulajdonságait.
Pl.:
Van benne érdektelen is, de most nem állok neki gyomlálni.#include <iostream>
using namespace std;
void setup() {
Serial.begin(115200);
delay(2000);
printf("getHeapSize()=%d\n",ESP.getHeapSize());
printf("getFreeHeap()=%d\n",ESP.getFreeHeap());
printf("getMinFreeHeap()=%d\n",ESP.getMinFreeHeap());
printf("getMaxAllocHeap()=%d\n",ESP.getMaxAllocHeap());
printf("getPsramSize()=%d\n",ESP.getPsramSize());
printf("getFreePsram()=%d\n",ESP.getFreePsram());
printf("getMinFreePsram()=%d\n",ESP.getMinFreePsram());
printf("getMaxAllocPsram()=%d\n",ESP.getMaxAllocPsram());
printf("\n");
printf("getChipRevision()=%d\n",ESP.getChipRevision());
printf("getChipModel()=%s\n",ESP.getChipModel());
printf("getChipCores()=%d\n",ESP.getChipCores());
printf("getCpuFreqMHz()=%d\n",ESP.getCpuFreqMHz());
printf("getCycleCount()=%d\n",ESP.getCycleCount());
printf("\n");
printf("getSdkVersion()=%s\n",ESP.getSdkVersion());
printf("getCoreVersion()=%s\n",ESP.getCoreVersion());
printf("getFlashChipSize()=%d\n",ESP.getFlashChipSize());
printf("getFlashChipSpeed()=%d\n",ESP.getFlashChipSpeed());
printf("getFlashChipMode()=%d\n",ESP.getFlashChipMode());
printf("\n");
printf("getEfuseMac()=0x%012X\n",ESP.getEfuseMac());
printf("\n");
delay(100);
} ;
void loop() {
}
-
Janos250
őstag
Hát, én eddig nagy tudatlanságban éltem!
Mindenütt azt láttam, hogy a Serial.print , és a Serial.println megoldással írnak ki dolgokat, néha a Serial.printf fügvénnyel.
Valahol láttam, és kipróbáltam, hogy a szabványos C++ printf még akár az UNO-n is elmegy. (Legalábbis lefordítja)
Például:int i= 5;
printf("i ertekeprintffel = %d",i);
Akkor meg miért nem ezt használja mindenki?
-
Janos250
őstag
Kipróbáltam az ESP32 fejlesztői változatát. (3.0)
Haladunk a korral!std::cout << "A C++ verziója: " << __cplusplus << std::endl;
A C++ verziója: 202100
-
Janos250
őstag
válasz
Wolfram #21941 üzenetére
Azt nem tudom, én, amiket hajdanán használtam, azok egyformák voltak. Lehetett is a fényerőt egészen levinni.
Nem tudom, miért ugrik, nekem csak akkor volt ilyen problémám, amikor a driverben nem tiltottam le a bájton belüli interruptot, hanem azzal is játszottam, hogy ne az RMT-t használom, hanem a sima GPIO-t. Ment az is. Én - a fene tudja miért - nem interruptoltam, hanem ciklusban figyelte az egyik mag a számlálót, hogy hol tart, és ahogy szabadult fel a hely töltöttem utána, a másik mag meg számolta, hogy mit kell feltölteni. Elvileg karácsonyi szalag lett volna, és egy szivárvány kígyó ment végig az 5 méteren, de soha nem került ki, mert mire kész lett, a szivárványnak már annyira más szimbolikája lett, hogy nem mertem használni. Aztán így maradt. Pedig panelt is csináltattam hozzá a kínaival, 5 db-t, kemény 1 $/panel áron, ami panelonként 4 szalagot tudna vezérelni. -
Janos250
őstag
A neten nem tudom, merre van, mert én, amikor évekkel ezelőtt csináltam a WS2812 vezérlést, nemigen találtam, de az rég volt, azóta nem tudom, mi van.
A hordozó frekvenciásat soha nem használtam, azt csak elméletből tudom, hogy van két regiszter, az egyikbe azt töltöd, hány 80 Mhz-es ciklusig legyen alacsony, a másikba hányig magas a carrier, és akkor azt modulálja az RMT. -
Janos250
őstag
Teszek majd fel, de jelenleg olyan nincsen, ami publikációra készült, és hányavetett dolgot nem akarok föltenni, mert gyorsan megkapom, hogy nem is szép, meg nem is jó a program.
A lényegét viszont most leírom, úgyis onnan kell elindulni.
Az ESP32 tartalmaz néhány beépített hardver megoldást, többek között ezt is. A lényege, hogy van saját tárterülete, (32 bites szavak) oda kell az adatokat berakni, amiket a következőképp értelmez: Előveszi az első szót, annak az egyik 16 bitjét (lehet 15, fejből nem emlékszem biztosan) úgy értelmezi, hogy annyi időegységig kell az adott lábat alacsonyan tartani, majd a másik felében lévő adatok szerint meg magasan. Ha infrát akarsz, akkor csak egy lábra a led, és betölteni a számokat. Ha az adott tárhely kevés neki (egy hosszabb WS2812 led) akkor közben cserélni kell az adatokat. Ez mehet úgy, hogy amikor az adatok felét megzabálta, akkor interrupt, és a felhasznált fele helyére copy, vagy van egy számláló regiszter, ami azt mutatja, hogy hol jár, azt is lehet figyelni. Be lehet úgy állítani, hogy ha elfogytak az adatok, kezdje elölről, meg úgyis, hogy akkor hagyja abba. -
Janos250
őstag
válasz
bagarol #21923 üzenetére
A WS2812 is elmegy 3 Volttal. Az enyémek legalábbis megbízhatóan működnek.
A WS2812 meghajtó hardvere az ESP32-ben gyárilag ott van.
RMT a neve.
Remote kontroller kezelésére tervezték eredetileg, de azóta már nagyon sok mindenre használják. PL. WS2812 ledhez.
Ha valaki infra ledet tesz rá, a legtökéletesebb, és legegyszerűbb táviránytó TV-hez, vagy bármihez.
Rengeteg lehetőség van az ESP32-ben. -
Janos250
őstag
válasz
gordonfreemN #21897 üzenetére
Mindenki azt fogja javasolni, amit ő használ. Én természetesen az ESP32-t preferálom, mert ha per pillanat nem is kell, olyan technikákat is megtanulhatsz vele a jövőben, aminek később hasznát veszed, és sokkal könnyebben veszed elő azt a technikát, ami úgyis ott van bótilag, mint ha ehhez át kellene állnod bármire.
Pl. ESP32-n nincs olyan, hogy az "SDA-SCL pinek foglaltak".
Az ESP32-ben van egy mátrix. A benne lévő hardverek vannak a mátrix - mondjuk - soraiban, a pinek meg az oszlopaiban. Amelyik kereszteződésbe teszel szoftveresen egy "pöttyöt", ott vezet, máshol nem. Vagyis bármi átirányítható bármelyik pinre, és ez csak pár ns-sel növeli meg az elérési időt.
Nem lényegtelen az se, hogy megtanulhatod vele pl. a párhuzamos programszálak használatát. Mind a C++ párhuzamos szálait, mind az ESP32 párhuzamos programozását.
Teljesen más lehetőségek is adódnak így.
Pl.: Ha van valami eszközöd, amire 5 sec-ként rá kell nézni, egy másikra meg 6 sec-enként, akkor nem kínlódsz azzal, hogy számolgasd, éppen hol tartasz, melyiket kell megnézni, hanem elindítasz két szálat. Az egyik ránéz a kívánt eszközre, majd delay 5 sec, a másik meg ugyanígy, de 6 sec. Teljesen függetlenek lesznek, egymást nem zavarják, és nem várakozás lesz a delay, hanem olyankor átadja a vezérlést a többi szálnak, nem fékezi a többit.
Stb.
Természetesen a Te döntésed, mi javaslatokat nem adhatunk, csak szempontokat, hogy miket vegyél figyelembe a döntésednél. -
Janos250
őstag
válasz
Wolfram #21882 üzenetére
Könnyű neki, van beépített hardver PWM-je.
https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
385. oldal.
Az valóban meglepő, hogy ekkora áramot elbír. -
Janos250
őstag
válasz
Wolfram #21844 üzenetére
Mert én egy gyűjtögető vagyok. Mennyi olyan cuccom van , amit ki se próbáltam!
Mellesleg a ws2812 nagyon jól meg van az ESP32-ben támogatva, Postás kollégánk videójában is azt dicséri az emberke. Na, ez ESP32-ben sokkal jobban van hardverben támogatva.
Számos dolog önálló , független hardverben elműködget, anélkül, hogy a két mag közül bármelyiket is igénybe venné. Azt, ha kifogyott az adata, akkor interruptal szól, hé, elfogyott, adjál enni!
Igaz, hogy én a hardver megoldásai közül nem sokat használtam ki ( pl. RMT=WS2812, SHA1) -
Janos250
őstag
válasz
Postas99 #21835 üzenetére
"nem akarod inkább olyan helyről rendelni"
Nem.
Arduino® Nano RP2040 Connect with headers több, mint 11 ezer Ft.
Én a magam részéről egyelőre kihagyom a román csúcstechnológiát.
A videóba belekezdtem, de mikor láttam, hogy még 10 perc után is alig haladt valamit előre, akkor abbahagytam, nincs nekem időm több mint egy órán keresztül ezt hallgatni.
Egyébként is ki vagyok akadva az analfabétizmus ilyen szintű elterjedésére, hogy minimum érettségizett emberek nem értik meg, ami le van írva (funkcionális analfabéták), ezért el kell nekik egy videóval - vagy személyesen - szóban mondani.
Ha valaki nekem mondani akar valamit, írja le, és én majd elolvasom. Azt tudom lapozni, látom, mi van benne, mi az ami engem érdekel.
Egyébként, ameddig néztem, az nem győzött meg. -
Janos250
őstag
Erre én is kíváncsi leszek, mert egy egészen más mag van benne. És egy magos. Elvileg a korábbi ESP32 hardver megoldásai zömében bene vannak, de - gondolom - azért nem mennek egy az egyben a másik programjai.
Például, az ESP32-n ugyebár a beépített hardver jelentős része ki van kapcsolva, és egy adott címen, egy adott bitet kell beállítani, hogy ha be akarod kapcsolni, azaz órajelet adni rá. Meg lennék lepve, ha ugyanannak a címnek ugyanazt a bitjét kellene állítani.
Az enyém Kínát már elhagyta, de Magyarországra még nem érkezett meg. remélem, nem lövik ki a Vörös-tengeren.
https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32c3/hw-reference/chip-series-comparison.htmlKözben megnéztem a dokuban.
A perifériák egész más címen vannak, tehát új driverek kellenek rá. -
Janos250
őstag
válasz
Janos250 #21794 üzenetére
Azokra gondoltam, amik eleve a rendszerben vannak, mert azok valóban nem keverik a dolgokat.
A gondom a netről letöltött programokkal volt, amik összevissza ezt-azt akartak használni.
Aztán ide:
C:\Arduino\arduino-1.8.19\portable\sketchbook\librariesrakosgattam be, ez a problémák zömét megoldotta, mert a kacsacsőrösök közül először itt keres (legalábbis úgy tűnik, mert erről nem tudok semmi leírást, hogyan szedi sorba, a fordító paraméterei meg annyian vannak, hogy nem volt türelmem végigbogarászni.)
-
Janos250
őstag
válasz
vargalex #21793 üzenetére
Én régebben többször belekeveredtem, mert több helyen vannak kyönyvtárak.
Pl:C:\Arduino\arduino-1.8.19\libraries
C:\Arduino\arduino-1.8.19\portable\sketchbook\libraries
C:\Arduino\arduino-1.8.19\portable\packages\arduino\hardware\avr\1.8.6\libraries
C:\Arduino\arduino-1.8.19\portable\packages\arduino\hardware\avr\1.8.6\cores\arduino
C:\Arduino\arduino-1.8.19\portable\packages\arduino\hardware\avr\1.8.6\firmwares
C:\Arduino\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.11\cores\esp32
C:\Arduino\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.11\cores\esp32\apps\sntp
C:\Arduino\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.11\libraries
C:\Arduino\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.11\tools\sdk\esp32\dout_qspi\include
C:\Arduino\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.11\tools\sdk\esp32\includePersze, kibogozható, hogy mikor éppen melyiket használja, de én néha belekeveredtem.
"ami nem hivatkozik másikra és azok tovább"
Azokkal kevésbé van gond, mert azok tudják, hol keressék a nekik kellőt, probléma akkor van, ha az ember mondjuk végig akarja próbálni a neten elérhető SHA1 programokat, összehasonlítani, hogy milyen időt futnak, amik szoftveresen oldják meg, és milyet, amik használják az ESP32 hardver megoldását. Mivel ilyen libet elég sokan írtak, és mindenki az SHA1 nevet adta neki, ebbe belekeveredtem annak idején, kénytelen voltam az összeset letörölni, és egyenként berakni csak azt, amit éppen próbáltam. -
Janos250
őstag
Írj egy programot ESP32-re, amivel interneten keresztül vezérelhető egymástól függetlenül 4 db lámpa be-, illetve kikapcsolása!
ChatGPT:
Sajnálom, de itt nem tudok teljes kódot adni, de segíthetek neked egy egyszerű példakóddal és útmutatóval, amely segít az ESP32-alapú lámpavezérlő projekt elkészítésében. A példakód egy egyszerű webszervert hoz létre, amelyen keresztül lehet vezérelni a lámpákat.Először is, telepítsd az Arduino fejlesztőkörnyezetet és az ESP32 támogatást hozzá. A szükséges könyvtárakat is telepítsd fel a "Library Manager" segítségével: WiFi.h és ESPAsyncWebServer.h.
Ez a kód egy egyszerű webszervert hoz létre, amelyen keresztül a lámpákat lehet vezérelni. Az ESP32 GPIO pineken keresztül kapcsolja be és ki a lámpákat. A weboldalon a lámpákat külön-külön lehet be- és kikapcsolni.
Ne felejtsd el a Wi-Fi hálózat nevét (ssid) és jelszavát (password) a kódban beállítani, hogy a készülék a megfelelő hálózatra tudjon csatlakozni.
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
const char *ssid = "your-ssid"; // Hálózat neve (SSID)
const char *password = "your-password"; // Hálózat jelszava
const int lamp1Pin = 2; // GPIO pin a lámpa 1-hez
const int lamp2Pin = 4; // GPIO pin a lámpa 2-höz
const int lamp3Pin = 5; // GPIO pin a lámpa 3-hoz
const int lamp4Pin = 18; // GPIO pin a lámpa 4-hez
AsyncWebServer server(80);
void setup() {
// Lámpák inicializálása
pinMode(lamp1Pin, OUTPUT);
pinMode(lamp2Pin, OUTPUT);
pinMode(lamp3Pin, OUTPUT);
pinMode(lamp4Pin, OUTPUT);
// Wi-Fi csatlakozás
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Weboldal kezelése
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/html", "<html><body>\
<h1>Lámpavezérlő</h1>\
<p><a href='/lamp1/on'>Lámpa 1 BE</a> | <a href='/lamp1/off'>Lámpa 1 KI</a></p>\
<p><a href='/lamp2/on'>Lámpa 2 BE</a> | <a href='/lamp2/off'>Lámpa 2 KI</a></p>\
<p><a href='/lamp3/on'>Lámpa 3 BE</a> | <a href='/lamp3/off'>Lámpa 3 KI</a></p>\
<p><a href='/lamp4/on'>Lámpa 4 BE</a> | <a href='/lamp4/off'>Lámpa 4 KI</a></p>\
</body></html>");
});
server.on("/lamp1/on", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(lamp1Pin, HIGH);
request->send(200, "text/plain", "Lámpa 1 BEkapcsolva");
});
server.on("/lamp1/off", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(lamp1Pin, LOW);
request->send(200, "text/plain", "Lámpa 1 KIkapcsolva");
});
// Hasonlóképpen kezelheted a többi lámpát is (lamp2, lamp3, lamp4)
// Szerver indítása
server.begin();
}
void loop() {
// Üres, itt lehetne egyéb dolgokat hozzáadni
} -
Janos250
őstag
válasz
Wolfram #21789 üzenetére
Nem, bár szemeztem vele, de én szeretem, ha nem egy, hanem két fizikai mag van benne, de egyébként tetszik ez is, vagy másik verziója is. Gyűjtögető életmódom miatt január kilencedikén megrendeltem, január vége felé várható a megérkezése.
Jelenleg még nem érkezett meg a magyar VÁM-ra. -
Janos250
őstag
válasz
Janos250 #21787 üzenetére
Hány lámpa lenne?
Nem teljesen értettem meg a linkelt példát: egyszerűen WEB lapról akarod vezérelni a lámpákat? Mert ahhoz nem kell ekkora felhajtás.
"Melyik Arduino modell lenne erre a célra a legmegfelelőbb"
Erre mindenki mást fog mondani. Mindenki a kedvencét. Gyakorlatilag bármelyik jó, de ha neten keresztül akarod vezérelni, akkor az ESP8266, vagy az ESP32 a célszerű választás, mert abban benne van a WiFi, nem kell külön WiFi modul.
Honnan?
Ez is ízlés kérdése. Én mindent Aliexpressről veszek, de sokan az itthoni boltokat pártolják. Most az Alin rendelt dolgok is bejönnek 2-3 hét alatt.
ESP32mini Alinak egy akciójában nagyjából 1500 Ft. Ha nagyon sok lámpa kell, akkor egy erősebb ESP32
Igen, alaplap, tápegység elég. És persze a relék, ha azt használsz. Én általában FET-eket használok.
Gyorstalpaló?
Hát, vannak, kérdés, mennyire jók.
Hol állsz a programozással?
Az Arduino az C++ , megtámogatva egy halom "szabványos" osztállyal, hogy mindenki ugyanúgy használja a perifériákat, és egy plusz típussal (String a string mellé), ami néha jó, de néha meg gutaütés, ha keverni kell a kettőt.
A szerkesztő, és feltöltő felülethez nem kell különösebb tanulás, egyszer megnézed valahol, vagy valaki megmutatja, és megy. -
Janos250
őstag
válasz
its_grandpa #21782 üzenetére
Én naivan azt hittem, hogy a néha - ritkán - általam is használt VSC (Visual Studio Code) Microsoft, de tévedni emberi dolog.
Béke! -
Janos250
őstag
Ha ott vannak a fájlok, ahol az ino, akkor idézőjel, egyébként kacsacsőr. Régebben én is szívtam vele, mert az ESP32 is összevissza rak könyvtári fájlokat. Ezért én nem kínlódok vele: vagy átteszem az ino mellé - akkor mellesleg szerkeszthetem is az Arduino IDE-ben - vagy megadom a teljes elérési utat.
Például találomra így:C:\Arduino\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.11\tools\sdk\esp32\include\driver\include\driver\sdio_slave.h
-
Janos250
őstag
válasz
its_grandpa #21778 üzenetére
Azt azért feltételeztem, tudja, mikor kell a kacsacsőrt és mikor az idézőjelet használni.
Microsoft ügyében (is) megmarad a véleménykülönbségünk. -
Janos250
őstag
válasz
Wolfram #21771 üzenetére
Mást is érdekelhet, ezért leírom:
A legbiztosabb, ha beteszed a kívánatosat az .ino mellé, akkor biztosan azt használja.
Ha ott nem találja, akkor (nálam, mert én portable-t használok) a sketchbook\libraries mappában keres, majd így tovább. Ha végképp keveredik, akkor be kell írni az include-ba a teljes elérési úttal. Ez biztos módszer.
Sajnos hiába írják ezer helyen, hogy, ha valaki ír egy könyvtári programot, ne adjon neki általános nevet, hanem egyedit. Én pl. a saját könyvtáraim nevébe a dátumot is beírom, vagy valami más egyedit. -
Janos250
őstag
válasz
vargalex #21769 üzenetére
Én csak a két utolsó sorra hívnám fel a figyelmet:
Nem pointert használ, hanem tömböt. Ami persze ugyanaz, csak áttekinthetőbb!for(unsigned int i = 2; i < output_length; i += 3) {
output[0] = base64_to_binary(input[0]) << 2 | base64_to_binary(input[1]) >> 4;
output[1] = base64_to_binary(input[1]) << 4 | base64_to_binary(input[2]) >> 2;
output[2] = base64_to_binary(input[2]) << 6 | base64_to_binary(input[3]);
input += 4;
output += 3;
}
-
Janos250
őstag
válasz
#75135488 #21641 üzenetére
Serial a debughoz nincs? Miért nincs? Egy serial-USB konverter, és mehet a gépre, és ott listázni a megfelelő com portot akármivel.
Én ESP32-re írtam régebben egy programocskát, ami mutatja, ha WEB-en belépek, hogy hány kliens kapcsolódik aktuálisan, és milyen távoli portokkal. Nem tudom, ESP8266-al menne-e, már nagyon rég használtam 8266-ot.
Ki sem tudom próbálni, mert ESP8266 csak a munkahelyemen van benn, oda meg most be sem tudok menni, mert pár nappal ezelőtt volt egy hajnali halálos baleset, mert egy kolléga izopropil-alkohollal tisztított valamit, és a gőze berobbant. Most két hétig a szünetben légy se se ki, se be.
Mindenesetre vagy folyamatosan fenn kell tartani a kapcsolatot, vagy használat után bezárni, és a következő használatnál újranyitni.
Gyanítom, hogy az aszinkron kapcsolat megmarad, a dolog jellegénél fogva. -
Janos250
őstag
Ha valakinek elég 1 mag, és kevés láb, kicsi a hely, de ESP32-t akar, most €3.76.
Ingyen szállítással, ha a "3+ items from US $1.99" keretében veszed.
https://vi.aliexpress.com/item/1005005319963906.html
De több lábbal is ennyi. -
Janos250
őstag
válasz
Sebiferi #21574 üzenetére
Lehet, hogy csak azért, mert már álmos vagyok, de én az egésznek a logikáját nem értem.
10 elemű vektor 4-es elemeit kinullázod, majd egy ciklust járatsz tízig, de ha a code nulla, (ami a 4-es elemnél lesz), akkor kiíratsz ezt-azt, majd a ciklus megy tovább?
Végén kiíratod az eltelt időt?
Itt a meghatározó nem a ciklus, hanem a Serial ideje lesz.
Mit nem látok jól? -
Janos250
őstag
Nekem az említett "3 vackot egyszerre" szisztémában jött cuccok mind megjöttek 2 héten belül. A tied valószínűleg nem az volt, mert azokat egy csomagban küldik.
A többinél én is vártam már 2 hónapot is.
Most is várok egy 500 W-os motort a CNC 3018-as kis CNC-hez, amit mostanában csencseltem, és próbálom kicsit felhizlalni.
A végálláskapcsolókat is várom, de azokat valószínűleg megveszem itthon, mert nem lesz türelmem kivárni. -
Janos250
őstag
válasz
valkesz93 #21565 üzenetére
Egyértelműen Kínából, ha nem úgy kell, mint...nak a fehérkenyér: már harapjam is.
Az itthoni forgalmazók nagyon drágák. A nepperek meg ugyanúgy Kínából rendelik a Te címedre, csak jó pénzért feleslegesen közbeékelődnek.
Van az Alin az a "3 vackot egyszerre" szisztéma, ott ugyan nagyon szűk a választék, de max 2 héten belül itt van.
A többi teljesen változó, hogy mennyi idő alatt ér ide. Van ami 2 hét, van ami 2 hónap alatt.
A Bangood drágább az Aliexpressnél, de általában gyorsabb.
Nyomtatott áramkör készítést például véletlenül se szabad itthon csináltatni, mert a kis kínai fillérekért megcsinálja, és elég gyorsan itt is van. Még a gyorsabb szállítás választással is messze az itthoni árak alatt van. -
Janos250
őstag
-
Janos250
őstag
Ez is Arduino:
https://www.youtube.com/watch?v=lqizRKBuqjs -
Janos250
őstag
válasz
ViZion #21421 üzenetére
Erre szoktam mondani, hogy itt a karácsony, olyan dolgot vegyetek a gyereknek, amit élvez, de tanul is.
Egy régebbi használt kék lézergravírozó, amivel felírhatja karácsonyra egy fakanálra, hogy a legjobb anya, vagy Katinak, hogy a legszebb lány. Pár éve olcsón adták a régebbi típusú, használt 3D nyomtatókat is, de ezek már "elfogytak". Sajnos ezek nem éppen olcsók, pár tízezres kategóriában vannak. Egy mikrokontrolleres dolog is jó lehet, ha a suliban telefonon meg tudja nézni, hány fok van otthon a szobájában. Ilyesmi Kínából olcsón bejön. -
Janos250
őstag
-
Janos250
őstag
"van-e bármi amit esetleg elronthattam a design közben?"
Van. Például nem minden légvezetéket alakítottál át.
Ott van benne egy ellenőrzés, futtasd le. Nem tudom fejből, hogy hol, de van.
Az persze egy csomó egyéb figyelmeztetést is kiír. Pl. ha egy láb semmihez nincs csatlakoztatva, stb.
"Ezen a linken meg tudja nézni"
A kapcsolás jónak tűnik, de nem látom a panelon a vezetékezést!
" Ez alapján választottam a pcb-hez egy csatlakozó-alapot:"
Csinálhatsz is magadnak saját footprintet.
"Offra tettem, mivel nem annyira arduino mint a pcb-készítés,"
De, Arduino, mert az Arduino alapú projektekhez kell PCB is!
Én is Arduino dolgokhoz használom. -
Janos250
őstag
Én az easyeda.com-ot használom. Gyors, jó minőség, és olcsó, bár a szállítás megdrágítja
-
Janos250
őstag
válasz
vegyszer #21152 üzenetére
Nem is vettem észre.
Ugyanis szívesebben kapcsolódok WiFi-vel a hálóra, mert akkor nem kell a cég rendszergazdinak a morgását végighallgatnom, hogy nem cseszem-e el a rendszert, ha fizikailag rákapcsolódok.
Vannak ilyen előnyei a WiFinek. Nálam pélsául az, hogy 230-as fűtést, szivattyút, ilyesmit vezérlek WiFin/telefonon keresztül, így nincs méregdrága érintésvédelmi vizsgálat.
A vezetékes hálózatot én is csak lokális módon használnám úgy, hogy a táp az egyébként kihasználatlan vezetékpáron megy, mint a POE kameráknál, mert az ott jól bevált. -
Janos250
őstag
Én ezzel
https://www.aliexpress.com/item/1005005658268195.html
szemezek egy ideje, mert olcsó, fele, mint a hasonlók, de csak a szemezésnél tartok. -
Janos250
őstag
Szevasztok!
Nálatok is az van, hogy a Firefox bizonyos beállítsainál nem lehet belépni, és hozzászólni?
Nálam az egyik gépen ez van, a másikon egy - még nem babrált beállítású - Firefoxszal be tudok lépni, és lám hozzá is tudtam szólni.
Nem tudom mi miatt van, de nem is kutatom az okát különösebben. -
Janos250
őstag
-
Janos250
őstag
"Szerintem a teljes TCP/IP stack implementálva van ESP32-re"
Igen, a teljes LWIP, én még nem találtam hibás működést.
Ha úgy tarja úri kedvünk, akár a C file kezeléssel is használhatjuk.
Megadjuk a szabályok szerint az URL-t, file-ként megnyitjuk, és a szabványos műveletekkel kezeljük, írunk rá, olvasunk róla. -
Janos250
őstag
válasz
Wolfram #21040 üzenetére
NVS?
file > Példák > Preferences > StartCounter
https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/api/preferences.html
Ha nem érted meg, az azért van, mert részeg vagyok. -
Janos250
őstag
válasz
JozsBiker #21051 üzenetére
Én 3D nyomtatóval szoktam nyomtatni dobozt, amiben mindennek megvan a helye, a rögzítéshez szüksége stiftek, lyukak, stb. Persze, ha nincs 3D nyomtatód, akkor ez nem megy.
Arra mindenképp figyelj, hogy a kisfeszültségű rész, és a 230 stabilan, biztonságosan legyen egymástól elválasztva! Akkor se legyen baj, ha történetes beleköltözik egy egér, darázs, stb, és elkezdi rágcsálni a dolgokat! -
Janos250
őstag
válasz
Wolfram #21029 üzenetére
Hogy neked örömet szerezzek, megittam egy pohár vöröset is, és egy pohár fehéret is, hogy még jobban részeg legyek, így még egy hülye hozzászólás:
ha ezt ütöttem be neki:
"Írj egy programot ESP32-re, amivel egy ledet tudok ki-bekapcsolni neten keresztül, valamint egy DS18B20 által mért hőmérsékletet olvassa, és ha eléri a 25 °C-ot, bekapcsol egy ledet!"
Ezt a marhaságot válaszolta, mivel ő is ivott pár pohárkával:#include <WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// WiFi beállítások
const char* ssid = "WiFi_SSID";
const char* password = "WiFi_PASSWORD";
// DS18B20 szenzor csatlakozás
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// LED-ek csatlakozása
const int controlLedPin = 2; // A távolról vezérelt LED lábának sorszáma
const int tempThresholdLedPin = 3; // A hőmérséklet küszöböt érő LED lábának sorszáma
// Célhőmérséklet (25°C)
const float targetTemperature = 25.0;
WiFiServer server(80);
void setup() {
Serial.begin(115200);
// LED lábak beállítása
pinMode(controlLedPin, OUTPUT);
pinMode(tempThresholdLedPin, OUTPUT);
// WiFi csatlakozás
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
server.begin();
sensors.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("New client connected");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
client.println("<html><body>");
client.println("<h1>LED Control</h1>");
client.println("<p><a href=\"/on\">Turn LED ON</a></p>");
client.println("<p><a href=\"/off\">Turn LED OFF</a></p>");
client.println("</body></html>");
break;
} else if (currentLine.startsWith("GET /on")) {
digitalWrite(controlLedPin, HIGH);
} else if (currentLine.startsWith("GET /off")) {
digitalWrite(controlLedPin, LOW);
}
currentLine = "";
} else if (c != '\r') {
currentLine += c;
}
// Hőmérséklet ellenőrzése és LED vezérlése
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
if (temperature >= targetTemperature) {
digitalWrite(tempThresholdLedPin, HIGH);
} else {
digitalWrite(tempThresholdLedPin, LOW);
}
}
}
client.stop();
Serial.println("Client disconnected");
}
}
Ha Te is iszol pár pohárkával, javítgasd!
Jó éjt!
-
Janos250
őstag
-
Janos250
őstag
válasz
lanszelot #21007 üzenetére
Gondoltam, kipróbálom a ChatGPT-t erre.
Már többször próbáltam kíváncsiságból. Általában jó programot írt egyszerűbb dolgokra, de volt, hogy logikai hibát rakott bele.
Most azt írtam be neki:
"Írj egy programot ESP32-re, amivel egy ledet tudok ki-bekapcsolni neten keresztül!"
Ezt válaszolta:
"Az alábbiakban egy egyszerű példaprogram található, amely segítségével egy ESP32 mikrovezérlőn keresztül vezérelhetsz egy LEDet a hálózaton keresztül. A program egy egyszerű webes felületet biztosít, ahol egy gomb segítségével ki- és bekapcsolhatod a LEDet."
Ezt a programot írta:#include <WiFi.h>
#include <ESPAsyncWebServer.h>
// WiFi hálózati beállítások
const char* ssid = "WiFi_SSID";
const char* password = "WiFi_Password";
// LED pin
const int ledPin = 13;
// Web szerver létrehozása az AsyncWebServer használatával
AsyncWebServer server(80);
void setup() {
// LED pin inicializálása
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Sori monitor inicializálása
Serial.begin(115200);
// WiFi csatlakozás
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Webes útvonalak kezelése
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
String html = "<html><body>";
html += "<h1>ESP32 LED Control</h1>";
html += "<p>LED Status: ";
html += (digitalRead(ledPin) == HIGH) ? "ON" : "OFF";
html += "</p>";
html += "<form action=\"/toggle\" method=\"post\">";
html += "<button type=\"submit\">Toggle LED</button>";
html += "</form>";
html += "</body></html>";
request->send(200, "text/html", html);
});
server.on("/toggle", HTTP_POST, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, !digitalRead(ledPin));
request->send(200);
});
// Web szerver indítása
server.begin();
}
void loop() {
// Üresen hagyjuk a loop-ot
}
Én nem használnék AsyncWebServer-t, hanem csak símát, és nem is tudom eldönteni, hogy jó-e, mert nem használtam még, és most meg kipróbálni nem tudom, de érdekességként beírom ide, hogy felhívjam a figyelmet, hogy hol tart a todomány!
Ha nem tudod, hogy ez:[](AsyncWebServerRequest *request)
mi, akkor Google, C++ lambda -
Janos250
őstag
válasz
Wolfram #20973 üzenetére
" mennyibe kerül a LiPo/LiFePo4, sok mérési pont esetén nem elhanyagolható kérdés."
Nem sokkal drágább, viszont megúszod a fesz. szab elektronikát, mert alacsonyabb a feszültsége a lítium-vas-foszfátos akkunak, közvetlenül hajthatja az ESP-t. Ugyanakkora súlyra viszont kisebb a kapacitása. Itt az az előny nem játszik szerepet, hogy rövid ideig nagyon nagy áramot képes leadni. Egy 26650-es akár 100 A-t is lead pár másodpercig. -
Janos250
őstag
válasz
Wolfram #20951 üzenetére
Hú, ez egy nagyszerű ötlet! Kár, hogy ennyire drága, de biztosan lesz ez olcsóbb is.
Megoldja azt a problémát, hogy megmaradjon az "UNO feeling", de mégis korszerűbb kontrollert használjon a pógár.
Sok kezdő azért nem akar egyből korszerűbbel kezdeni, mert a neten mindenütt azt olvassa, hogy UNO, UNO, UNO. Mert ez volt az első. Ehhez van leírva, hogy "bal oldalon a negyedik lábhoz kösd a...". Így ez is teljesül, minden tökéletes. Remélem, hamarosan megjelennek utángyártott, olcsóbb verziói. -
Janos250
őstag
válasz
batyuska100 #20932 üzenetére
-
Janos250
őstag
Használd ekkold által írtakat. Az jó megoldás, én csak annyit fűznék hozzá, hogy ha az eredeti programhoz jobban passzoló neveket használsz, akkor talán kevésbé keveredsz bele.
Azért ez a téma lehet, hogy megér egy bővebb kifejtést, ezért írtam egy kis tutorialszerű programot.#include <iostream> // ha a std::cout-ot akarjuk hasznalni, egyebkent torlendo
void setup() {
delay(1000);
Serial.begin(115200) ;
delay(1000);
/*
A C++-ban a ("C tipusu") tomb neve constans pointer.
Ugyanugy hasznalhatjuk oket egymas helyett is, azzal a megkotessel,
hogy a tomb neve konstans, nem valtoztathatjuk meg.
Ezert nem lehet egyenlosegjel bal oldalan hasznalni.
Viszont, ha helyette egy tenyleges pointert hasznalunk, az megvaltoztathato,
azaz egy masik tomb nevet mint pointert adhatjuk neki.
Mas modszereket is hasznalhatunk ennek megkerulesere, mint peldaul
a std::array. Ez mar szereelhet erteekado utasitas bal oldalan.
Vagy a for each-csel valo ertekadas, esetleg a std::vector
Mind kozul a leggyorsabb a sima tomb
*/
Serial.println ("ha egy index van:");
int* xy ;
int xy_array[9] = {1,0,0, 0,1,0, 0,0,1};
int xy2_array[9] = {11,12,13, 21,22,23, 31,32,33};
Serial.println ("xy = xy_array:");
xy = xy_array;
for (int i = 0; i <9 ; i++){
Serial.print (xy[i]); Serial.print (" ");
};
Serial.println ();
Serial.println ("xy = xy2_array:");
xy = xy2_array;
for (int i = 0; i <9 ; i++){
Serial.print (xy[i]); Serial.print (" ");
};
Serial.println ();
// nyomtatja:
/*
ha egy index van:
xy = xy_array:
1 0 0 0 1 0 0 0 1
xy = xy2_array:
11 12 13 21 22 23 31 32 33
*/
//he több index van akkor typedef hasznalando
//typedef <data_type> <alias_name> [<size>]
typedef int egyindexes_arr[3]; // ez egy 3 elemű vektor tipus
egyindexes_arr* enMatrixom ;
// harom elemu vektorra mutato pointer,
// melynek az elemei szinten harom elemu vektorok
// Az alabbiak ugyanigy, csak tombok.
// Ne feledd tomb = pointer!
egyindexes_arr enMatrixom1[3] = {{1,0,0}, {0,1,0}, {0,0,1}} ;
egyindexes_arr enMatrixom2[3] = {{11,12,13}, {21,22,23}, {31,32,33}} ;
Serial.println ("eredeti ketindexes: ");
for (int i = 0; i <3 ; i++){
for (int j = 0; j <3 ; j++){
Serial.print ( enMatrixom1[i][j] ); Serial.print (" ");
}; // end j
Serial.println ();
}; // end i
Serial.println ();
/*
eredeti ketindexes:
1 0 0
0 1 0
0 0 1
*/
Serial.println ("enMatrixom = enMatrixom1 utan:");
enMatrixom = enMatrixom1 ;
for (int i = 0; i <3 ; i++){
for (int j = 0; j <3 ; j++){
Serial.print ( enMatrixom[i][j] ); Serial.print (" ");
}; // end j
Serial.println ();
}; // end i
Serial.println ();
/*
enMatrixom = enMatrixom1 utan:
1 0 0
0 1 0
0 0 1
*/
Serial.println ("enMatrixom = enMatrixom2 utan:");
enMatrixom = enMatrixom2 ;
for (int i = 0; i <3 ; i++){
for (int j = 0; j <3 ; j++){
Serial.print ( enMatrixom[i][j] ); Serial.print (" ");
}; // end j
Serial.println ();
}; // end i
Serial.println ();
/*
enMatrixom = enMatrixom2 utan:
11 12 13
21 22 23
31 32 33
*/
// Hasznalhatunk mas megoldasokat is, de azok nem biztos, hogy a régi lapokon mennek,
// csak a korszerűbbeken, de ESP32-n biztosan(kipróbáltam)
// peldaul a std::array, vagy a for each hasznalata
// a std::cout helyett termeszetesen hasnalhatunk barmilyen mas nyomtato utasitast is
std::array<int, 9> std_arr_1 = {1,0,0, 0,1,0, 0,0,1};
std::array<int, 9> std_arr_2 = {11,12,13, 21,22,23, 31,32,33};
Serial.println ("eredeti std_arr_1 :");
for (int i = 0; i <9 ; i++){
Serial.print (std_arr_1[i]); Serial.print (" ");
};
Serial.println ();
std_arr_1 = std_arr_2; // igy hasznalhato az ertekadas,
//egyebkent meg ugyanugy hasznalhatjuk, mint a C tipusu tombot.
Serial.println ("std_arr_1 = std_arr_2 utan :");
for (int i = 0; i <9 ; i++){
Serial.print (std_arr_1[i]); Serial.print (" ");
};
Serial.println ();
/*
eredeti std_arr_1 :
1 0 0 0 1 0 0 0 1
std_arr_1 = std_arr_2 utan :
11 12 13 21 22 23 31 32 33
*/
Serial.println (
"a korabban megadott xy tomb elemeit lecserésljük a felsorolasban szereplokre :");
Serial.println ("lecsereles elott:");
// kinyomtatjuk
for ( auto tombEgyEleme : xy_array ) {
std::cout << tombEgyEleme << ' ';
}
std::cout << '\n';
// lecsereljuk:
uint8_t j = 0;
for ( auto tombEgyEleme : {11,12,13, 21,22,23, 31,32,33} ) {
xy_array[j++] = tombEgyEleme;
}
Serial.println ("lecsereles utan:");
// kinyomtatjuk
for ( auto tombEgyEleme : xy_array ) {
std::cout << tombEgyEleme << ' ';
}
std::cout << '\n';
/*
a korabban megadott xy tomb elemeit lecserésljük a felsorolasban szereplokre :
lecsereles elott:
1 0 0 0 1 0 0 0 1
lecsereles utan:
11 12 13 21 22 23 31 32 33
*/
} ; // end setup
void loop() {
// put your main code here, to run repeatedly:
}
-
Janos250
őstag
Aki leszólja az Arduinot, mutassátok meg neki ezt a linket:
https://www.reddit.com/r/arduino/comments/12eryru/egg_painter_robot/ -
Janos250
őstag
válasz
Wolfram #20814 üzenetére
Én inkább ezt választanám, de a Tiéd a választás joga.
https://vi.aliexpress.com/item/1005003472117545.html -
Janos250
őstag
válasz
Janos250 #20809 üzenetére
Ez se rossz 1200-ért, van hozzá hasonló is ugyanezért az árért.
https://vi.aliexpress.com/item/1005005628331048.html -
Janos250
őstag
Az Ali 3 vackot 2-3 $/darab akcióban 720 Ft a két csomag együtt. Szerintem nagyon jó, és nagyon megéri.
https://vi.aliexpress.com/item/1005005314968274.html
Ha nem a telefonos appból nézed, akkor sokkal magasabb árat mutat, de az ne zavarjon meg. -
Janos250
őstag
Ez itt OFF, de azért elmondom:
Manapság tervezett, sorozatgyártásra szánt panelnál van valami különös oka, hogy UNO-ra tervezted?
Pl. a méretre SOKKAL KISEBB, SOKKAL OLCSÓBB, SOKKAL TÖBBET TUDÓ STM32 blue pill ugyanolyan kiforrott panel, az UNO programok gyakorlatilag változtatás nélkül futnak rajta. Én mindenkinek azt javasolom, hogy ha MOST vesz panelt, háromszor is gondolja meg, hogy tényleg UNO-t akar-e venni! Igaz, hogy azzal indult az azóta de facto szabvánnyá vált Arduino rendszer, és a net ezzel van tele, de ma már relatíve drága, keveset tud, és nagy. Hiába töröm a fejem, egyetlen olyan szempontot sem tudnék felsorolni, ami miatt UNO lenne a kiválasztott.
Új hozzászólás Aktív témák
Hirdetés
- Csere-Beszámítás! Asus Tuf Gamer laptop! R7 3750H / GTX 1650 / 16GB DDR4 / 500GB SSD
- Lenovo Legion Slim 5 82Y900BVHV Notebook
- 13-14" Új és használt laptopok , üzletitől a gamerig , kedvező áron. Garanciával !
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- BESZÁMÍTÁS! Microsoft XBOX Series S 512GB játékkonzol garanciával hibátlan működéssel
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest