Hirdetés
- iPhone topik
- Vége a dalnak: leállt az iPhone Air gyártása
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy A52s 5G - jó S-tehetség
- Miért fárad gyorsabban az iPhone akku, mint az androidos?
- Poco F3 - a mindenes, de nem mindenkinek
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Yettel topik
- Beárazták a Nubia Z80 Ultra európai verzióját
- Xiaomi 15T - reakció nélkül nincs egyensúly
-
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
-
Tankblock
aktív tag
válasz
agent_k
#19761
üzenetére
Szia,
N-channellel Low side tudsz kapcsolni "önmagában".
A high side-ot kapcsolnám (azaz a tápoldalt) a projectedben, nehogy valahol másfele elfolyon az áram....- Vagy egy high side drivert keresel a N-Channelhez,
- vagy P-channel logic level mosfetet használsz, mondjuk egy 100k ellenállással felkötöd a Gatet a tápra, majd földre rántod amikor kell. -
Tankblock
aktív tag
válasz
gordonfreemN
#19638
üzenetére
Szia
A kérdés hogy gyorsan portolható megoldást keresel, mert akkor célszerű maradni az Arduino világban így könnyebben tudsz a uC között váltani,
vagy adott uC családot szertenél megtanulni.avr/sleep.h regiszter szinten állítja be közvetlenül az Atmega (AVR család) sleep módba, hozzáteszem a megfelelő regiszterek írásával te is megírhatod, ennek a megoldásnak az lesz az előnye h hatékony kódod lesz (nem forgatod bele az overheadet amit az Arduino okoz), hátránya hogy hosszabb lesz a betanulási görbe.... nemc csak a sleep van ott :-)
Microchipnek van tutorial oldala is: [link]
Amit látsz mint Arduino az egy univerzális wrapperbe csomagolt kód ami elfedi a uC sajátosságainak a nagy részét.
Mint minden ilyen megoldás hatékonyságvesztéssel jár, cserébe gyorsabban tudod alkalmazni egy másik uC családon a megírt kódot. Nem beszélek azokról az esetekről amikor 2 könyvtár ugyanazt a hw erőforrást használná és összeakad, szóval a hw arhitectúra nem ismerete okozni fog hátrányt.Power led nem 1mA lesz inkább 10-20mA. Lehet venni cél LED ami megvalósítja amit szeretnél, vagy megépítheted egy 555 időzítőből is.....
-
Tankblock
aktív tag
válasz
gordonfreemN
#19635
üzenetére
Szia,
nem vagyunk gondolatolvasók (sajnos),
kérdésem az lenne, mi lenne a cél amit el szeretnél érni?Ha csak ideveted a gondolataid felét, nem lesz senki aki segíteni tud, mert mindenki csak találgatni fog. Egy problémára meg van több megoldás.
Küldtem DataSheetet linket abban benne van a ennek a uC a működése.A kódodat feltehetnéd Gitre is publicusan akkor meg tudjuk nézni azon a linken amit ide teszel, és nem kell a fórumot teletenni kóddal

További jó hobbyzást!
-
Tankblock
aktív tag
válasz
gordonfreemN
#19625
üzenetére
Szia,
próbálok segíteni..
"ArduinoLowPower.h" ill "LowPower.h" telepíteni kell Könyvtárkezelőből.
Mi a különbség? --> mások írták, saccra ugyanazt lehet elérni velük.
A végén AVR registereket írja át úgy hogy a PowerMode különbféle sleep állapotba kerüljön."Lehetséges 9-es pinről is feléleszteni energiatakarékos módból, vagy csak a dedikált interrupt 1-2 lábakon?" --> csak interrupt láb lehet ebből a Atmega328 nak 2 van....
"A loop az energiamegtakarításkor i folyamatosan fut, vagy ilyenkor csak az interrupt lábat figyeli és ha azon bejön a megszakítás akkor feléled?" nem fut, csak az interrupt vector változásakor éled fel uC és fut tovább a loop kódja.
ebben találod a Power Mode, Reset interrupt handlig leírását...
-
Tankblock
aktív tag
Szia
https://github.com/indrekluuk/LiveOV7670/blob/master/CMakeLists.txt
és a .gitignore filaban benne van a szépség:
https://github.com/indrekluuk/LiveOV7670/blob/master/.gitignore
nem tölti fel gittre a sajár CMake fileját ..... modjuk ez lehet a Visual Code + PlatformIO végett van, ebben nincs tapasztalatom....idea
# ignore files generated by "platformio init"
src/.idea
src/.pioenvs
src/.gitignore
src/.travis.yml
src/CMakeLists.txt
src/CMakeListsPrivate.txt
/cmake-build-debug/CMake írja le mit hol kell keresnie a fordítónak és a linkelőnek.
Make után amikor a esp-idf átváltott CMake re a hajamat téptem egy darabig mire megszoktam. -
Tankblock
aktív tag
válasz
daninet
#19086
üzenetére
Szia
a vezérlőn az egy 555 Timer IC és véletlenül nem a poti helyét próbálod meg PWM ezni? Sajna a fotón nem látszik....A OUTPUT állítása után írjál rá ki a pinre 0 át.
Másik megoldás h felparaméterezed az egyik timert PWMre és elhagyod a jól megszokott arduinot és rendes C ben megírod....
-
Tankblock
aktív tag
Szia,
Például a manuál elolvasása sokat segít:
[link] itt a User Manual.Nincs ilyen függvény definíció....
// töröltem a Manual sorait....
Szóval a megfelelő fv alkalmazása segít.
RMSVoltageMeannek amyGLCD.printNumF(RMSVoltageMean , dec, x, y[, divider[, length[, filler]]]);..... -
Tankblock
aktív tag
Szia,
De bele tudsz írni bőven ha a sketch Program flash része túl nagy, mivel a BootLoader a Flash végén helyezkedik el : [link]
Ha jól sejtem ISP-n keresztül ha letöltesz egy bootloadert meg egy üres scketchet menni fog.
Nem csak Arduino bootloader létezik, van sokkal kisebb is, és ha elfelejted magát az arduinot akkor még több mindent tudsz belepréselni ugyanabba a mennyiségbe...... -
Tankblock
aktív tag
válasz
Wolfram
#18781
üzenetére
Szia
csatlakozom az előttem szólokhoz, mi a feladat?
Mi a 2 szenzor, mekkora range?Opció 1:
Analog switch 4066BE csak egy példa vannak sokkal modernebbek is. Aztán váltogathatsz a bemenetek között...
Opció 2:
egymás fölé eltolni a 2 jelet pl 0-0.5V első szenzor, 0.51-1V második szenzor majd összeadni. De ez lehet rosszabb megoldás....Opció 3: külső ADC akár SPI on
-
Tankblock
aktív tag
válasz
ViZion
#18679
üzenetére
Szia,
jónak tűnik. Amit találtál az ugye autós környezetben van, és ott a GND loss vagy a parazita ellenállás bármikor felütheti a fejét.
leválasztott 5V egy ledszalag esetén szerintem nincs szükség.
Ezzel a megoldással ha megkotlik a FET akkor a vezérlőd még továbbra is élni fog. akár vissza is mérheted a 12V ágban folyó áramot így megtudod mondnai h működik-e vagy sem....
-
Tankblock
aktív tag
válasz
alfa78
#18557
üzenetére
Szia
magánvéleményem szerint ez nem a jó út, ha ennyire nincs időd....
töredékéért vehetsz egy Wifi képes termosztátot ami fele ilyen veszélyes.Google 1 találata: [link] szállítással 30 eHUF.
A másik út HUB 13K okos connector 13k hőmérő 7k Relé 601 HUF ([link]) + Doboz vezeték munkaidő
tényleg ezt szeretnéd? -
Tankblock
aktív tag
válasz
Wolfram
#18396
üzenetére
Szia,
Mit szeretnél? Opcióból nincs hiány....
- Hostolhatsz weblapot/websocketet amin keresztül tudod GPIO vezérelni --> onnan a rádiódat
- készíthetsz másik távot ami ESPNOW protokollon keresztül küld üzenetet az elsőnnek amelyik gombot lenyomtad kiküldi mint üzenet aztán ha nem jön több gombnyomás deep sleep....
- IR receiver boardot már látom belinkeltékezeket egyszerre is meg lehet csinálni....
-
Tankblock
aktív tag
válasz
ViZion
#18121
üzenetére
Szia,
Ha a relé egy normális pl OMRON márka akkor hagynám azt, mert fizikailag leválaszt.
Ha az a probléma hogy aktív low akkor egy invertert tegyél elé és készen is vagy. Opamp/komparátor negatív bemenetére kötöd a GPIO-t valami ellenállason át, +5V single supply hajtod a komparátort akkor egy Rail-to-rail ki is fog jönni belőle a szükséges jeled.
Elenállás osztót kell jól belőni.
Némi videó hozzá:
[link] -
Tankblock
aktív tag
válasz
daninet
#18060
üzenetére
Egyszerű mint az egyszeregy....
Ha egyfajta paraméter van akkor kétdimenziós tömb, ha sokféle akkor struktúrákat tartalmazó tömböt használsz. Az elején az állapotgépednek megfelelő paraméterekkel inicializálod.Majd kiolvasod a bemeneteidet ami kiválasztja az állapotgéped állapotát azaz a tömb 1 sorát.
Ezt használod a függvényeidhez mint paraméter.Remélem hogy érthető így :-)
-
Tankblock
aktív tag
válasz
daninet
#18045
üzenetére
// init parameters
int aiParameters[3][5] = {
{1,2,3,4}, // switch state 1
{5,6,7,8}, // switch state 2
{9,10,11,12} // switch state 3
};
// Ha különbozők kellenek akkor marad a struct
struct myParameters {
bool isNoGood;
double dRandomValue;
int iIntegerMe;
};
myParameters myParam[] = {
{isNoGood = true, dRandomValue = 0.0, iIntegerMe = 1},
{isNoGood = false, dRandomValue = 0.1, iIntegerMe = 2},
{isNoGood = true, dRandomValue = 0.2, iIntegerMe = 3}
};
int giSwitctState = 0;
giSwitctState = ReadSwitch();
// itt hívódik 1x ami kell
funcPntr_set(aiParameters[giSwitctState][0],aiParameters[giSwitctState][1],aiParameters[giSwitctState][2],aiParameters[giSwitctState][3]);
//vagy itt
funcPntrMagic_set(myParam[giSwitctState].isNoGood);Na valami ilyenre gondoltam....
A sok ifből generált jumpok helyett egy sorfolytonos dolog lesz. Bővíteni nem nehéz, remélem átmegy a lényege. Esetenként nézd meg melyik mekkora kódot generál. If else megoldás és ez.... -
Tankblock
aktív tag
válasz
ViZion
#18040
üzenetére
Szia
Őszintén ESPEasy vel sohasem foglalkoztam, szerintem egy csőtermosztáttal többre mész.
Az se biztos hogy csak 1 hőmérőre bíznám magam.
Ugye nem gázkazán?Ha sima kályha én az előremenő víz hőmérsékletét nézném és 50 fok felett keringetném, hogy ne hűtse le, mert akkor kátrányosodik gyorsan.
-
Tankblock
aktív tag
válasz
daninet
#18041
üzenetére
Szia,
nem az a lényeg hogy spóroltál-e, vagy sem.
A jó arhitechtúrának nem az a célja hogy spóroljunk.
Átlátható-e, és bővíthető-e más elemekkel ha szükséges később, pl 4 állapotra, vagy még egy változó kezelésével.
Ha előveszed 1 év múlva mennyi időt fogsz a kódod megértésével tölteni...
Itt jön elő az hogy milyen a kód minősége.
Nem állítottam hogy spórolsz vele, csak azt hogy olvashatóbb lenne.mint írtam csak próbálok segíteni.
-
Tankblock
aktív tag
válasz
daninet
#18038
üzenetére
Ha csak 3 eshetőség lehetséges akkor nem látom értelmét az egész if else résznek.
Olvashatatlan.....Hozzáteszem szerintem egyszerűbb lenne ha egy tömbbe beletennél az egész változó kavalkádot és a pinek kilovasása után a tömb azon elemét címeznéd meg ahányadik.....
Majd az így kapott paraméterhalmazzal 1x megtetnéd ugyanazon fvnyeket.....nem lennének átláthatatlan feltételeid.....
Kapcsoló végett nézheted az állapotát csak 50 [ms]enként és probléma megoldva....Csak próbálok segíteni....
-
Tankblock
aktív tag
válasz
Tomika86
#17901
üzenetére
Szia
FreeRTOS esetén pl Queue: [link] lesz az egyik lehetséges megoldás.
Ha Interruptból próbálnád feltölteni, ne feledd a [xQueueSendFromISR] fv használni, vagy szétakadhat.
PRogramban meg QueueMessagesWaiting() fv meg tudod hány elem van a queue ban és a QueueReceive() fvnyel fogsz egyet kiolvasni.....
másik egyszerűbb út az állapotgépeket futatsz egymás után ...
Ha ugye van ign akkor a másik állapotgép is kilép az állapotából -
Tankblock
aktív tag
válasz
tibi-d
#17823
üzenetére
Ha ablakként tekintesz a memóriára és azt indexelve a tömböt körbeforgatod, akkor 2 * 128 byte memóriába vígan meg lehet oldani a 2x 300 adat memóriában tartását és abban a 100 [ms] pedig el tudod kezdeni kiírni SD re mondjuk 2x20 ával, mert akkor 5 * 100ms alatt kiírtad a 100 adatodat, majd megvárni hogy megint 2*100 összegyűljön. A triggerkor meg beszélgethetsz a RTCvel és kiírhatod SDre meg az okot is..
Én fix filenevet használnék és a végére raknám az új adatokat mindig. de kinek mi.
-
Tankblock
aktív tag
Igen, ha csak 2*128 byte is bőven elfér UNOban is.
STM32 nem volt az eredeti felsorolásban :-)nem olyan vészes project ez....
Ha csak a fogyasztás érdekel akkor akár Sonoff POW WiFi is használhatsz, vagy bármit ami méri a dolgok fogyasztását, általában esp82XX va benne és akár TASMOTA is tudja monitorozni.....Az a kérdés hogy hol kell a segítség...
-
Tankblock
aktív tag
válasz
tibi-d
#17814
üzenetére
Szia,
RAMba elfér, ha csak 2x128 mintát tárolsz akkor bőven. Bele kell tenni a SDkártya kezelő és a RTC mennyi memóriát foglal és maradékkal tudsz gazdálkodni.
Én timerre futtatnék ADC-t a két csatornára és értékét memóriába tárolatnám egy counterrel aztán jól van az úgy....ha megtellik akkor kezdi előről.
HA megvan a trigger akkor először RTC olvasás 1x , majd a következő ADC olvasás után kiír valahány értéket egyszerre SD re abban a 100ms ami rendelkezésre áll. Így marad 2X buffernek hely.
Digitálisra meg egy sima ISR fv figyelése egy GPIOnak aztán jól van.....
-
Tankblock
aktív tag
válasz
tibi-d
#17812
üzenetére
Szia
Oszcilloszkóp

beszélgetés indítónak a következők jutottak eszembe:
ha az analog jel felakad folyamatosan a trigger szint főlé akkor mi fog történni?
Mekkora felbontással kellene tárolni az adatokat (8bit elég -e mert 2*300 byte csak maga 600 byte a memóriában vagy csak 2* 100 bytot tárolunk és azt nem tudom mennyi idő kiírni ), illetve ha megtörténik a hiba akkor mind a 2 csatorna kellene hogy mentve legyen?
Hiba után ha megvan a 200 jelszint akkor mennyi mérés eshet ki?
itt lesz fontos hogy mi van akkor ha folyamatosan a trigger szint fölött van vagy az körül ingadozik kicsit alatta, majd kicsit felette akkor mit kell tárolni? -
Tankblock
aktív tag
válasz
gordonfreemN
#17726
üzenetére
Szia
Első blikkre használhatsz
#define-t a PIN definícióhoz...Az EEPROM kiírást gondold át még egyszer, mert első blikkre minden 5 [sec] kiírod, és nem azt csinálod amit szeretnél. Ezzel lassan elhasználod EEPROMOT.... Elegendő ha volt valós change kiírni azt ahol volt change.
Én a gombokat csak interruptból figyelném, ha van változás akkor azt as loopba kezelném, hogy hol vagy a "menüben", és csak a setgomb változására kezdenék neki a funkció szerint a LED ill a relay kapcsolásoknak.
Ha beleásod magad a C++ rejtelmeibe is akkor nagyon sokféle megoldást fogsz találni.
A HW PIN kiosztást lesd meg, - én most nem tettem meg - mert ha egy portra teszed LED és a kimeneteket akkor 1 port írással megúszhatod az egészet.... De ez már csak szépség....
-
Tankblock
aktív tag
válasz
Undoroid
#17727
üzenetére
Szia
A linkelt mikrokapcsolós végállásfigyelést be tudod tenni ....
Szerintem minden infod megvan,A léptetés előtt megnézed, hogy a kapcsoló be van -e kapcsolva, ha igen akkor nem lépsz arra. Ez mind a két irányba működik, és relatíve olcsó. A kapcsoló lehet optokapu is....
Mire lenne még szükséged ?
-
Tankblock
aktív tag
válasz
Undoroid
#17718
üzenetére
Ha az elforgatás mértéke érdekel, akkor annyit kell tudnod, hogy 1 step az hány fok, és azt hogy steppet lépsz vagy microsteppet. --> Motor datasheet segít 1.8 fokos vagy más.
Ugye a microstep az egy step felosztva annyiad részre ahány microstep.
Microsteppet normál esetben csak motorvezérővel fogsz tudni megoldani, annke ez paramétere lesz valahol....Ezek után ha tudod a loop elején h jobbra vagy balra forgatod a steppert, ki tudod számítani a fokot is... Az LCDre kiírod majd kiadod motornak a forgás fvg h merre is csináljon mit....
-
Tankblock
aktív tag
válasz
Harcipocok84
#17644
üzenetére
Sajna nekem nincs, csak 1280 ICm van vagy 5 db eltettem rossz időkre és hát lassan eljön...
-
Tankblock
aktív tag
válasz
Harcipocok84
#17517
üzenetére
Szia,
alternatíva : [link] p-FET + 100k ellenállás + 10V Zener a biztonság végett (mármint a FET biztonsága végett.) A Load helyére kötöd az ellenállás osztót, Arduinot, ....
Fordított polarítás esetén szépen kikapcsol a FET . Esetleg ebben az irányban lehet visszajelző LED betenni és akkor látszik a hiba....
-
Tankblock
aktív tag
válasz
Killer man
#17454
üzenetére
Szia,
Ha csak az USB-t kötöd rá, van visszajelző power led?
Amikor az elszállás azért történt, véeltlen nem 2 helyről tápoltad?
Akkor tud olyan vicceset csinálni, hogy nem csak a serial chip esik áldozatul, hanem a schottky dióda is.... Általában vizuálisan látszik is.... -
Tankblock
aktív tag
válasz
tonermagus
#17418
üzenetére
Szia,
egyet tudok mondani, hogy chiphiány van így mindennek felfele megy az ára.
ESP meg egyre több okos kütyübe teszik, így a kereslet megy felfele....Vannak kisebb ESP32 devboardok amin csak max USB to Serial van meg 2x 2 sor tüske.
Ami nekem van belőle az 49*47 mm, de szerintem van kisebb is...[link] valami ilyesmi, sajna az oldalon nincs fennt a fizikai méretei. Ezen úgy is lehet olcsósítani, hogy magadnak tervezel egy boardot....
De találtam másikat is : [link] 31 x 39 mm
-
-
Tankblock
aktív tag
válasz
Tomika86
#17338
üzenetére
Ha olyan típusút választasz akkor igen.
Amit néztél annak is több verziója van, oylat nézz ami a 1.8V - 5V működik.
Csak Pull-up lehet húzni, ha pull down kell azt kívülről szükséges megoldani.
Van benne interrupt ami hasznos.Sima ledek, optók, stb működtetésére simán. Ha gyorsan kell akkor csakis SPI al.
-
Tankblock
aktív tag
válasz
Tomika86
#17329
üzenetére
Szia
nézd meg hogyan is használod, ahogy nézem pont belenyúltál abba a 2 lábba amik a boot meghatározzák:
GPIO2 must also be either left unconnected/floating, or driven Low, in order to enter the serial bootloader.
GPIO12:
If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is used and this pin is pulled high, causing the flash to brownout. See the datasheet for more details.Mi van akkor ha hanyagolod ezen lábakat?
-
Tankblock
aktív tag
Anno játszottam a Touch bemenettel, emlékeim szerint egy tresholdot kellett állítani és ahhoz képest mérte h van-e érintés vagy nincs ---> töltés és kisütés ciklusokat végzett abból kalkulált. Hát nekem nem volt megggőző, egy touch sensor internetről simán jobb eredményeket hozott, igaz felületekkel nem kísérleteztem.
ha csak ON-OFF kapcsoló kell akkor infrakapu közé meg betenni egy fizikai gátat a pedál által aztán kész is....
PLehhez hasonlót lehet bontani is nyomtatókból :
[link]bár a követelményed ellent mond a csendességnek....
-
Tankblock
aktív tag
válasz
Tomika86
#17211
üzenetére
ESP-IDF (ESP32 wroom ha jól emlékszem) c++ ban Arduino nélkül, Eclipse alatt :-)
az InitNextion() Fv felparametrizálja a 2.v3. UART drivert ESP32 ön a Nextionnak megfelelően - Hozzátenném, hogy a nextiont is át kell configolni magasabb baud rate - re, mert alapból csak 9600 bps.
A sendData fv az alap UARTra logol és a Nextion UARTnak meg kiküldi a megkapott stringet.
végül egy taskban ahol szükséges szépen stringet összerakom és ahogy látod a templateneél meg van írva a .to_str() fv ami lehetővé teszi a const char * tudjak átadni a sendData fvnek :-)
Ebben a projectben pl nincs Arduino és nem is szeretnék. FreeRTOS+ MQTT van még ebben a projectben használva, az tuti h át kell még írnom párszor, de egy ilyen hőmérő + világítás kapcsoló már fut az asztalomon 3+ éve.
Szedd le az ESP-IDF és a example mappában benne van szinte minden, "csak" össze kell rakni saját tetszés szerint.
Egyre rájöttem a Nextionból a RTC részért még 1x nem fizetek, mert az enyémben nincs a hőmérséklettel kikompenzálva és sosem mutat helyes időt....
-
Tankblock
aktív tag
válasz
Janos250
#17208
üzenetére
char endData[] = {0xFF,0xFF,0xFF};ez akár még működhet is....using namespace std;
template < typename Type > std::string to_str (const Type & t)
{
std::ostringstream os;
os << t;
return os.str ();
}
csakhogy meglegyen a fvnyek:
(CODE)void initNextion() {
const uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE
};
uart_param_config(nUART, &uart_config);
uart_set_pin(nUART, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
// We won't use a buffer for sending data.
uart_driver_install(nUART, RX_BUF_SIZE * 2, 0, 0, NULL, 0);
}
int sendData(const char* logName, const char* data)
{
const int len = strlen(data);
const int txBytes = uart_write_bytes(nUART, data, len);
ESP_LOGI(logName, "Wrote %d bytes\n", txBytes);
ESP_LOGI(logName, "#%s#\n", data);
return txBytes;
}(/CODE)
string store ="";
store += "page2.valami.val=";
store += (x.sData=="ON") ?"1":"0";
store += endData;
sendData(TX_TASK_TAG, store.c_str());ezt használtam home projectben, működik
-
Tankblock
aktív tag
válasz
Tomika86
#17203
üzenetére
mivel nem látom a teljes kódot addig annyit tudok mondani:
void endData(void) {
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}
és ezt mindenhova ahol aSerial2.write(0xff);hármas vanés ahol ezt használod:
if (izzitas_be) {
Serial2.print("vis p15,1"); // Izzítás lámpa bekapcsolása
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}
else {
Serial2.print("vis p15,0"); // Izzítás lámpa kikapcsolása
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);
}helyette:
if (izzitas_be) {
Serial2.print("vis p15,1"); // Izzítás lámpa bekapcsolása
}
else {
Serial2.print("vis p15,0"); // Izzítás lámpa kikapcsolása
}
endData();Így is úgy is ki kell küldeni a Nextionnak a lezárást ....
-
Tankblock
aktív tag
válasz
Tomika86
#17192
üzenetére
Öszintén csak céged van, de keress rá a Flow vagy flow chart Diagram-ra
A másik lehetőség az UML, csak akkor ha tanultad....Minden elemet felveszel és sorrendben végigmész . setup, loop, interruptok. majd a dobozokat nyilakkal összekötöd mi mi után jön, elágazásokat felveszed Igaz hamis irányokkal....
A lényeg h programod egy reprezentációja legyen amit esetenként könnyebben átláthatsz.
Ha talűlsz ismétlődést, logakia bukfencet akkor javítod. -
Tankblock
aktív tag
válasz
Tomika86
#17190
üzenetére
Tapasztalatból mondom ha egy lapra felrajzolod a software arhitektúrát ahogy most működik az sokat segít. A szakdolgozatodba is be tudod tenni.
Ha valamit duplán chekkolsz, az ilyenkor kiderül, mert az nem jó.
vagy valamit sokszor abból lehet saját classba refraktorálni pl... -
Tankblock
aktív tag
válasz
Tomika86
#17172
üzenetére
Szia,
Mérd meg sizeof() fv nyel amit linkeltél structúra 1 byte hosszú lesz a definíció végett
struct {
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
} Bit;Ez tutira 1 byte tárolódik és 3 bitnek van referencia neve:
struct {
unsigned int b0:1, b1:1, b3:1;
} Bit;Reference:[link]
HA többet definiálsz mint 8 bit akkor értelem szerűen nő a structúra mérete is.
Próbáld ki ... -
Tankblock
aktív tag
sizeof()függvény megadja a választ.A legkiseb egység ami foglalódik a memóriában az a byte lesz. C++ meg lehet mondani melyik bit halmazát minek is szeretném elnevezni. Gondolom fordítási időben bit arithmetikával/bitmaszkkal a helyére shifteli mindenhol....
önmagában a
unsignedkulcsszó csak egy típus modosítás [link] és nem típus. Az egy másik kérdés, hogy miért nem ad rá warningot/errort. -
Tankblock
aktív tag
válasz
Tomika86
#17162
üzenetére
Azt nem tudom hogy tisztában vagy e azzal, hogy Compiláció során mi történik.
Első lépések egyikében a #define string ahol megtalálja a kódodban bemásolja a neve utáni részt, a fennt linkelt kódban nincs Fv hívás sehol.
Megfelelő fordíási opciók után a megkapott assembly file egyező lesz.....Az unsigned gondolom Arduino alatt intre castol, gondolom warning van, max el van nyomva. Nem szerencsés akkor se.
-
Tankblock
aktív tag
válasz
Tomika86
#17160
üzenetére
Szia,
unsignedután nem maradt le a változó típus dekraláció véletlen plint?Én a helyedben a If statementben vizsgálnám h mi van benne pl <1 vagy valami....
Standard struktúra működik c ill c++ alatt nincs benne semmi esp32 specifikus, vagy nem értem a kérdésed lényegét.
A kérdésed második felére hoznál fel példát? Mitől lenne a Makró gyorsabb és a Fv kevesebb memória?
-
Tankblock
aktív tag
válasz
Tomika86
#17144
üzenetére
Szia
Röviden igen,
Használj Microchip studiot, és tanulj meg Datasheetet és Application Manualt olvasni és megszabadulhatsz az Arduino overheadtől,
- másik oldalról meg a kódod a különbféle uC között nem lesz könnyen portolható.Választhatsz mit szeretnél - hatékonyságot és ezzel uC specifikálódást vagy gyors portolhatóságot.
-
-
Tankblock
aktív tag
-
Tankblock
aktív tag
Nem a programozó írja meg ugyanazt a fv, structúrát, classt, többféle típusra, hanem fordítási időben hozza létre a template alapján, ahogy a deklaráció(k) vannak. megelőzhető egy csomó copy-paste error ha használná az ember int, float,.... típusokkal ugyanazt....
A legtöbb standard library is így van megírva.Operator overload is standard c++,
Általában igaz, hogy illik tudni mi történik, mert jöhetnek a meglepetések... -
Tankblock
aktív tag
Szimpla c++ template megvalósítása a mozgó átlagnak, és némi fv operátor ....
Semmi extra, egy N elemű tömböt hoz létre és azt addig tölti fel adatokkal amíg nem éri el a megadott méretet, utána meg szépen kicseréli a legrégebbit a legújabbra, és számolja közben a mozgó átlagot.Lehet float, double, bármi ami szimpatikus....
C++ én így szeretlek..... -
Tankblock
aktív tag
válasz
Tomika86
#17069
üzenetére
template <typename T, typename Total, size_t N>
class Moving_Average
{
public:
Moving_Average& operator()(T sample)
{
total_ += sample;
if (num_samples_ < N)
samples_[num_samples_++] = sample;
else
{
T& oldest = samples_[num_samples_++ % N];
total_ -= oldest;
oldest = sample;
}
return *this;
}
operator double() const { return total_ / std::min(num_samples_, N); }
private:
T samples_[N];
size_t num_samples_{0};
Total total_{0};
};Moving_Average<double, double, 3> ma;
for (int i = 0; i < 10; ++i)
std::cout << (i * i) << ':' << ma(i * i) << ' ';
std::cout << '\n';Igen megoldható.... [link] Google is segít.
Inkább a cppreferenct kellene linkelni : [link] -
Tankblock
aktív tag
válasz
gyapo11
#16936
üzenetére
Nem tudjuk mi a célfüggvény, csak találgatunk. Természetesen 12 V esetén nem ok.
Én nem vagyok híve az egy ellenállásnak, mégpedig azért mert ha 1 LED elhalálozik, akkor a többlet áram a másik 4 LEDen fog folyni, amitől azok is szépen egyesével megfőnek....Csak halványan merem leírni, hogy az elején én POWER LED láttam a szemem előtt amit 3A kellene maxban hajtani és dimmelni, már fejben összedobtam egy PWM bemenetes áramnyelő kapcsolást.....
-
Tankblock
aktív tag
válasz
tonermagus
#16932
üzenetére
Szerintem túlgondoltam a projectet....
Ha 5 LED van akkor miért kell neked 12V + FETekkel játszani?
Arduino 5db pin + (5V-3.2V) /0.02 A = 100 Ohm ellenállás aztán mehet az AnalogWrite fnc.
12V esetén nem 100 Ohm kell, hanem (12-3,2)/0,02 = 440 azaz 430 v 470 ohm utóbbit preferálva.Természetesen ellenállást LED ill LED stringenként illene tenni..
-
Tankblock
aktív tag
válasz
tonermagus
#16916
üzenetére
Még lenne pár kérdésem, milyen LED lesz meghajtva?
Miért szükséges a 3A?
A 12V ágat mi adja? Az Arduinot mi fogja meghajtani?
Új hozzászólás Aktív témák
- Gumi és felni topik
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- iPhone topik
- Vége a dalnak: leállt az iPhone Air gyártása
- exHWSW - Értünk mindenhez IS
- Eredeti játékok OFF topik
- Kuponkunyeráló
- Tízszer gyorsabban indulhatnak a játékok a Microsoft új csodafegyverével
- Jogász topik
- Tőzsde és gazdaság
- További aktív témák...
- Steam Deck vadi új 512GB SSD-vel, 100% akku, Windows 11 Pro, tok, töltő, karcmentes, mint az új!
- Dell Latitude 9410 i7 / 16GB RAM / 512GB SSD 2in1 érintőkijelző Profi gép, kedvező áron!
- AKCIÓ! Dobozos új Lenovo Yoga Slim9 Laptop! / i7-1165G7 16 GB 1 TB SSD UHD IPS TOUCH Garancia
- Intel 12th gen. i5-12500 / B660M / 16GB DDR4 félkonfig
- Toshiba Survillance S300 Pro 8 TB megfigyelőrendszerekhez - 2 db
- ÁRGARANCIA! Épített KomPhone i5 13400F 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Apple iPhone 12 Mini 64GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3332
- MacBook felvásárlás!! MacBook, MacBook Air, MacBook Pro
- Sony MHC-V43D Aktív hangfal, party hangszóró
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest


![;]](http://cdn.rios.hu/dl/s/v1.gif)
ekkold

