- Nemzetközi vizekre evezett a Realme GT 7 és GT 7T
- Beárazták az projektoros Ulefone-t
- Fotók, videók mobillal
- Android alkalmazások - szoftver kibeszélő topik
- One mobilszolgáltatások
- Hivatalos a OnePlus 13 startdátuma
- Magisk
- Mobilinternet EU-n kívül, eSIM adatcsomagok használata
- iPhone topik
- Samsung Galaxy A52s 5G - jó S-tehetség
-
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
-
daninet
veterán
válasz
Tankblock #18039 üzenetére
pedig lényegében azt csinálom... ha megnézed a PWM-et a végén állítom be egyszer. Az if else rész az bekapcsolja a relét meg egy változónak az értékét (sebesség) módosítja. Oké, a relét is lehetne egyszer kapcsolni. De az lényegében 3 sort spórol, túl sokat nem érek el vele.
-
ViZion
félisten
válasz
Tankblock #18039 üzenetére
erre az ESPEasy programra is ránézhetnél. Kicsit azóta reszeltem még rajta, de nem a lényegi részen.
Már ez vezérli a keringetőt, meleg van, szal... egyelőre OK.
Következő a statisztika, ESP Home, meg ilyesmik. De egyelőre a csöveket kell szigetelnem, csak már az is hiánycikk.
Köszönöm a javaslatokat és Grandpa-nak is a segítséget. -
tibi-d
tag
válasz
Tankblock #17822 üzenetére
A felsorolt modulok egymásba illeszthetők. Az STM kilóg a sorból. A segítség abban kellett, hogy feleslegesen ne bonyolítsam túl a dolgot, és ha nem muszáj ne vegyek olyan kiegészítőt amire nem lenne szükség. Mivel a bekapcsolási folyamat lezajlik 5s belül, ezért elég lehet előtte 30 minta, utána 100 minta. Így, ha a programot kiegészítem pl. egy kijelzővel még akkor is maradhat elég memória. Köszi az ötleteket. Ha elakadok, jelentkezem. Az is érdekel, hogy a két berendezés milyen valószínűséggel indul egyszerre, és rántja meg a hálózatot. (Ennek kicsi az esélye, de nem nulla.)
-
tibi-d
tag
válasz
Tankblock #17813 üzenetére
Az én fejemben egy olyan megoldás motoszkál, hogy egy nagyobb kapacitású EEPROM-ba írnám folyamatosan a mérési adatokat, és amikor bekövetkezik a trigger esemény, még leszámolnék 200 mintát, majd az utolsó 2X 300 adatot kiírnám SD kártyára az idő és trigger bélyeggel kiegészítve. A trigger események között valószínűleg elég idő telik el, hogy a fenti feladatot el lehessen végezni. Ha a két analóg bemeneten 200 mintán belül jönne az indítójel, akkor az első előtti 100, és a második jel utáni 200 jel lenne kiírva a kártyára. Újabb triggerre 1-2 percen belül nem kell számítani. Az analóg jel felbontása 8 bit.
-
Undoroid
őstag
válasz
Tankblock #17728 üzenetére
Szia!
Sajnos nincs meg minden infóm, mert teljesen nulláról kezdtem ezt az egész Arduino-témát! 2020 év végén vásároltam itt egy használt, hiányos készletet, amit idő hiányában nagyobb kihagyásokkal tudtam csak próbálgatni azokkal a mintafeladatokkal, amit kaptam az egyik ismerősömtől. Ezek csak ilyen "basic" feladatok voltak (LED-villogtatás, DHT11 szenzor használata, RGB ledes fényjáték, ULM2003 driver egyszerű használata, stb...) Az eddigi összes programutasítást azokból ismertem meg. Az azokkal való kísérletezgetésből "tudtam meg" a feladatukat. Bonyolultabb feladatok felé még nem mentem el, mert a megfelelő tudásom/ismeretem még az alapokhoz is nagyon kevés!
A mikrokapcsolós végállásfigyelést eleve elvetettem, mert nincs elegendő hely ezeknek és a motor illetve az Arduino között 6-10Méter távolság lesz. Mechanikus közlőkerékkel akartam megoldani az erőátvitel korlátozását, de sajnos csak műanyaggal rendelkezem és fémből egyediben legyártatni egy vagyon lenne...ezt is elvetettem. Ekkor láttam meg azt a videót, amit linkeltem!
A kódja nélkül sajnos ezt nem tudom megvalósítani.
EZ a videó viszont nagyon jókor jött! Sok 'leendő' kérdésre adott válaszokat és ráadásul Magyarul!
Bőven van még mit tanulnom!
-
gordonfreemN
addikt
válasz
Tankblock #17729 üzenetére
Lehet rájöttem mire gondoltál, vagy ha nem is, olyan ötletet adtál, amivel megoldottam egy utolsó számomra zavaró jelenséget: bár működőképes volt a panel, mégis ha elég gyorsan nyomkodtam a mode gombot, akkor volt a mode változó 2 értékének 0-ra történő írásakor a ledek váltásában némi késleltetés.
A következő módosítással sikerült (már csak a loop-ot teszem be, a többi változatlan):void loop()
{
//vmod beállítása----------------------------------------------------------------------------------------
buttonstate_m = digitalRead(button_m); //gomb állapot kiolvasása
if (buttonstate_m != lastbuttonstate_m) //gombnyomás történt? Gomb állapota változott az előzőhöz képest?
{
delay(50); //ha történt változás az előző állapothot képest, várj 50ms-ot
if (buttonstate_m == 0) //ha a gomb nyomva, azaz bemenet értéke alacsony akkor
{
if (vmod < 2) {
vmod++; //növelje vmod változó értékét eggyel
}
else {
vmod = 0;
}
timer = millis(); //timer változó legyen millis aktuális értékével feltöltve
}
}
lastbuttonstate_m = buttonstate_m; //gomb előző állapotát írja be a gomb aktuális állapotának
if ((millis() - timer) > 5000) { //ha millis értéke mínusz timer értéke nagyobb mint 5sec (azaz eltelt 5mp)
EEPROM.update(0, vmod); //tegye eepromba a vmod változó értékét, ha az változott
}
//vset beállítása------------------------------------------------------------------------------------------
if (vmod == 0) {vset = vset_in;}
if (vmod == 1) {vset = vset_out;}
if (vmod == 2) {vset = vset_cb;}
buttonstate_s = digitalRead(button_s);
if (buttonstate_s != lastbuttonstate_s)
{
delay(50);
if (buttonstate_s == 0)
{
vset++;
timer = millis();
}
}
switch (vset) {
case 0:
digitalWrite(set_led1, 1);
digitalWrite(set_led2, 0);
digitalWrite(set_led3, 0);
break;
case 1:
digitalWrite(set_led1, 0);
digitalWrite(set_led2, 1);
digitalWrite(set_led3, 0);
break;
case 2:
if (vmod == 0) {
digitalWrite(set_led1, 0);
digitalWrite(set_led2, 0);
digitalWrite(set_led3, 1);}
else if (vmod == 1 || vmod == 2){vset = 0;}
break;
default:
vset = 0;
break;
}
lastbuttonstate_s = buttonstate_s; //gomb előző állapotát írja be a gomb aktuális állapotának
//bemenet kiválasztása----------------------------------------------------------------------------------------
if (vmod == 0 && vset == 0) { //ha vmod nulla, akkor a bemenet beállítása történik és vset_in felveszi az aktuális vset értéket
vset_in = 0; //bemeneti változó beállítása
digitalWrite(mode_led1, 1);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 0);
digitalWrite(in_relay1, 1); //bemeneti 1-es relé kiemenet HIGH
digitalWrite(in_relay2, 0); //bemeneti 2-es relé kiemenet LOW
digitalWrite(in_relay3, 0); //bemeneti 3-mas relé kiemenet LOW
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);} //csak ha set gombnyomás történik akkor az 1-es relé resetje LOW
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);} //csak ha set gombnyomás befejeződött akkor az 1-es relé resetje HIGH
}
if (vmod == 0 && vset == 1) {
vset_in = 1;
digitalWrite(mode_led1, 1);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 0);
digitalWrite(in_relay1, 0);
digitalWrite(in_relay2, 1);
digitalWrite(in_relay3, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);}
}
if (vmod == 0 && vset == 2) {
vset_in = 2;
digitalWrite(mode_led1, 1);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 0);
digitalWrite(in_relay1, 0);
digitalWrite(in_relay2, 0);
digitalWrite(in_relay3, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_in, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_in, 1);}
}
//kimenet kiválasztása---------------------------------------------------------------------------------------
if (vmod == 1 && vset == 0) {
vset_out = 0;
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 1);
digitalWrite(mode_led3, 0);
digitalWrite(out_relay1, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_out, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_out, 1);}
}
if (vmod == 1 && vset == 1) {
vset_out = 1;
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 1);
digitalWrite(mode_led3, 0);
digitalWrite(out_relay1, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_out, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_out, 1);}
}
//áramköri lap kiválasztása-----------------------------------------------------------------------------------
if (vmod == 2 && vset == 0) {
vset_cb = 0;
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 1);
digitalWrite(cb_relay1, 1);
if (buttonstate_s == 0) {digitalWrite(reset_relay_cb, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_cb, 1);}
}
if (vmod == 2 && vset == 1) {
vset_cb = 1;
digitalWrite(mode_led1, 0);
digitalWrite(mode_led2, 0);
digitalWrite(mode_led3, 1);
digitalWrite(cb_relay1, 0);
if (buttonstate_s == 0) {digitalWrite(reset_relay_cb, 0);}
delay(10);
if (buttonstate_s == 1) {digitalWrite(reset_relay_cb, 1);}
}
//EEPROM írása------------------------------------------------
if ((millis() - timer) > 5000) {
EEPROM.update(1, vset_in); //tegye EEPROM-ba a vset_in változó értékét, ha az változott
EEPROM.update(2, vset_out); //tegye EEPROM-ba a vset_out változó értékét, ha az változott
EEPROM.update(3, vset_cb); //tegye EEPROM-ba a vset_cb változó értékét, ha az változott
}
//--------------------------------------------------------------------------------------------------------
//Serial.println(buttonstate_s);
}
A mode változónál kivettem a switch case-t és egy egyszerű if-el helyettesítettem -
gordonfreemN
addikt
válasz
Tankblock #17729 üzenetére
Ha jól értem ezt a #define-t akkor ez annyi, hogy kevesebb program memóriát használ fel ezért lenne nekem jobb?
Az EEPROM csak akkor ír ha változik, egyébként nem. Az update vizsgál és csak ha van változás, akkor ír.
De egyébként lehetne úgy is, hogy teszek rá egy if ágat és csak akkor léptetem bele ha volt gombnyomás így a loop nem hajtaná végre minden ciklusban a parancsot.Nem sok időm van a C++-ra most, utolsó félévem következik plusz államvizsga (nem programozásból
) de köszi a tippet, észben fogom tartani, ha lesz kapacitás, elkezdem olvasgatni a témát.
Személy szerint a Python jobban megtetszett a C mellett. Azt nem tudom piacképes-e, illetve abból mit tudok majd felépíteni a későbbiekben, de ezeket amúgy inkább csak érintőleges tanultuk. Épp ezért kezdtem el arduino-zni, hogy ne vesszen az a kevéske tudás sem.
Viszont érdekelne ez az interrupt-os téma. Ebben tudsz néhány mondattal segíteni még, hogy hogyan is gondoltad? Akár egy egyszerű de hasonló példán keresztül, mint amit feltettem (abból egy részlet mondjuk).
Egy portra nem bírom tenni, mert nincsenek összerendelve a ledek és a be/kimenetek fizikailag, a kettő közt a program teremt kapcsolatot. Arra gondolok, hogy míg a SET LED kapcsolja a bemenetet is, addig a kimenetet is meg még egy áramkör váltást is kezel. Vagy félre értettelek?
Ami lemaradt az előző hsz-emből, arduino uno-ról van szó. Bár ez lehet egyértelmű volt
-
Undoroid
őstag
válasz
Tankblock #17719 üzenetére
Szia!
Nem akarom precízen tudni az elfordítás mértékét, hanem csak annyit, hogy tudjam azt a pontot, amikor még nem töröm össze mechanikusan az egész tákolmányomat...esetleg azt megoldanám, hogy az elforgatást egy bizonyos szög után nem engedné tovább a program. Onnantól már csak visszafelé mehetne...
-
Tomika86
senior tag
válasz
Tankblock #17341 üzenetére
Írtam, hogy van egy oled kijelző, ami a panelból ki van vezetékkel vezetve kb 60cmre a fő paneltől.
Arra gondolok akkor ezt külön venném a többitől, talán ez foglalja le leginkább a buszt, az u8g2 könyvtárral és kiiratásokkal.A többi pedig maradna a mostani buszon, közel az esp32höz. Eeprom, io bővítő, adc, giroszkóp.
Jól gondolom?
Köszi -
Tomika86
senior tag
válasz
Tankblock #17339 üzenetére
[link]
Megszakítás 2 bemenete marad az esp32őn.
Csak a többi menne erre a bővítőre.
Mit jelent a gyorsan kell?
Bemenetek:
Számláló nullázás, olajnyomásgomba figyelés, fékfolyadék kifogyott, 2 tartalék.
Kimenetek:
Hűtőventilátor
Izzítás
VilágításEgyiknek sem kell megszakítással kapcsolni.
Az aggaszt, hogy az i2c vonalon van több dolog, ezek nem fognak belassulni vagy bármi romlás lesz?
Pl analóg kiolvasás Ads7828 icvel ciklikusan történik. Eeprom olvasás/írás
Oled kijelző ciklikusan van írva folyamatosan
Giroszkóp is folyamatosan van olvasva
Busz 400khzre van állítva, csak 2,7kohm van az sda és scl buszon.
Eddig működik minden -
Tomika86
senior tag
válasz
Tankblock #17332 üzenetére
Igen, expaner kellett volna, de ezért nem tervezném újra a panelt, ha maradhat. Ez még mindig az autós műszerfal 😀
Van sd kártya spi buszon, van i2c, uart2, 3 kimenet, 6 kimenet, can transreceiver is 2 láb.Gpio2 lehúzva tökéletesen működik eddig, gpio12 is működik.
Csak az érdekelne, hogy hosszú távon jó e ez így?
Köszönöm -
Tomika86
senior tag
válasz
Tankblock #17330 üzenetére
Szia
GPIO2 most lehúzva földre működik (feltöltés is)
GPIO15 szabad, ahogy néztem az se a legjobb választás valamelyik helyett
GPIO12 pedig 1kohm-al sorban az optocsatoló diódája.GPIO12 okozhat gondot így? Kimenetet kapcsolok vele optoval
GPIO2 maradhat így?Sajnos minden láb el van használva
De eddig működtek ezek, csak most a 2es miatt nem ment -
válasz
Tankblock #17286 üzenetére
Én is gondoltam résoptóra, van is itthon, de gondoltam teszek egy próbát a touch-al, mégis külön alkatrész nélkül, esetleg néhány darab alufóliával kiváltható lenne a kapcsoló.
bár a követelményed ellent mond a csendességnek...
Miért is?
Lapozó pedált építek elektronikus kottaállvány mellé. Az előző (szintén általam épített) példány egy Bluetooth billentyűzet +3D nyomtatott tok felhasználásával készült, működik is szépen, de egyrészt elalszik, ha sokáig nincs nyomkodva, másrészt a mechanikája elég hangosra sikerült, így gyakorlásra jó, de koncertre, stúdiófelvételre nem alkalmas.
Az optimális megoldás minden mozgó alkatrész nélküli touch érzékelés lenne. Kézenfekvő lenne, hogy zokniban nyomkodjam közvetlenül a touch szenzortde ez színpadon megint nem megoldás.
Mi lenne, ha egy gumilap vagy egy vékonyabb habgumi lap két oldalára tennék nyáklapot vagy alufóliát? Cipővel toppantásra vajon lehetne aktiválni?
Apropó toppantás: mi lenne, ha piezo-t használnék? 🤔 -
Janos250
őstag
válasz
Tankblock #17210 üzenetére
Köszi, tulajdonképpen nem a konvertálásra gondoltam, de közben megtaláltam, hogy nem szabad kitenni az x elé a 0-t.
https://en.cppreference.com/w/cpp/language/escape
Vagyis a
Serial2.print("page 0");
Serial2.write(0xff);
Serial2.write(0xff);
Serial2.write(0xff);helyett a
Serial2.print("page 0\xff\xff\xff");
a jó.
-
-
-
-
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?
-
-
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 🤔 -
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."
-
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. -
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 -
válasz
Tankblock #17086 üzenetére
Ez érdekes. Úgy emlékszem, hogy én is azzal próbálkoztam először, csak nem volt benne Attiny12 támogatás
Most az AVR stúdió 4 van fent, mert ezzel sikerült csak működő kódot fordítani. Létezik, hogy ennyire béna lettem volna?
Megtennéd, hogy írsz és fordítasz rá valami egyszerű kódot, mondjuk ledvillogtatást, esetleg ha van lehetőség, UART-on kiíratni vmi szöveget, és elküldöd nekem a hex fájlt? Most már igazán kíváncsi vagyok.
-
válasz
Tankblock #17082 üzenetére
Szoftveres UART-ot írtam, és a 32 regiszterrel az RX buffert is meg tudtam oldani viszonylag egyszerűen.
1,2MHz órajel mellett piszkosul ki kell számolni minden utasítás ciklusidejét, hogy kijöjjön a 115200b/s sebesség. Az oszcillátor kalibrációja nélkül nem is sikerült.
-
válasz
Tankblock #17079 üzenetére
Vettem egy marék Attiny12-t (Attiny85 helyett küldték Kínából, hogy véletlenül, vagy szándékosan, azt sosem tudom meg), nincs benne ram, ezért nem lehet C-ben programozni. Mérgemben megtanultam assembly-ban programozni, hogy ne vesszenek kárba (régebben 6510 assembly-al volt már dolgom). Nem túl hatékony vele dolgozni, de nagyon büszke vagyok, mikor sikerül valamit megírni rá.
Épp egy ubtech robothoz csinálok belőle külső szenzort.
-
válasz
Tankblock #17077 üzenetére
Általában igaz, hogy illik tudni mi történik, mert jöhetnek a meglepetések...
20 év alatt ez az első alkalom, hogy találkozom ezzel a formulával, és nem érzem úgy, hogy bármiről is lemaradtam volna
Hozzátartozik, hogy nem múlik rajta a megélhetésem, tehát könnyen vagyok nagyvonalú. De már csak az alaposságom és a kíváncsiságom miatt is utána fogok olvasni.
Minél többet tudok a C++-ról, annál jobban szeretem az assembly-t.
-
gyapo11
őstag
válasz
Tankblock #16934 üzenetére
Ha 12 V-ról mennek a ledek, akkor már a közvetlen pinről kapcsolás nem OK.
Párhuzamosan kötve a ledeket nem jó? Nincsenek olyan közel a nyitófeszültségek? És akkor egy ellenállással 5-ször akkora áramot adni nekik. Vagy akkorát, hogy a legnagyobb áramot felvevő led se olvadjon el. -
válasz
Tankblock #16934 üzenetére
Én is éreztem némi zavart az erőben, de volt egy ilyen:
De mivel én csak egy szálhoz férek hozzá
Gondolom a ledek és a mikrovezérlő nem tud egy helyen lenni, és nem vihető több vezeték sem a kettő között. Mondjuk a 3A akkor is indokolatlan továbbra is 5 normál ledhez.
-
tonermagus
aktív tag
válasz
Tankblock #16931 üzenetére
Na még ez is érdekes lehet.
Gyakorlatilag 4-5 db hagyományos 5mm-es LED. Ezek közös szálon lesznek megtáplálva.
Amíg teszteltem, és a LED-eket külön tudtam venni, addig minden LED elé tettem egy 100ohm-os ellenállást. De mivel én csak egy szálhoz férek hozzá, amire több LED is főzve van akkor én használhatok az elején egy "közös ellenállást"? Ha igen akkor hogy kell betervezni? Sima hagyományos LED, 5 db... -
tonermagus
aktív tag
válasz
Tankblock #16915 üzenetére
Szia
Rajzot nem tudok sajnos adni, mivel pont ez a problémám, hogy nem tudom milyen elemeket kell hogy tartalmazzon feszültségszabályzás részen, inkább részletesen leírom:
Van egy HC-05 Bluetooth modul, amire egy érzékelő van felpárosítva ami egy értéket ad neki. Ezt az értéket átadja a modul az arduinonak, ami kiszámítja hogy mennyire kell hogy világítson a LED. Ennek megfelelően az Arduino egyik kimenete vezérelné a FET-et. A FET pedig a 12V-os áramkör pozitív szálát szakítaná.
Mivel laikus vagyok elektronika témában, ezért én úgy képzeltem el, hogy az ardu kimenetén van egy FET, aminek az egyik lábára rákötöm az ardu egyik kimenetét(Analóg?) és azon a kimeneten analogwrite paranccsal tudom vezérelni a FET-et, hogy mennyi áramot engedjen át ezáltal a nagyobb átengedett feszültség miatt a LED jobban világítana.
Bár azt már most látom gyapo11-nak hála, hogy én a PWM-el nem a feszültséget csökkentem hanem "gyorsan ki-be kapcsolgatom" így a teljes 100%-os ciklus csökkentésével csökken a fényerő.
Ezek szerinte nekem tényleg csak egy FET kell ami elbírja az áramerősséget, és az analogwrite-al parancsot küldök neki a GATE-re, és már tudom is fadelni a LED-et? -
-
ecaddsell
aktív tag
válasz
Tankblock #16642 üzenetére
Lassan FPGA is olyan olcsó lesz h csak na és abban meg mindent is lehet csinálni még Linuxot futtató ARM magokat is lehet szimulálni.
Ilyet csak elborult elméleti (szak)emberek meg retró bolondok csinálnak amikor a soft core helyett ott van a zynq 7020 két arm maggal.
A C++ design patternek tényleges használatához is kell némi elborultság.
Egyébként mivel nálunk komoly elektronikai fejlesztés nem folyik tényleg nincs igény FPGAs dolgokra, hobby szinten meg a BGA tokozás meg a 4 rétegű nyák megint okoz némi természetes szelekciót...
-
Janos250
őstag
válasz
Tankblock #16642 üzenetére
Az igaz, hogy kell a sikerélmény, és ebben az UNO verhetetlen, mert túlcsordul tőle a net. Hogy kinek mit ajánlunk, az egy sokkal általánosabb didaktikai probléma. Van, aki azt mondja, hogy a kezdő kezdjen a régebbi dolgokkal, van aki azt, hogy a kezdő is a korszerűvel kezdje. Nekem ezidáig egyetlen pattern se volt hasznomra, de lehet, nem igazán kerestem. A C++ az UNO-n és a többin is ugyanaz - kibővítve néhány spec Arduino dologgal - és persze régebbi, vagy újabb verziójú fordító, de az újabban is (majdnem) minden benne van, ami ami a régiben, alig van valami, ami obsolete.
Az FPGA dolgot nem tudom. Elég közeli ismerősöm diplomamunkája volt az FPGA, de azóta elő se vette, mondván, nincs rá igazán igény, inkább az általánosabb megoldásokat kedvelik.
Majd meglátjuk, én csak néha ránéztem, mit csinál, de soha nem foglalkoztam FPGA-val.
Egyébként az a véleményem, hogy ami UNO-n elmegy, az általában korszerűbbön is elmegy, és akkor a felhasználót idővel csak hajtja a kiváncsiság, hogy továbblépjen, de ha ehhez lapot kéne váltani, akkor inkább ott ragad. -
Janos250
őstag
válasz
Tankblock #16638 üzenetére
Igazad van, de éppen a mikrokontrolleres alkalmazásban gyakran vannak egymástól teljesen független teendők. Például az egyik szál nem csinál mást, csak egy hőmérsékletet olvas, és ez alapján állít egy PWM-et, és ezeket senki más nem használja. A másik szál meg figyeli a lángérzékelő detektort, hogy nem lángol-e az Anetka (kigyulladni szerető 3D nyomtató), és ha igen, akkor mindent áramtalanít, vagy szirénázik, vagy akármi. Hát az ilyennel nagy tudomány lenne deadlockot generálni.
Aztán, ha egy több bájtos adatot egy valaki ír, de többen olvassák, akkor meg lehet flaget használni.
És persze - mint írtad - a freeRTOS tudja ezeket kezelni. A minták szerintem nem igazán használhatók a sokszálazáshoz.Megnéztem, tényleg rendben van a PWM.
Én továbbra is úgy vagyok vele, hogy ha ott van a ládafiában a Mega, akkor ne dobja ki, használja, de venni már ne vegyen, hanem vegyen korszerűbbet. Elsősorban azért, hogy megtanulja.Én mindenesetre maradok az ESP-nél, pedig valóban van még nekem Z80 is. Amit mellesleg - a maga idejében - kedveltem is. Lehet, ezért szerettem a ZX81-et, és a Spektrumot is.
-
Janos250
őstag
válasz
Tankblock #16614 üzenetére
Igazad van, az RTOS nem operációs rendszer olyan értelemben, hogy nem tudok konzolról ilyen-olyan userként bejelentkezni, programokat futtatni, de nekem erre egy mikrokontrolleren nincs is szükségem. Amire szükségem van, azt tudja. Legalábbis az Espressif kiegészítéseivel. Tudja a fájlok kezelését úgy, hogy ha írok neki egy fájlnak a C szerinti megnyitását, tudja mi az, vagy ha azt mondom neki, hogy cout, tudja miről beszélek.
Ha valamelyik perifériát fájlként akarom használni, akkor persze meg kell hozzá írnom a drivert, de ezt be tudom illeszteni az ő rendszerébe, beírja a fájl leíró táblába, és onnantól már fájlként (is) tudom használni. Kell persze saját magamnak írni drivert, de már a DOS-hoz is saját magunk írtunk COM port kezelő drivert, mert az eredeti nem megszakítással dolgozott, pedig az Ix86x proci tudta.
Vagy, ha nem akarom az ő thread kezelését használni, hanem a programban szerepel a thread és a join, tudja, mit akarok, a fordító le tudja fordítani az ő API-jaira.
Végezetül, ami elvárásom nekem van egy mikrokontroller nem tudom, minek nevezzemjétől, az ebben az ESP32-ben benne van. Mellesleg viszonylag korszerű fordítót használ, bár nagyon sok mindent nem használok ki, mert például lambdát csak minden második szökőévben, bár azzal számos dolog tömörebb. -
Janos250
őstag
válasz
Tankblock #16612 üzenetére
(I)"FreeRTOS használ és az nem egy operációs rendszer sokkal inkább egy scheduler."(/I)
Hát, azért az OS, ha nem is hejde...
Igaz ugyan, hogy boldog és boldogtalan ráhúzta a freeFTOS-t a legkülönbözőbb kontrollerekre, és gondolom, pl. az AVR-ekre megírt verziók csak schedulerek.
A freeRTOS tartalmazza például az lwip-t, ami egyértelműen UNIX filozófia.
Onnan tudom, hogy az ESP32 net kezeléséről kevés info van a neten, de a UNIX-hoz rengeteg, és azt kell nézni, mert teljesen passzol az ESP-hez. A teljes socket kezelés, miegymás. A nevek is megegyeznek.
Espéék nem találták fel a spanyol viaszt, hanem - jó kínai módra - alkalmazzák azt, amit mások megcsináltak.
Van file leíró tábla, ahova a file-ok be vannak jegyezve. A soros port sorszáma (file descriptor) például 2.
Futtasd le a következő programot:void setup() {
Serial.begin(115200);
delay(2000);
FILE* filePointer = fdopen(2, "r+");
fprintf (filePointer, "Szevasz ESP!\nEn vagyok a soros port\n") ;
fclose(filePointer);
} ;
void loop() {};Vagyis eredendően a Serial is file, csak rá van ültetve mindenféle Arduino dolog.
-
Janos250
őstag
válasz
Tankblock #16605 üzenetére
Igen, így van.
"előre meg nem határozott számú paramétert"
Rossz volt a megfogalmazás, mert valóban egy paramétert visz be.
A helyes megfogalmazás az lett volna, hogy "előre meg nem határozott számú adatot" . Ezalatt azt értettem, hogy a függvény írásakor nem tudjuk, hogy hány beviendő adat lesz. Persze, a ... a feladathoz jobban passzoló. Ezért is kerestem ki a neten először azt, mert már nagyon régen csináltam, gőzöm nem volt, hogyan is kell. Ezt tettem a 16600-ba.
"Amit csinász az standard C ben is egy láncolt listára is mutathatna.... akár egy pointer is". Teljesen igazad van, de én azok közé tartozom akiknek feláll a szőr a hátukon a standard C nagyon széles pointer használatától. Nem is foglalkoztam a C-vel, csak később a C++ -al. Igyekszem nem lemenni alacsonyabb szintekre, ha nem muszáj. Épp eleget programoztam assemblyben ahhoz, hogy kerüljem az alacsonyabb szinteket. Persze azért nem akarom a COBOL szószátyár szintjét sem, de a C++ az szimpatikus, szimpatikusabb, mint a pascal bővítések.
"ennyi erővel struct ba tehetnél". Igen az általánosabb, nem macerás.Én azért úgy gondoltam/lom, hogy nem káros emlékeztetni/megmutatni/memóriát frissíteni (ki hol tart a programozásban) azt, hogy a vektor, list, deque, és egyéb konténerekről se feledkezzünk meg, és hogy az iterátorok nem felesleges dolgok, meg az auto se, ezek néha egyszerűbbé teszik az életünket, mintha visszamennénk a standard C szintre. Ott nem kell se iterátor, se auto.
Mellesleg most muszáj a standard C-vel foglalkoznom, mert kíváncsiságból az ESP32 net kezelését bogarászom mélyebben, és az LWIP ugyebár a standard C-ben íródott.
Ez legalább emlékeztet arra, hogy minden külvilággal való kapcsolat "file". Tulajdonképpen nem is tudom, hogy a mikrokontrolleres világban a perifériákra miért nem a bevált file kezelést alkalmazzuk, ahelyett, hogy ezerféle könyvtárat használnánk, és összevissza hibákat okoz, hogy egy neten talált program nem megy, mert más könyvtárat használ.
Az SPI, stb. kényelmesen kezelhető file-ként is az ESP32-n is.
Hű, hosszú lett, bocs mindenkitől. -
gyapo11
őstag
válasz
Tankblock #16583 üzenetére
30 éve volt, nehezen tudnám megmondani. Van még másik két OFF példám, a biblia és Marx A tőke című könyve. Kb. mindkettőből 10 oldalt tudtam elolvasni, számomra emészthetetlenek. A C könyvnél valószínűleg nem értettem meg valamit amire később épített, és így nem tudtam benne tovább haladni, a Turbopascal 4.0 könyvben nem volt ilyen, értettem mindent. Akkor még nem volt internet, kevés olyan ember is volt, aki ilyesmit tanult, nehéz volt segítséget kapni. Pechhem volt, hogy az író magyarázatát nem értettem meg.
A legjobb ilyen szempontból az assembly, mert ott a lagalapabb byte mozgatások és műveletek vannak, nagyon könnyű megérteni, ott inkább a programozáskor van több munka. -
válasz
Tankblock #16583 üzenetére
Attiny85 helyett 10db Attiny12-t küldött nekem a kínai, amiben nincs RAM egyáltalán, csak 32db regiszter.
Mérgemben megtanultam az AVR assembly-t.
Mivel semmilyen függvény, library stb. nincs hozzá, írtam rá softwareserial-t, szervo drivert stb. Azóta építettem belőle egy játékot is.
Tényleg jól el lehet vele szórakozni, érdekes kihívás, hogy hogyan passzírozzunk cipőkanállal sok adatot kevés helyre, meg hogy kell kódot optimalizálni. -
gyapo11
őstag
válasz
Tankblock #16558 üzenetére
Ezt a Ritchie könyvet próbáltam, nagyon nem ment. Előtte a Turbopascal 4.0 könyvből kb. egy hétvége alatt megvoltak az alapok, tudtam programokat írni. De a C-t nem értettem, ma sem tudom, mintákból próbáltam pár programot alakítani, több-kevesebb sikerrel.
Angollal egyetértek, csak nem videó kellene beszélve, hanem weboldal képernyőfotókkal és írásban, az sokkal könnyebben megérthető és a google translate is segíteni tud copy-paste-tel. -
Janos250
őstag
válasz
Tankblock #16445 üzenetére
Köszi!
Ott még mindig el vagyok akadva, hogy a String-ből hogy csinálok string-et.
A String-nek van a .c_str -je, de ez tulajdonképpen mit ad eredményül?
Ez nem egy char* ? A C stílusú string az nem karaktertömb? Vagy a
char akarmi[ ] az nem char* ?Hogyan rakom ezt a Stringet bele egy string-be?
-
Tomika86
senior tag
válasz
Tankblock #16412 üzenetére
Szia!
Kilógatni nem tudom, akkora lesz a panel mint a kijelző panele, és műanyag házban lesz.
Lesz rajta hátsó burkolat is, meglátom majd mennyire lesz jó, a közvetlen közelében jó lesz a wifi az már elég.Amennyire tudtam elpakoltam az alkatrészeket, illetve az antennán kívül alatta teljes terjedelemben réz
Köszi!
-
válasz
Tankblock #16353 üzenetére
Ha 1mp-en át 3W, majd utána 0W(közeli), szintén 1mp-en át, akkor átlagban 1,5W-t kell eldisszipálnia, nem? A gyakorlatban kevesebbet, mert a 8g szervó tipikus áramfelvétele mozgatáskor 500mA körül van, 1A csak indításkor van egy pillanatra, meg ha elakad (stall).
Kézzel nem mérhető a melegedés a chip-en (illetve langyos), de akár hűtőbordát is lehetne tenni rá (ezt mondjuk eléggé overkillnek érzem).
Nincs tartás, a program beállítja a szervót pozícióba, majd elengedi (nincs pwm kimenet). A pozíció tartása nem kritikus, a két végállás (0 és 180 fok) közt van vezérelve mindkét szervó.
Nem hiszem, hogy visszabeszélne, igaz, hogy a 8g szervó egy faék egyszerűségű hardver, de biztos vagyok benne, hogy a belső elektronikája tartalmaz védő diódát a motor körül.
1A-es power bank-ről hibátlanul üzemel az eszköz, abban ugye egy boost converter van. Csak mivel a Digispark-on van onboard regulátor, kézenfekvőnek találtam azt használni.
Egy kitudja milyen noname kínai regulátor volt, ami megsült rajta, azt cseréltem tegnap egy ST gyártmányú darabra, és most remélem, hogy az jobban fogja bírni. -
PHM
addikt
válasz
Tankblock #16331 üzenetére
Szerintem az a baj, hogy te autó elektronikában gondolkodsz, holott itt
otthoni, diy megoldásról van szó. Ott pedig szempont a költséghatékonyság,
valamint a lehető legegyszerűbb kivitelezhetőség.
Aki ugyanis tanácsot kér, nem szakember, meghaladhatja a tudását egy
bonyolult illesztő, vagy védő áramkör elkészítése.
Az izolált DC-DC konverter meg szerintem olyan ritka itt, mint a fehér holló.
De berakom még egyszer a korábbi rajzomat:
Mint látod, nincs zener, nincs előtét ellenállás, mert nem szükséges.
Itt az arduino felé legfeljebb a dióda záróirányú szivárgó árama folyhat,
ami olyan kicsi, hogy megmérni sem lehet egyszerűen, ezért el is hanyagolható. -
PHM
addikt
válasz
Tankblock #16320 üzenetére
Ezt azért bővebben is kifejthetnéd.
Nem emlékszem, hogy elleneztem volna bármi külső védelmet.
A műveleti erősítős megoldásod azonban szerintem felvet néhány problémát,
ezáltal a jelen kapcsolásban alkalmazni nem igazán praktikus, illetve nem
oldja meg a mikrovezérlő bemenetének védelmét.
Ha ugyanis a műveleti erősítő 5V tápot kap, annak a bemenetére kell + védelem,
ha 12V-ot, akkor meg mikrovezérlő bemenetét kell külön védeni a túlfeszültségtől.
Nem látom, hogy ez mitől biztonságosabb az általam javasolt megoldástól. -
vegyszer
addikt
válasz
Tankblock #16321 üzenetére
Igen, nagycsaládos fronton tolom én is.
Az enyém Peugeot Rifter.
Amikor kerestem, az igények szerint volt egy rendelve (Talán a tolató kamera lett volna bele istenes még, de utólag már horror az ára). És a tesók közül igénynek megfelelő (hosszú, disel, nagyobb felszereltségű, 3 részben lehajtható hátsó üléses, dupla klímás) nem volt készleten, vagy még rendelhető se. Egy lett volna tán tesztautó, de volt vele egy kis gubanc. Fizesd ki most, fizesd a részleteket/biztosítást/kaszkót/adót, és 6 hónap és/vagy 2000km után kapod meg (a saját autód), 800000ft kedvezmény után. Hát az ára tetszett, a feltételek nem.@Aryes #6317
Igen, nekem is fura, de állítólag azért is teszi, mert ablak/tükör fűtés közben no a terhelés (valószínűleg jobban merül az akku, ergo a generátor nagyobb töltés ad vissza, azaz álló helyzetben is jobban pörög a motor, esetleg a start stop se aktiválódik ezáltal.Számomra a legjobb megoldás az lenne, ha az ablak fűtés kapcsoló mondjuk egy RGB led formájában kék színnel adná vissza az infót, hogy ő most világol. Míg ha én fűtöm, narancs. Ha mindketten fűtjük (én is, ő is), akkor a keverék szín lenne.
Csak valószínűleg ez nem olyan könnyen kivitelezhető.Egyébként párhuzamosan kötik (pirosra pirosat, feketére feketét).
Valóban én csak arra gondolok gondoltam hirtelen, hogy az arduino 5V-ja ellen is védeni kell a ledet. Hát még a 12V elől. Csak azt nem vágtam, hogy bele épül az ellenállás magába a 3mm-es ledbe. Ezt egyikük se írta le így.
-
vegyszer
addikt
válasz
Tankblock #16307 üzenetére
Apropó autóban való használat.
PSA konszern, (a Peugeot, a Citroen, az Opel, és a Toyota is) ugyanazt azt az autót adja el minimális dizájn elemek cseréje után.
Az én autóm is a tükröket, és a hátsó ablakot fűti a részecskeszűrő regenerálása közben.
Nézegettem a megoldásokat, van aki tucatnyi ledet tartalmazó csíkot tett fel a tető kárpitra, mások 1 db pucér ledet az ablakot fűtő 12V-ra. Az első szimplán csúnya, de a második meglepett. Hogy minden ellenállás nélkül egy pucér ledet 12V-ra kötni mennyire lehet hosszú távon életbiztosítás? Nem gyullad az ki? (mondjuk a pontos típust nem írtak pont le, de azért gyanús, hogy "túl" nagy fénye volt. Szerintem elég, ha jelzi, hogy most van az akció. Az nem kell, hogy az egész csomagteret bevilágítsa)Talani ez a legkorrektebb leírás [link]
Esetleg ezt lehetne valahogy szebben megoldani?
Pl egy érzékelő, ami elől jelez valamilyen formában, szépen, okosan? -
PHM
addikt
válasz
Tankblock #16307 üzenetére
Ha figyelmesen visszaolvastad volna a thread-et, tudnád, hogy ilyesmiről itt szó sincs.
- Az általam javasolt dióda akkor is megvédi a bemenetet, ha teszem azt a ledsor
egy kamion 24V-os hálózatán van. Hiba esetén is.
- Ha lehet, törekedjünk az egyszerűségre, nem kell mindig ágyúval lőni a verébre... -
Janos250
őstag
válasz
Tankblock #16234 üzenetére
"HW ismerete megment egy csomó felesleges kódolástól is"
Így igaz! Én is kipróbáltam pár verziót passzióból.
Közben kibogarásztam az RMT regisztereket, az undokumentedeket is.
https://arduinouser.hu/esp32/ESP32_RMT_Register_Summary.pdf -
válasz
Tankblock #16217 üzenetére
Szia!
Elég masszív a kód, és még próbálom optimálni, mielőtt bárkit megkínoznék azzal, hogy belenézzen.
De, próbálok egy rövid példát mindjárt feltenni, megszépítem és érthetővé teszek a kód azon részét (ha csak egy egyszerűbb effektet hozzáteszek, már az is relatíve zabálja a programhelyet)Arduinós könyvtárak: csak az EEPROM és a NeoPixel könyvtárak vannak használatban, de a programtárhely vészes fogyása valahogy független ezektől.
Serial debug: Attiny lévén nem használom -
Janos250
őstag
Új hozzászólás Aktív témák
Hirdetés
- exHWSW - Értünk mindenhez IS
- Nemzetközi vizekre evezett a Realme GT 7 és GT 7T
- Anime filmek és sorozatok
- Beárazták az projektoros Ulefone-t
- Autós topik
- Fotók, videók mobillal
- Milyen házat vegyek?
- Kazy Computers - Fehérvár - Megbízható?
- Apple MacBook
- vrob: Az IBM PC és a játékok a 80-as években
- További aktív témák...
- Sony FE 28-70 mm F3.5-5.6 OSS
- PS5 Slim Disc 1TB 2026.10.08 GARANCIA
- Bomba Ár! Dell Latitude 3190 - Intel N4120 I 4GB I 128GB SSD I 11,6" HD I Cam I W11 I Garancia!
- Bomba Ár! Dell Latitude 3190 - Intel N4120 I 4GB I 64GB SSD I 11,6" HD I Cam I W11 I Garancia!
- Bomba ár! Dell Latitude E6520 - i7-2760QM I 8GB I 256SSD I Nvidia I HDMI I 15,6" HD+ I W10 I Gari!
- BESZÁMÍTÁS! Gigabyte B760M i5 13400F 16GB DDR4 512GB SSD RTX 3070 8GB Pure Base 500DX fehér 650W
- Lenovo Thinkpad T14 üzleti i5-10310u 10th gen. 8-32Gb RAM 256GB-1TB SSD gar.
- Bomba ár! HP 255 G7 - AMD A4 I 4GB I 128SSD I HDMI I 15,6" FHD I Radeon I HDMI I W11 I Cam I Gari!
- Csere-Beszámítás! Sapphire Pure RX 7700XT 12GB GDDR6 Videokártya! Bemutató Darab!
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest