- sziku69: Fűzzük össze a szavakat :)
- Gurulunk, WAZE?!
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- bitpork: MOD Júni 13 Augusztus 2- szombat jelen állás szerint.
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Argos: Szeretem az ecetfát
- sziku69: Szólánc.
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
-
LOGOUT
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
Kösz mindenkinek! Utánanézek, nem ismerem ezt a Pihole-t :-)
-
vegyszer
addikt
-
-
Janos250
őstag
Találtam egy hasznos felhasználási módját az ESP-nek!
Ha a nem kívánatos SPAM jellegű "néznivalók" linkjeit windows alatt a host nevű fájlba berakja az ember egy nem létező IP címmel, akkor azt nem hozza be, de vannak oldalak, amelyek addig várakoznak, míg meg nem érkezik onnan valami. Most erre az IP-re tettem egy ESP mini WEB szervert, ami egy üres html oldalt hoz be. Azóta kellemesebb az életemNem jön az "akarsz a közeledben ingyen ....et?", és hasonló oldalak. Legfeljebb G...tyán milliárdjait nem növelem.
-
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 ... -
-
válasz
Tankblock #17167 üzenetére
Én nem azt írtam, hogy az egy típus. A bitfieldnél csak az számít, hogy signed vagy unsigned, úgyis egy custom típus jön létre, legalábbis ha jól értelmezem a dolgokat, létrehozhatok benne akár 1, akár 300bites int típust is, vagy van vmi ésszerű korlát?
A másik, ha signed típust adok meg, 1 biten, akkor annak az értéke 0 vagy -1 lehet, ugye?
-
-
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
unsigned
kulcsszó 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. -
Tomika86
senior tag
válasz
Tankblock #17164 üzenetére
Nem én találtam ki, ezt így tanítja xx éve a győri egyetemen.
Én csak kérdezem, hogy találkoztatok e vele már. Nem mondom, hogy jó amit a tanár mond. Mplabx elfogadja, warning sincs. Arduino ide se ad figyelmeztetést.
Bitmező:
[link]A define az behelyettesíti a fordító, erre magyarázta a tanár hogy inkább ez legyen használva, ne függvény
-
válasz
Tankblock #17164 üzenetére
Nem lehet, hogy bit field esetén amúgy is tök mindegy, hogy milyen típust adsz meg, mert csak azt figyeli, signed vagy unsigned? 1 bitnél értelmezhetetlen bármilyen típus a bool-on kívül, 1-nél több bit pedig úgyis custom adattípus lesz.
Bár azt nem tudom, mi van, ha mondjuk float-ot adok meg 🤔 -
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.
-
Tomika86
senior tag
válasz
Tankblock #17161 üzenetére
Bitmező: [link]
Makró
#include <p32xxxx.h>
#define BTN PORTAbits.RA2
#define BTN_Tr TRISAbits.TRISA2
#define LEDs LATD
#define LEDs_Tr TRISD
#define LEDD0 LATDbits.LATD0
#define LEDD0_Tr TRISDbits.TRISD0
#define LEDsA() { LEDs = 0xAAAA; }
#define LEDs5() { LEDs = 0x5555; }
#define BTN_In() { BTN_Tr = 1; }
#define LEDs_Out() { LEDs_Tr = 0x0000; }
main()
{
BTN_In();
LEDs_Out();
while(1)
{
if(BTN)
{
LEDsA();
}
else
LEDs5();
}
}"Látható, hogy itt már nincsenek értékadások (csak a makrókban), a "main()" függvényben csak makróhívások találhatók. A makróhíváskor nem történik stack művelet, tehát gyorsabban kerül végr ehajtásra, mint a függvényhívás."
-
Tankblock
aktív tag
válasz
Tomika86 #17160 üzenetére
Szia,
unsigned
utá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?
-
Tomika86
senior tag
Sziasztok
Most volt mikrovezérlős órám, pic32mx.
Kérdeznék,hogy itt lehet-e(esp32)
Bit kezelés:
struct {
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
} Bit;
A programban pedig így kezelem a bitet:if(Bit.b0)
Meg a másik hogy függvény vagy makró?
Makró gyorsabb, több memória. Függvény "lassabb", kevesebb memória?Köszönöm
-
válasz
tonermagus #17156 üzenetére
Infra LED + tsop IRreceiver? 1 méteren belül elég jó hatásfokkal működik.
-
Janos250
őstag
-
válasz
tonermagus #17156 üzenetére
A "tárgy"-ban lévő elektronikában követelmény, hogy passzív legyen?
Egy lecsökkentett TX poweres ESP-t (vagy herpákolt antennásat) ha beleteszel, egy másikkal az oszlopban tudod mérni a jelerősséget.
-
tonermagus
aktív tag
Sziasztok!
Nincs valami ötletetek arra, hogy milyen szenzorral tudnám figyelni azt, ha egy oszlop mellé érkezik egy tárgy? Egy csapatjátéknál szeretném alkalmazni.
- Figyelni kellene az oszlop környékét 360 fokban
- 1méter körüli hatótáv jó lenne
- Lehetőleg kicsi és olcsó legyen
A tárgy alapból műanyag. De rakhatunk rá fémet, vényvisszaverőt, akármit.
RFID drága ekkora hatótávban. Proxy Mágneses elméletileg csak közelről jó... -
ratkaics
senior tag
válasz
ekkold #17154 üzenetére
Köszi!
Én is nézegettem az OpenEVSE dolgot. Szimpatikus is lenne, mert sajnos a hardware gyártásban sem szakértelmem, sem pedig rutinom nincs, szóval ez az "összeszerelős" dolog jó lenne. De ez sajnos 1 fázisú eszköz, biztosan meg lehetne oldani a 3 fázisú használatot, de egyenlőre nem találtam rá példát.
A másik amit találtam az a smartESVE. Ez már talán jobban megfelelne a céljaimnak, de azért ez is elég drága, meg a Modbus kommunikációs részét nem teljesen értem.
Én a HomeAssistant szerveremről szeretném a töltési teljesítményt dinamikusan vezérelni.
Van esetleg itthoni beszerezhető eszköz, ami hasonló funkciókkal bír, mint a smartEVSE? Esetleg el tudja valaki készíteni? -
ekkold
Topikgazda
válasz
ratkaics #17151 üzenetére
Kétféle verzió is készült. Az egyik egy arduino nano-ra épült, a másik pedig MCU nélkül ananlóg és digitális IC-k felhasználásával. Mindkettő tudta a szabványos protokollt. Mivel munkaként készült annak idején, így a teljes projektet nem oszthatom meg, de ha konkrét kérdésed van, akkor igyekszek segíteni ill. válaszolni.
Addig is pár hasznos link, amin el lehet indulni (nagyjából ezekből ill. a protokoll leírásából indultam ki én is):
OpenEVSE [link]
Analog EVSE circuit [link]
Fórum téma hsz: [link]
Analog EVSE komplett projekt [link] -
Tomika86
senior tag
válasz
Tankblock #17145 üzenetére
Szia!
Igen, egyetemen most PIC32 programozása van. MPLAB X-ben.
Xtensa LX6 ha jól tudom az ESP32 ic-je, de olyan részletességűt nem találtam mint egy PIC32MZ családé.
Ezért is tettem fel a Visual Studio Code programot, de ez is hiányolja a loop és setup ha main és while függvényeket használom. függvényeket. -
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.
-
Tomika86
senior tag
Tényleg ennyit jelentene a setup és loop megszüntetése?
[link] -
ratkaics
senior tag
Sziasztok!
Elektromos autó töltésvezérlőt (EVSE) készített már közületek valaki? -
Janos250
őstag
Srácok! Valahogy nem boldogulok én a lib szerkezettel.
Valakinek tasmotát kellene fordítanom, Arduino IDE alatt.
Régebben már csináltam, de most valahogy nem megy.Van a tasmota.ino file:
C:\Arduino\arduino-1.8.19\portable\sketchbook\Csikor\tasmota.inoA programban: #include <t_bearssl.h>
A neten azt írják, hogy a lib könyvtárat másoljam be a sketchbook\libraries-be. Megtettem, ott is van a file:
C:\Arduino\arduino-1.8.19\portable\sketchbook\libraries\lib_ssl\bearssl-esp8266\src\t_bearssl.hValahol meg azt írták, hogy a saját sketch-be tegyem. Oda is betettem:
C:\Arduino\arduino-1.8.19\portable\sketchbook\Csikor\tasmota\lib\lib_ssl\bearssl-esp8266\src\t_bearssl.h#include <t_bearssl.h>-nél továbbra is jön a hibajelzés:
t_bearssl.h: No such file or directoryLehetne persze az összes .h és .cpp file-t berakni a sketchhez, de annyi van belőlük, hogy a maradék hajam is kihullik, mire átpakolom.
Hogyan csináljam, hogy megtalálja?
Nem, nem akarok platformio-t használni, hanem Arduino IDE-t -
Janos250
őstag
válasz
Tomika86 #17130 üzenetére
Közben csináltam egy alternatívát az AnalogRead()-re, ami már átlagolva olvas, így kényelmesebben használható, csak be kell írni az analogRead() helyére. Ha gondolod, kipróbálhatod.
#include <iostream>
#include <queue>
using namespace std;
void setup() {
Serial.begin(115200);
delay(3000);
Serial.println();
} ; // end setup
void loop() {
printf("analogRead = %d \n",analogReadESP32WithMovingAverage(36,3) );
delay(2000);
} ; // end loop
int16_t analogReadESP32WithMovingAverage(uint8_t GPIOn, uint16_t periodLength){
const uint8_t GPIOs[] = {36, 39, 32, 33, 34, 35};
static queue<uint16_t> analogValues[6];
static uint16_t sum [6];
int8_t GPIOlistNum = -1 ;
for (int i = 0; i < 6; i++) {
if ( GPIOs[i] == GPIOn ){
GPIOlistNum = i;
break;
} ;
} ;
if ( GPIOlistNum < 0 ){
return -1 ;
} ;
while ( analogValues[GPIOlistNum].size() >= periodLength){
sum[GPIOlistNum]-=analogValues[GPIOlistNum].front() ;
analogValues[GPIOlistNum].pop() ;
} ;
uint16_t readedAnalogValue = analogRead(GPIOn) ;
sum[GPIOlistNum] += readedAnalogValue;
analogValues[GPIOlistNum].push(readedAnalogValue) ;
return sum[GPIOlistNum]/analogValues[GPIOlistNum].size() ;
}; // end analogReadESP32WithMovingAverage -
Janos250
őstag
válasz
Janos250 #17109 üzenetére
A
return szumma[csatorna]/mintakSzama ;
helyett
return szumma[csatorna]/analogErtekek[csatorna].size() ;
írandó, akkor az eleje is jó.
i= 1000 atlagertek = 1000
i= 1100 atlagertek = 1050
i= 1200 atlagertek = 1100
i= 1300 atlagertek = 1200
i= 1400 atlagertek = 1300
i= 1500 atlagertek = 1400
i= 1600 atlagertek = 1500
i= 1700 atlagertek = 1600
i= 1800 atlagertek = 1700
i= 1900 atlagertek = 1800 -
Janos250
őstag
Nem jobb.
A Tied az összes eddigi mintának az átlagát veszi, ezek meg az utolsó néhányét.
Ha mondjuk Tomika86 az autó sebességét akarja számolni némi szűréssel, akkor a mozgó átlag a jobb, de ha a teljes útra akar átlagsebességet, akkor csak a Tied a jó.
Memóriában persze annál nagyobb helyet foglal, minél magasabb szintű nyelvi dolgokat használunk. A legkevesebb memória az assembly. -
-
-
Janos250
őstag
válasz
Tomika86 #17104 üzenetére
Ez is egy lehetséges verzió:
#include <iostream>
#include <queue>
#define mintakSzama 3
#define csatornakSzama 6
using namespace std;
void setup() {
Serial.begin(115200);
delay(3000);
Serial.println();
for (uint16_t i = 1000 ; i < 2000 ; i+=100 ) {
// a 0. analog csatornara minta
uint16_t atlagertek = atlag (0,i) ;
printf("i= %d atlagertek = %d \n", i,atlagertek);
} ;
} ; // end setup
void loop() {
} ;
uint16_t atlag (uint8_t csatorna, uint16_t ertek){
static queue<uint16_t> analogErtekek[csatornakSzama];
static uint16_t szumma [csatornakSzama];
// ha static, akkor nem vesz el kilepeskor az erteke, megtartja
if ( analogErtekek[csatorna].size() == mintakSzama ){
szumma[csatorna]-=analogErtekek[csatorna].front() ;
analogErtekek[csatorna].pop() ;
} ;
szumma[csatorna] += ertek ;
analogErtekek[csatorna].push(ertek) ;
return szumma[csatorna]/mintakSzama ;
};Ezt írja ki:
i= 1000 atlagertek = 333
i= 1100 atlagertek = 700
i= 1200 atlagertek = 1100
i= 1300 atlagertek = 1200
i= 1400 atlagertek = 1300
i= 1500 atlagertek = 1400
i= 1600 atlagertek = 1500
i= 1700 atlagertek = 1600
i= 1800 atlagertek = 1700
i= 1900 atlagertek = 1800 -
-
Tomika86
senior tag
válasz
Tankblock #17103 üzenetére
Nem látok benne én:
#include <movingAvg.h>
// initialize - allocate the interval array
void movingAvg::begin()
{
m_readings = new int[m_interval];
}
// add a new reading and return the new moving average
int movingAvg::reading(int newReading)
{
// add each new data point to the sum until the m_readings array is filled
if (m_nbrReadings < m_interval)
{
++m_nbrReadings;
m_sum = m_sum + newReading;
}
// once the array is filled, subtract the oldest data point and add the new one
else
{
m_sum = m_sum - m_readings[m_next] + newReading;
}
m_readings[m_next] = newReading;
if (++m_next >= m_interval) m_next = 0;
return (m_sum + m_nbrReadings / 2) / m_nbrReadings;
}
// just return the current moving average
int movingAvg::getAvg()
{
return (m_sum + m_nbrReadings / 2) / m_nbrReadings;
}
// start the moving average over again
void movingAvg::reset()
{
m_nbrReadings = 0;
m_sum = 0;
m_next = 0;
}
header:#ifndef MOVINGAVG_H_INCLUDED
#define MOVINGAVG_H_INCLUDED
class movingAvg
{
public:
movingAvg(int interval)
: m_interval(interval), m_nbrReadings(0), m_sum(0), m_next(0) {}
void begin();
int reading(int newReading);
int getAvg();
int getCount() {return m_nbrReadings;}
void reset();
int* getReadings() {return m_readings;}
private:
int m_interval; // number of data points for the moving average
int m_nbrReadings; // number of readings
long m_sum; // sum of the m_readings array
int m_next; // index to the next reading
int *m_readings; // pointer to the dynamically allocated interval array
};
#endif -
ekkold
Topikgazda
Melyik a legolcsóbb olyan MCU, ami arduinoval (is) programozható?
Új hozzászólás Aktív témák
Hirdetés
- MSI RTX 4070 SUPER 12GB GAMING X SLIM WHITE - 20 hónap garancia
- GIGABYTE RTX 4070 SUPER WINDFORCE OC 12GB - 20 hónap garancia
- iKing.Hu - Samsung S25 Ultra - Titanium Black - Használt, karcmentes
- Apple Ipad 10.generáció
- Új HP Pavilion x360 14-ek Érintős hajtogatós Laptop Tab 14" -35% i5-1335U 8/512 FHD IPS Iris Xe
- Hibás! Dísznek, Porfogónak, tesztkártyának vagy böngészni! Asus Rog Strix RX 470 4GB Videokártya.
- Csere-Beszámítás! Számítógép PC Játékra! I5 14400F / RTX 4060ti 16GB / 32GB DDR5 / 1TB SSD
- BESZÁMÍTÁS! ASROCK B650 R5 7600X 32GB DDR5 1TB SSD RTX 3070 8GB MSI MPG Gungnir 100 Enermax 750W
- AKCIÓ! AMD Ryzen 5 2600 6 mag 12 szál processzor garanciával hibátlan működéssel
- TP-Link Archer C1200 Router eladó (1200 Mb/s Wi-Fi)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest