- antikomcsi: Való Világ: A piszkos 12 - VV12 - Való Világ 12
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- gban: Ingyen kellene, de tegnapra
- Szevam: Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
-
IT café
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
-
gyapo11
őstag
válasz csubuka #7102 üzenetére
Amikor a MOC-ot vettem, akkor szétnéztem és találtam egyszerű kapcsolási rajzokat. Arduino kimenetén H, triak nyit (venti pörög), L triak zár (venti leáll). A MOC, triak, optocsatoló mellé kell még pár alkatrész.
pl. ezmenyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
szuszinho
őstag
Sziasztok,
Megnéztem jópár leírást, videót, de nem tudom működésre bírni az ESP8266-ot. UNO-val próbálom, de a feltöltés mindig hibával elszáll.
Tudtok egy jó leírást hozzá?Köszi!
-
fpeter84
senior tag
válasz Tankblock #7106 üzenetére
Én inkább a CH340g csippeseket ajánlanám, nekem ez tűnt eddig a leginkább problémamentesnek! Ha eredeti lenne az FT232 az persze szintén jó lenne, de kínából 99% hogy hamisított érkezik, ami hajlamos eldobálni az USB azonosítóját - helyreállítható, de idegesítő jelenség. A PL2303-t szintén orrba-szájba hamisítják a kínaiak - bár a hamis is megbízhatóan megy, viszont csak 8-10 éves driverrel, amit a win10 erőszakosan lefrissít ha nem irtod ki a win update-et és akkor letilt. Még népszerű a CP2102 is. Ezzel nem volt semmi negatív tapasztalatom, de mivel a CH340g messze a legolcsóbb (5db ~800 pénz) ezért ezt javaslom...
-
Teasüti
nagyúr
Megszakításnál pedig ez az alapeljárás - sok helyen külön felhívják rá a figyelmet, hogy legyen minél rövidebb, lehetőleg egyetlen parancs csupán -, hogy csak egy változót állítasz be (más néven flag-et, ahogy Tankblock hivatkozott rá). Így a lehető legrövidebb ideig tart a megszakítás a loop különösebb hátráltatása nélkül.
A flag elnevezés meg onnan ered, hogy ez az eljárás egy jelzést ad a loop-nak, amiben már szabadon azt csinálunk vele, amit akarunk. Majd ha bevégeztetett a feladat, akkor utána nullázod a flag-et.
Bizonyos feladatokban, mint mondjuk az input capture, ez a flag lehet számláló is és így nézne ki a dolog:void nyissz() {
piros++;
} -
Teasüti
nagyúr
válasz Janos250 #6642 üzenetére
Szia!
Kérhetnék egy kis segítséget ahhoz a led library-hez?
Nézegetem a demo1 példát, ami jár mellé, de nem igazán tudom értelmezni.
Nagyon gyenge vagyok a hardver közeli parancsokból, alacsony szinten nem is tudok programozni.
Azt se igazán tudom kisilabizálni, hogy hogy tudok led szalagot definiálni.
Ez a demo inkább emlékeztet egy library struktúrájára a .h fájlokban (a mai napig nem tudok library-t írni, egyszerűen nem értem a szintaktikáját), semmint egy magas szintű példaprogramra. -
Janos250
őstag
válasz Teasüti #7110 üzenetére
Hú, nehezet kérdeztél!
Én annak idején csak betöltöttem az elején pár demót, lefuttattam, hogy működnek-e, részletesebben nem foglalkoztam vele.Megnéztem ezt a demót és a libraryt.
A demó meglehetősen el van bonyolítva, de nem tűnik túlzottan vészesnek a library használata.
Persze, lehet, hogy a gyakorlat mást mutat. Majd megpróbálok valami nagyon egyszerű programocskát írni a használatára, de most azzal szívok, hogy az ESP32 mellé tettem a dobozba a kapcsoló üzemű táp panelt, és rendszeresen megbolondul, építhetem át.Persze, ha valaki már használta ezt a libraryt, akkor közösen várjuk az instrukciókat.
[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Teasüti
nagyúr
válasz Janos250 #7111 üzenetére
Elnézést ha túl sok gondot okozok, nem akarlak feltartani a saját munkáddal!
Csak nem tudom hirtelen hová forduljak segítségért, próbáltam keresgélni az adott library-vel kapcsolatban, de semmit nem találtam még a github-os repo-n kívül, meg egy fórum bejegyzésen kívül, ahol a készítő maga kérdezett vmit.Nekem úgy tűnik, hogy a demóban ez volna talán a deklaráció:
strand_t STRANDS[] = { // Avoid using any of the strapping pins on the ESP32
{.rmtChannel = 1, .gpioNum = 17, .ledType = LED_WS2812B_V3, .brightLimit = 32, .numPixels = 93,
.pixels = nullptr, ._stateVars = nullptr},
};
int STRANDCNT = sizeof(STRANDS)/sizeof(STRANDS[0]);Viszont a programozási ismereteim idáig nem terjednek, így nem tudom mi ez:
strand_t STRANDS[]
. Ez egy objektumként deklarált tömb volna? Az object array leírások nem igazán hasonlítanak erre a kódra. A kapcsos zárójelben lévő elemek is elég furák, mi az a pont minden egyes paraméter előtt? Meg hol van melyik változó milyen típus?És ha jól látom, akkor a frissítés az már a rainbow és a scanner függvényekből történik, vagyis eredendően más megközelítést használ mint én eddig. Én ram-ba írtam az eredményt és azt dolgoztam fel, mielőtt burst write-tal kiment a szalagra - és tulajdonképpen az egész library-ből csak annyit használtam, hogy tolja ki a szalagra az általam felállított byte tömböt.
Ha ennyit el tudnék érni ezzel az ESP-n, hogy írja ki a saját byte tömbömet a szalagra, annyi nekem bőven elég lenne. Nem kell semmi más funkció.Ha megnézem a Scanner osztályát (a class használata nekem kicsit magas, régen sem találtam elég bő lére eresztett leírást a szintaktikájáról, a spéci szimbólumok magyarázatáról), akkor ott látok pár parancsot, ami nekem kell ide, mint a
digitalLeds_updatePixels(pStrand);
valamint adigitalLeds_resetPixels(strands[i]);
parancsok. Viszont nem látom, hogy a pStrand az minek van deklarálva. Az egy tömb lenne?MÁS
Mi a probléma a kapcsoló üzemű táppal?
Stabilizált a táp ill. vannak bypass kondik a lap előtt?
Valószínűleg nem ide tartozik, de én PC táppal tapasztaltam hasonló problémákat, amit meg egy a közelében lévő másik fogyasztó csap le állandóan. A táp egy gőzelszívó ventilátor felett helyezkedik el és valahányszor kikapcsolják a ventilátort, a PC táp reset-el vmiért. Először azt hittem a Nano hülyül meg, televágtam bypass kondikkal, meg ESD védelemmel és még alufóliával árnyékoltam. De még így is levágta, aztán rájöttem, hogy nem a Nano reset-el (készenléti áramról kapja a tápot), hanem a táp maga kapcsol ki.[ Szerkesztve ]
-
Teasüti
nagyúr
válasz Tankblock #7113 üzenetére
Szia!
Erről volna szó:
[link]
Arduino IDE alatt. Jövő héten működésre szeretnék bírni egy projektet, így a megszokott környezetben szeretném berúgni a vasat. Az ESP-IDF-fel való ismerkedés inkább hosszabb távon realizálható.
De megvettem hozzá Kolban könyvét, szóval talán lesz egy épkézláb tananyagom hozzá. -
Janos250
őstag
válasz Teasüti #7112 üzenetére
Nem okozol gondot.
Igen, az a deklaráció. Egy vektor, aminek minden eleme egy struktúra, ami tartalmazza az adott led paramétereit.
A pStrand az egy strand_t* típusú pointer:class Scannerer {
private:
strand_t * pStrand;strand_t STRANDS[] : a STRANDS[] egy vektor, aminek minden eleme strand_t típusú.
A strand_t egy struktúra, ezért adod meg neki így a kezdőértékeket, pl.: .rmtChannel = 1typedef struct {
int rmtChannel;
int gpioNum;
int ledType;
int brightLimit;
int numPixels;
pixelColor_t * pixels;
void * _stateVars;
} strand_t;tehát tartalmazza az adott ledsor paramétereit (esp32_digital_led_lib.h).
A ledType pedig ezek közül valamelyik:
enum led_types {
LED_WS2812_V1,
LED_WS2812B_V1,
LED_WS2812B_V2,
LED_WS2812B_V3,
LED_WS2813_V1,
LED_WS2813_V2,
LED_WS2813_V3,
LED_SK6812_V1,
LED_SK6812W_V1,
};Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
válasz Teasüti #7112 üzenetére
"Mi a probléma a kapcsoló üzemű táppal?"
Mellette megy a soros madzag egy GPS-ből, és ha össze vannak kötve, gyakran kiakad.
Egy viszonylag kis panel. Korábban mégkisebbel használtam, azzal nem tapasztaltam ilyen gondot, igaz, egész más volt az egész.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Teasüti
nagyúr
Ez a Neil Kolban nagy guru lehet.
Most nézem, hogy van BLE library Arduino alá, és nem a SimpleBLE-ről van szó, hanem rendes implementációnak tűnik első blikkre.
Épp az UART Service példát nézegetem... (Bakker, nem kéne elkalandoznom a feladatról. ) -
-
Tankblock
aktív tag
válasz Janos250 #7118 üzenetére
A demo2 nézem....
strand_t STRANDS[]
ből is kivetted a nem kellő részét?int STRANDCNT = sizeof(STRANDS)/sizeof(STRANDS[0]);
void app_main() ben
while (true) {
for (int i = 0; i < STRANDCNT; i++) {
strand_t * pStrand = &STRANDS[i];
rainbow(pStrand, 0, 2000);
digitalLeds_resetPixels(pStrand);
}
}Release the Beast....
-
Teasüti
nagyúr
válasz Tankblock #7119 üzenetére
Van demo2 is?
Most próbálm kiollózni a minimálisan szükséges részeket a demóból.
De köszönöm a segítséget, két ember is ugyanezen dolgozik épp... Igazán megtisztelő.
Majd mondjátok mivel tartozom ha ezt tető alá tudjuk hozni!Amúgy egyáltalán nem értem miért kell ennyi pointer ide. Amit beillesztettél ciklus is szerintem pont ugyanazt adná pointer nélkül is közönséges változókkal.
[ Szerkesztve ]
-
Tankblock
aktív tag
válasz Teasüti #7120 üzenetére
Hello,
Csak azért vannak a pointerek, mert a 8 csatornát másként teljesen általánosan kezelni nem egyszerű.
A mit miértért, meg javaslom, hogy nézd meg a esp32_technical_reference_manual_en -t. 14.2.1 RMT arcitecture elmagyarázza a HW működést a Remote Controller Peripheral nak.Release the Beast....
-
Teasüti
nagyúr
válasz Tankblock #7121 üzenetére
Mi a különbség ez:
while (true) {
for (int i = 0; i < STRANDCNT; i++) {
strand_t * pStrand = &STRANDS[i];
rainbow(pStrand, 0, 2000);
digitalLeds_resetPixels(pStrand);
}
}...és ez között?
while (true) {
for (int i = 0; i < STRANDCNT; i++) {
rainbow(&STRANDS[i], 0, 2000);
digitalLeds_resetPixels(&STRANDS[i]);
}
}
szerk: semmi... Eredetileg jelölő nélkül értettem, hogy aztán leesett, hogy mint változó értelmetlen volna aSTRANDS[i]
. Azt leszámítva, hogy jelölőket kell átadni a függvényeknek.Miközben írtam a válaszom jött egy felismerés:
két példány létrehozásához jön jól egy objektumnál, ha a teljesen azonos paramétereknek két eltérő memóriaterületet tudunk linkelni. Szóval a régi dilemmámat lehet feloldani így ha jól értem, amikor változókból próbáltam létrehozni több példányt: pl buffer1[], buffer2[] és e helyett lehet ugyanazt a buffer[] változónevet használni pointer-ként, egy amolyan shift register módon. Ez a gondolatmenet nagyjából köszönőviszonyban van a valósággal?Vmint az RMT külön lefoglalt ram területekről dolgozik. Értem. Ha erre céloztál. Ez lesz a puffer szerintem, az viszont külön téma a library-ben:
// Pack pixels into transmission buffer
if (ledParams.bytesPerPixel == 3) {
for (uint16_t i = 0; i < pStrand->numPixels; i++) {
// Color order is translated from RGB to GRB
pState->buf_data[0 + i * 3] = pStrand->pixels[i].g;
pState->buf_data[1 + i * 3] = pStrand->pixels[i].r;
pState->buf_data[2 + i * 3] = pStrand->pixels[i].b;[ Szerkesztve ]
-
Tankblock
aktív tag
válasz Teasüti #7122 üzenetére
Hello,
Ha jól értelmezem a kódot, akkor a
Ebben a structban csak a pixelek színkódjait tárolja:
pState->buf_data[0 + i * 3] = pStrand->pixels[i].g;
pState->buf_data[1 + i * 3] = pStrand->pixels[i].r;
pState->buf_data[2 + i * 3] = pStrand->pixels[i].b;Majd a library ban a
static void copyToRmtBlock_half(strand_t * pStrand);
másolja be a átváltás után HW memóriába:
RMTMEM.chan[pStrand->rmtChannel].data32[data32_idx].val = pState->pulsePairMap[bitval].val;
majd ezt frissíti az interruptban, ahogy kiküldte ameit kell.
Release the Beast....
-
Tankblock
aktív tag
válasz Teasüti #7124 üzenetére
Muszáj, mert W2812b protokolja így néz ki:
https://cpldcpu.com/2014/01/14/light_ws2812-library-v2-0-part-i-understanding-the-ws2812/
szóval azokat RGB koordinátákat egy időbeni eltolásos protokollá kell traszferálni. A Remote Kontroll struktúrája pedig addr0 level [31] period [30:16], level [15], period [14:0] ábrázoással kell tárolni.
level bit 0v1
period hossza amíg ki kell tartani....ezt kombinálva 1 bitet 32 biten kell tárolni W2812b protokollja végett.
Release the Beast....
-
BTminishop
aktív tag
üdv
Két olyan eszközt szeretnék majd használni, amikhez szükséges SPI?
Ez lehetséges Mega 2560-on, valaki csinált már ilyet?
köszi előre.
-
Janos250
őstag
válasz Tankblock #7119 üzenetére
Ki, de kiakadt.
A demo2 már sokkal logikusabb.
Teasüti, azt nézd!
https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers/tree/master/esp-idf
Ezt a részét tedd a setupba:
gpioSetup(16, OUTPUT, LOW);
gpioSetup(17, OUTPUT, LOW);
gpioSetup(18, OUTPUT, LOW);
gpioSetup(19, OUTPUT, LOW);
if (digitalLeds_initStrands(STRANDS, STRANDCNT)) {
ets_printf("Init FAILURE: halting\n");
while (true) {};Ezt meg a loopba:
for (int i = 0; i < STRANDCNT; i++) {
strand_t * pStrand = &STRANDS;
rainbow(pStrand, 0, 2000);
digitalLeds_resetPixels(pStrand);
}Minden egyéb mehet az elejére a setup elé.
A millis() és a delay() deklarációját kommentezd ki!
Innen:
https://github.com/MartyMacGyver/ESP32-Digital-RGB-LED-Drivers/tree/master/arduino-esp32/demo1a
esp32_digital_led_lib.h és a esp32_digital_led_lib.cpp fájlpkat másold be oda, ahol a programod van.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Teasüti
nagyúr
válasz Janos250 #7127 üzenetére
Idáig már magam is visszafejtettem a demót.
Amit pillanatnyilag nem értek, az a pStrand használata:digitalLeds_updatePixels(pStrand)
Azt próbálom kisilabizálni, hogy ez egészen pontosan mire is hivatkozik és vhogy át kéne neki adnom a saját byte tömbömet, amiben a pixeleket tárolom globális változóként.
Nem szeretném a demóban lévő rainbow-t használni, az csak példa értékű.
A saját függvényeimet kell átírnom, hogy pointer-t használjanak, vagy pedig kell egy apró függvény, ami az általam alkalmazott byte tömbből csinál mutatót, amit át tudok adni adigitalLeds_updatePixels()
függvénynek.
Ha egyáltalán így működik a pStrand. Amíg nem tudom mire mutat... Egy tömbre? Vagy egy objektumra a STRANDS[] elemei közül? Vagy hogy tudom elérni közvetlenül az egyes pixeleket, amire mutat?[ Szerkesztve ]
-
Tankblock
aktív tag
-
Teasüti
nagyúr
Próbálom visszakövetni a forráskódot hol lehetnek a pixelek eltárolva.
Ha megnézem a
digitalLeds_updatePixels(strand_t * pStrand)
kódját a .cpp fájlban, akkor ebből apState->buf_data[0 + i * 3] = pStrand->pixels[i].g;
pState->buf_data[1 + i * 3] = pStrand->pixels[i].r;
pState->buf_data[2 + i * 3] = pStrand->pixels[i].b;
rész érdekes nekem. Az itt lévőpixels[]
az lesz, ami a STRANDS[] objektumban van definiálva.Aztán ott van egyszer a szalag definíció a programban:
strand_t STRANDS[] = { // Avoid using any of the strapping pins on the ESP32
{.rmtChannel = 1, .gpioNum = 17, .ledType = LED_WS2812B_V3, .brightLimit = 32, .numPixels = 93,
.pixels = nullptr, ._stateVars = nullptr},Csak tippelek, de a
.pixels
az az ami érdekes lehet nekem.Ez a .h fájlban így néz ki:
typedef struct {
int rmtChannel;
int gpioNum;
int ledType;
int brightLimit;
int numPixels;
pixelColor_t * pixels;
void * _stateVars;
} strand_t;Itt a
pixelColor_t * pixels;
amit keresnem kell.
Felette meg is vannak az egyes komponensei a pixeleknek:inline pixelColor_t pixelFromRGB(uint8_t r, uint8_t g, uint8_t b)
{
pixelColor_t v;
v.r = r;
v.g = g;
v.b = b;
v.w = 0;
return v;
}Már csak a pStrand maradt hátra az egyedüli elemeként a puzzle-nak, amit még nem egészen tudtam lekövetni, mi hogy mikor és hol kerül meghívásra.
Jelenleg úgy sejtem a*pStrand
az lényegében egy&STRANDS[i]
lesz. Na megyek alámerülni megint...szerk: oh ba.meg MEGVAN! Hisz ezzel indul a függvény meghívás a loop()-ban.
for (int i = 0; i < STRANDCNT; i++) {
strand_t * pStrand = &STRANDS[i];
rainbow(pStrand, 0, 2000);
scanner(pStrand, 0, 2000);
digitalLeds_resetPixels(pStrand);
}
Azt hittem ez globális lesz, mert mindenhol előfordul ez a név.
Közben meg ha jól értem, akkor a loop() deklarálja és innen kerül átadásra a függvényeknek, ahol meg újra lesz deklarálva helyi változóként minden egyes függvényben külön-külön.Akkor azt hiszem ezzel a helyére került minden eleme a puzzle-nak.
Elméletben. Jöhet a gyakorlat...[ Szerkesztve ]
-
Teasüti
nagyúr
válasz Tankblock #7129 üzenetére
Őőő kicsit el vagyok tévedve. Még mindig nem fog menni.
Már az sem megy, hogy hogy tudom lekérni ennek a STRANDS[] tömbnek az egyik elemét.
Hibát dob a compiler ezek mindegyikére:STRANDS[0].numPixels;
&STRANDS[0].numPixels;
&STRANDS[0]->numPixels
És a maradék kombinációra.Próbáltam így is:
strand_t * strands [] = { &STRANDS[0] };
strands->numPixels;
Így se jó.
Kezdek ideges lenni...
Keresnék a neten, de azt se tudom ez melyik témakör, vagy mit keressek.
Object array-ra kicsit más találatok jönnek ki, vagyis többnyire olyan példák, amiben a tömb elemeinek csak egyetlen paramétere van.A demo1-ben ami alapján próbálkozom meg rohadt nehéz átlátni, hogy az függvények miket adnak át egymásnak: pointer-t, objektum tömböt, pointer-ből álló tömböt, stb.
[ Szerkesztve ]
-
Tankblock
aktív tag
válasz Teasüti #7132 üzenetére
for (int i = 0; i < 1; i++) {
strand_t * pStrand = &STRANDS[i];
pStrand->pixels[0] = pixelFromRGB(50, 50, 50);
digitalLeds_updatePixels(pStrand);
}Egy próbát megér.
A topic a C és a pointerek....
Szerk, ups wrong button -> kód updated...[ Szerkesztve ]
Release the Beast....
-
-
Teasüti
nagyúr
válasz Teasüti #7139 üzenetére
Hmm úgy néz ki itt vmi típushiba van, ahol ezt alkalmazni szerettem volna.
Más helyen aSTRANDS[i].numPixels
szintaktika működik.
Viszont változó deklarációnál nem veszi be:byte buffer1[(int)STRANDS[0].numPixels * 3] = {};
Erre dobja a hibát:
array bound is not an integer constant before ']' token -
Teasüti
nagyúr
-
Megírtam a 'kitt' led villogtatást for ciklussal. Amit nem értek, hogy miért nem írja ki a 0-át. Csak akkor írja, ha az összes számjegy aktív.
#include <TM1638.h>
TM1638 module(8, 9, 10); // define a module on data pin 8, clock pin 9 and strobe pin 10
int szam; //led száma ami világít
int a; //segédváltozó a for ciklushoz
void loop() {
// put your main code here, to run repeatedly:
kitt();
}
void kitt() {
for (a=0; a<8; a++)
{
ledek();
}
for (a=6; a>0; a--)
{
ledek();
}
}
void ledek() { //Figyelem! A ledek számozása 0-7!
szam=a;
module.setDisplayToDecNumber(a,0,false); //1-es a tizedes vessző, true az összes számjegy elvileg
module.setLED(TM1638_COLOR_RED, szam);
delay(200);
module.setLED(TM1638_COLOR_GREEN, szam);
}
Közben leesett, hogy igazából elég lenne az 'a' változó is.[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
Spuri2000
senior tag
Sziasztok
Egy kis segítséget szeretnék kérni.
Nemrég kezdtem ismerkedni az arduinoval ezért kérem nézzétek el ha nagyon alap dolgokat kérdezek.
Két nyomógombbal két Ledet szeretnék villogtatni úgy hogy ha benyomom az elsőt akkor az elkezd villogni és ha benyomom a másodikat akkor az is elkezd villogni. Ezt a két folyamatot szeretném egymástól függetlenül irányítani. Hogyan tegyem?
A delay ugye kiesett, de olvastam valami millisről de az nem tiszta hogyan működik és pontosan mit és hova kell irnom. Ebben tudna valaki segíteni vagy ha van más egyszerűbb akkor azt is örömmel fogadom. -
gyapo11
őstag
válasz Spuri2000 #7144 üzenetére
Írj egy kis programot, ami másodpercenként kiírja a millis() értékét. Ott látni fogod, hogy a millis() folyamatosan működő számláló, 50 nap után fordul át. Másodpercenként 1000-rel nő az értéke.
Ha elteszed a pillanatnyi értéket egy változóba, és utána a loopban folyamatosan hasonlítod a változót a pillanatnyi millis()-hez, akkor amikor a különbség elérte az 1000-et, akkor eltelt 1 másodperc.
Azt nem írtad hogyan akarod a gombokkal villogtatni a ledet. Addig, amíg nyomod, vagy egy nyomásra kezdjen villogni, második nyomásra hagyja abba.
Rákötöd a gombokat egy-egy bemenetre, és a loopban beolvasod, hogy meg van-e nyomva valamelyik, amelyik igen, az annak megfelelő változóba beírsz egy 1-est, ez jelenti, hogy a lednek villognia kell, ha 0 van benne, akkor nem villog.
A loopban vizsgálod ezeket a változókat, és az értéküktől függően villogtatod vagy nem a megfelelő ledet.menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
Janos250
őstag
válasz Teasüti #7140 üzenetére
Elnézve a macerát, kezd az az érzésem támadni, hogy igaza volt annak, aki megírta "gyalog" módszerrel a WS2812 RGB led szalag programozását az ESP32-re, mert az legalább egyszerű, és működik. Mivel nagy a sebesség, és van 2 mag, nem szorít az idő, hogy hardware alapon kezeljük a szalagot, bár kétségkívül az a szebb, ezért meg kellene próbálni, valami egyszerűbb, áttekinthetőbb megoldást találni rá.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Ez alapján a kép alapján összekötöttem az alkatrészeket. Annyi a különbség, hogy csak 2 motor van, szervo sincs, és csak 4db 2300mAh AA aksi. Az ég világon semmi nem történik. Előtte az arduinóra rátöltöttem a programot ami a codemahal oldalán van.
A motorok jók, az arduino is működik ha közvetlen arra kötöm az elemtartót. Hibás esetleg a motor vezérlő? Motorok nélkül is néztem, akkor se történik semmi. (tuti nem kap áramot az arduino, mert nem is világít egyáltalán). Ha csak simán a motorvezérlőre adok áramot, akkor el kéne indulnia a motoroknak, vagy lehet tesztelni valahogy, hogy működik-e?
ps: Látom elvileg villágítania kéne egy lednek rajta... hát ezen semmi nem világít.[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
2 ilyen kis motort+ultrahang szenzort+bluetooth vezérlőt elbír motorvezérlő nélkül az uno? Látni akarom végre ahogy gurul ez a kis rohadék kínai selejt... 3 hét mire ideér a következő motorvezérlő, de az már L293d. Ez a L298N döglött.
[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
Teasüti
nagyúr
válasz Janos250 #7146 üzenetére
Megcsináltam, működik. Fasza. Azóta életre keltettem a BLE UART-ot is, ami notify() és write() funkciókkal tud csak működni, ami a klasszikus BT-re hajaz, de a fogyasztás nem szempont.
Igazából a hardver több fejfájást okozott, mint a dokumentáció nélküli library.
Ha követed a hobbi elektronika topikot, akkor láthattad mekkorát sz.ptam a szalagok vezérlésével és az állandó boot loop-pal. -
nagyúr
Sziasztok! Nincs vkinek szüksége egy nagy halom 1.27mm-es JST csatlakozóra, készre szerelve 15cm-es vezetékkel +aljzat? Elnéztem a méretet rendeléskor...
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest