- iPhone topik
- Vodafone mobilszolgáltatások
- Telekom mobilszolgáltatások
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Eleglide C1 - a középérték
- Milyen okostelefont vegyek?
- Android szakmai topik
- DIGI Mobil
- Android alkalmazások - szoftver kibeszélő topik
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
Hirdetés
-
VR játék lesz az Batman: Arkham Shadow (Meta Quest 3)
gp Egyelőre csak egy teaser trailert kaptunk a teljes leleplezésre a Summer Game Festen kerül sor.
-
Egyre közelebb a Poco F6 startja
ma Újabb ár/érték csatát nyerhet a Xiaomi almárka.
-
Kapnak egy rakás reklámot a Roblox játékosai
it Videohirdetésekre készülhetnek ezentúl a virtuális világokban a Roblox játékosai.
-
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
-
Tomika86
senior tag
I2C eszköz ha benne van a programban, de én mégsem használom (giroszkóp, oled kijelző), tehát lecsatlakoztatom mondjuk, akkor a programban, hogy tudom kikapcsolni? Vagy csak a hozzá tartozó programot kell letiltani a loopban?
Köszönöm!
-
nagyúr
válasz Tomika86 #16503 üzenetére
Hát én ezt úgy oldanám meg, hogy a uC bekapcsolásakor rögtön futtatnék egy i2c address scan-t, és utána annak az eredménye alapján kezelném a továbbiakban az eszközöket, hogy mit talált meg és mit nem. Nyilván elég csak azokat a címeket szkennelni, amik várhatóan csatlakoztatva lehetnek.
-
tibi-d
tag
Sziasztok!
Próbált-e valaki Atmega 2560 EEPROM tartalmat kiírni SD kártyára, majd onnan visszamenteni? A GOOGLE-n erre az esetre nem találtam példát. (lehet, nem jó helyen kerestem). -
Janos250
őstag
A múltkori késő esti string és String kínlódásom után úgy döntöttem, hogy nincs értelme a brute force módszernek, inkább gondoljuk át logikusan. És tényleg! Ideírom a tapasztalataim, hátha valaha valakinek hasznos lesz a jövőben.
Kösz mindenkinek, aki segített!Arduino String (nagybetűs), és a C++ string (kisbetűs) kapcsolata.
Az Arduino String nem írható be paraméterként olyan helyre, ahol C++ string az elvárás, és ez fordítva is igaz.
A kettő közötti átmenetet a .c_str() tagfüggvény teszi lehetővé.String ArduinoString_Hello = "Hello";
string Cpp_string_World = "World";
EzekkelString ArduinoString_Hello02 = Cpp_string_World.c_str();
String ArduinoString_Hello03 (Cpp_string_World.c_str());
string Cpp_string_World02 = ArduinoString_Hello.c_str();
string Cpp_string_World03 (ArduinoString_Hello.c_str());
Így új példányok jönnek létre.A szöveget mind a String, mind a string belül egy 0x0 terminált karakter tömbben tárolja, és a .c_str() konstans pointer mutat rá, ezért ha (char*) C típusú sztinget akarunk, akkor "const" miatt (char*) átdefiniálás szükséges.
Például:char* ArduinoString_Hello_c_str = (char*)ArduinoString_Hello.c_str() ;
char* Cpp_string_World_c_str = (char*)Cpp_string_World.c_str() ;
Ebben az esetben nem jön létre új példány, hanem a char* típusú karaktertömb pointere is az eredeti objektumban tárolt karaktertömb kezdetére mutat. Ha az egyikben megváltoztatjuk valamelyik karaktert, a másikban is megváltozik.Az ESP32-höz használt fordító ismeri az iterátor típust is. A C++ string rendelkezik .begin(), .end() iterátorral.
for ( std::string::iterator it=Cpp_string_World.begin(); it!=Cpp_string_World.end(); ++it)
std::cout << *it;
std::cout << '\n';
/*
Woyld
*/std::string::iterator it=Cpp_string_World.begin();
std::cout << "Cpp_string_World.begin() = :" << *it<< "\n"; // W
it=Cpp_string_World.end()-1; // mert a .end() a 0x0 terminátorra mutat
std::cout << "Cpp_string_World.end() = :" << *it<< "\n"; // dMintának egy teljes program:
#define __cplusplus 201103L
#include <iostream>
using namespace std;
void setup() {
Serial.begin(115200);
delay(2000);
Serial.println("Arduino String (nagybetus), es a C++ string (kisbetus) kapcsolata.");
String ArduinoString_Hello = "Hello";
string Cpp_string_World = "World";
String ArduinoString_Hello02 = Cpp_string_World.c_str();
String ArduinoString_Hello03 (Cpp_string_World.c_str());
Serial.printf("ArduinoString_Hello :%s\n",ArduinoString_Hello);
Serial.printf("ArduinoString_Hello02 :%s\n",ArduinoString_Hello02);
Serial.printf("ArduinoString_Hello03 :%s\n",ArduinoString_Hello03);
Serial.printf("ArduinoString_Hello[0]:%c\n",ArduinoString_Hello[0]);
Serial.printf("ArduinoString_Hello.c_str()[0]:%c\n\n",ArduinoString_Hello.c_str()[0]);
/*
ArduinoString_Hello :Hello
ArduinoString_Hello02 :World
ArduinoString_Hello03 :World
ArduinoString_Hello[0]:H
ArduinoString_Hello.c_str()[0]:H
*/
string Cpp_string_World02 = ArduinoString_Hello.c_str();
string Cpp_string_World03(ArduinoString_Hello.c_str());
std::cout << "Cpp_string_World :" << Cpp_string_World<< "\n";
std::cout << "Cpp_string_World02 :" << Cpp_string_World02 << "\n";
std::cout << "Cpp_string_World03 :" << Cpp_string_World03 << "\n";
/*
Cpp_string_World :World
Cpp_string_World02 :Hello
Cpp_string_World03 :Hello
*/
char* ArduinoString_Hello_c_str = (char*)ArduinoString_Hello.c_str() ;
char* Cpp_string_World_c_str = (char*)Cpp_string_World.c_str() ;
ArduinoString_Hello_c_str[2] = 'x';
Cpp_string_World[2]= 'y';
Serial.printf("ArduinoString_Hello is atirodik :%s\n",ArduinoString_Hello);
std::cout << "Cpp_string_World_c_str is atirodik :" << Cpp_string_World << "\n";
/*
ArduinoString_Hello is atirodik :Hexlo
Cpp_string_World_c_str is atirodik :Woyld
*/
// iterator:
std::cout << "Iterator:\n";
for ( std::string::iterator it=Cpp_string_World.begin(); it!=Cpp_string_World.end(); ++it)
std::cout << *it;
std::cout << '\n';
/*
Woyld
*/
std::string::iterator it=Cpp_string_World.begin();
std::cout << "Cpp_string_World.begin() = :" << *it<< "\n"; // W
it=Cpp_string_World.end()-1; // mert a .end() a 0x0 terminátorra mutat
std::cout << "Cpp_string_World.end() = :" << *it<< "\n"; // d
} ;
void loop() {} ;[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Tomika86
senior tag
Sziasztok!
Használom ezt a mozgó átlag függvényt:
uint32_t atlag_szamolas(int nyers_jel) {
int i = 0;
uint32_t osszeg = 0;
nyers_jel_buffer[nyers_jel_i++] = nyers_jel;
if (nyers_jel_i == SZURO_HOSSZA) {
nyers_jel_i = 0;
}
for (i = 0; i < SZURO_HOSSZA; i ++) {
osszeg += nyers_jel_buffer[i];
}
return (osszeg / SZURO_HOSSZA);
}Mitől lehet az, hogy akkumulátor feszültségnél átlagolás nélkül jól mutatja a feszültséget, csak tizedben ugrál 0.1 értéket. Ha berakom a függvényt akkor pedig a 13V helyett 3V körüli lesz a kimenete a függvénynek.
7 analóg értéknél használom ezt a függvényt, a többinél nincs ekkora eltérés.Köszönöm!
-
Tomika86
senior tag
// Akkumulátor feszültség mérés CH0
adc0 = ADS7828_olvasas (ADS7828_ADDRESS, CH0); //Analóg beolvasott feszültség érték
adc0_atlagolt = atlag_szamolas (adc0);
float feszultseg_temp = map(adc0_atlagolt, 0, 4095, akkumulator_fesz_minimum, akkumulator_fesz_maximum); //Analóg átalakítás feszültségre
akkufesz = feszultseg_temp * 1.0 + 0.6; //y=mx+c feszültség végeredmény
akkufesz = constrain(akkufesz, 0.0, 23.0);adc0 változik a különböző méréseknél
-
nagyúr
Miért kell 15 adatot átlagolni, ha csak 0.1 a kilengés az adatokban? Elég lenne 3 sample.
-
-
nagyúr
válasz Tomika86 #16519 üzenetére
Ez pontosan ugyanazt csinálja, mint a te függvényes-tömbös megoldásod, csak sokkal egyszerűbben.
Ráadásul akár két számítás között is változtathatod a sample-ök számát, nincs hatással az eredményre. Például elkezdedn=1
-el, és minden ciklusban eggyel növeled, amíg el nem éri a max (pl. 15) értéket, így már az elejétől fogva helyes adatot mutat, nem 0-ról indul.[ Szerkesztve ]
-
Dißnäëß
veterán
Sziasztok ismét
Egy 1K-s és egy 10K-s 20-fordulatú precíziós (1W) trimpotot szeretnék helyettesíteni Arduino-val, hogy ő "forgassa" ezeket, értsd jól.
Hogyan tudnám legegyszerűbben megtenni ? Egyesek javasolnak digitális potmétereket is, én meg arra gondoltam, simán LC aluláteresztő szűrném a PWM kimeneteket és így kapnám meg a mikor milyen fesz.értéket, amivel egy tranyót vezérelve meg is volna a dolog sima analogWrite() használatával, szabályozva így azt, mennyit enged át magán a tranzisztor.
Vagy túlbonyizom, esetleg tök hülyeség ?
[ Szerkesztve ]
Lá lá lá lá lááá lááá.. Lá lá lá lá lááá lááá .. Lá lá lá lá lááá lá lááá lá lá lá lááááá láááá
-
Dißnäëß
veterán
Illetve ha precíziós állítást szeretnék, gondolom nem mindegy, hogy a kis digitális pot 64 állású, vagy 1024.
Lá lá lá lá lááá lááá.. Lá lá lá lá lááá lááá .. Lá lá lá lá lááá lá lááá lá lá lá lááááá láááá
-
Tomika86
senior tag
válasz PeterPH #16514 üzenetére
Helló
Ezt ma kipróbáltam, hogy lehet ezt kiküszöbölni egy függvényhívásnál?Beolvasok egy analóg értéket globális változóba
Meghívom a függvényt, a beolvasott értékkel elvégzi a számolást
Return visszaadja az értéket, majd visszatér a függvényhíváshoz, ahol folytatja a kódot.Megint beolvasok egy analóg értéket
Meghívom ugyanazt a függvényt, más bemeneti értékkel.Megköszönném ha valaki bevezetne mélyebben a Cbe, mert nagyon az alapoknál vagyok.
Köszönöm szépen!
-
And
veterán
válasz Dißnäëß #16522 üzenetére
Nem bonyolítod túl, illetve csak egy kicsit. Például felesleges LC-szűrés, ha a PWM frekvencia elég magas és a vezérelt eszköz egy tranzisztor / mosfet. Bőven elegendő lehet egy sima egy RC-tag is. Az is számít, hogy mekkora felbontás kell, de az eredendően a PWM-nél sem alacsony, illetve a konkrét áramköri környezet is behatárolhatja a megvalósítást. A digitális potméter sem csodaszer, a szimulált ellenállás / csúszóérintkező potenciálja nem lóghat ki az IC tápfesz tartományából. Sokszor használtam már RC-szűrt PWM-et DC vezérlőjel helyett, az adott célra tökéletesen megfelelt.
-
gyapo11
őstag
válasz Dißnäëß #16523 üzenetére
A pwm jel szűrése lesz egy kicsit problémás, illetve kellő nagyságú kondival nem az, de akkor meg lassú lesz a jel változása.
Próbálkozhatsz shift regiszterrel és d/a átalakítóval, ekkor bármilyen bithosszúság (finomság) használható és a kimeneti jel azonnal beáll fixen, ahogy a bináris számot kiírtad.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
-
ekkold
Topikgazda
válasz Dißnäëß #16522 üzenetére
Ha a potméterek csak feszültséget szabályoznak, akkor kiválthatod megfelelő felbontású PWM + aluláteresztő szűrő kombinációval. Ha ennél precizebb dolog kell, akkor egy A/D-vel vissza is mérheted a szűrő utáni feszültséget, és pontosíthatod vele a PWM-et (akár egy PI vagy PID szabályozással). Ha nem simán DC feszültséget szabályoznak a potik, hanem egy áramkör részei, akkor bonyolódik a helyzet (pl digitális potival). Persze pontosabb válaszhoz ismerni kellene a feladatot.
-
Tankblock
aktív tag
-
Dißnäëß
veterán
válasz ekkold #16528 üzenetére
Köszönöm és az Előtted szóló 2 kollégának is !
Csöves erősítő bias-t (munkapontot) tartana a helyén, ami idővel is, meg bemelegedés után is - a kapcsolásból adódóan - hajlamos picikét elmászni, illetve figyelne a push-pull kimeneten az input csövek eltéréséből (gyártási szórás) adódó DC offset-t is, ez egy másik kézi trimpoti lenne, amivel néha ez itt megjelenő offset-et érdemes visszakorrigálni 0-ra.
Gondoltam, ilyeneket rábíznék valami "automatikára", ne nekem kelljen ezt az amúgy "fix bias"-ú megoldást kézzel tekergetnem X naponta. (Elvileg ritkábban, de csináljuk jól, pontosan).
[ Szerkesztve ]
Lá lá lá lá lááá lááá.. Lá lá lá lá lááá lááá .. Lá lá lá lá lááá lá lááá lá lá lá lááááá láááá
-
Dißnäëß
veterán
Áhh, 128-step relay attenuator-el megyek, azon a bemeneten, amit egyáltalán csillapítósra tervezek. Szóval van egy távszabályzós motorizált potim, ami annak ellenére, hogy direktben önmaga is tudna csillapítani, igazából csak említett board-ot hajtja meg, az meg elkattog nekem szépen és lőn hifi.
A fogasléc kiváló, még maradt is valahol Technic Lego-m a gyerekkoromból, lomolok hozzá valamit
Arduino kérdés: hány darab kis OLED-es kijelzőkét tudna meghajtani 1 szem Arduino Micro mondjuk, SPI-n, szerinted ? (3-at kellene, I2C-t meg nem választanám, mert ott sokkal lassabb a frissítési idő).
[ Szerkesztve ]
Lá lá lá lá lááá lááá.. Lá lá lá lá lááá lááá .. Lá lá lá lá lááá lá lááá lá lá lá lááááá láááá
-
nagyúr
-
vegyszer
addikt
Sziasztok!
Én most a Black Friday kapcsán futottam bele ebbe a kis cukiságba.
M5Stack M5Stamp C3
13GIO láb, és közvetlenül USB-C segedelmével programozható."Újságírás az, amit a hatalom nem akar nyomtatásban látni. Minden más csak propaganda." George Orwell
-
Dißnäëß
veterán
Ahány szabad lábad marad! Ugye a DI, DO, DC közös, viszont minden kijelzőnek kell egy-egy külön CS lábat biztosítani.
DI, DO, DC közös. Ok.
RES ? (Ez is közös, vagy kijelzőként 1 PIN-t befoglal ?)
CS - kijelzőként 1 PIN. OK.Magyarul 3 digital out pin fix, + 3x CS + 3x RES = legrosszabb esetben 9 digital PIN-re volna szükségem ?
Van egy ilyenem, ellőhetném ide akkor. [link]
[ Szerkesztve ]
Lá lá lá lá lááá lááá.. Lá lá lá lá lááá lááá .. Lá lá lá lá lááá lá lááá lá lá lá lááááá láááá
-
nagyúr
válasz Dißnäëß #16542 üzenetére
Miért kéne külön reset láb? Elég 1 közös, úgyis általában 1x kell resetelni a kijelzőket, vagy egyszer se! Az áramtalanítás többnyire reseteli a kijelzőt is. Szóval ha a reset lábakat fixen a tápra kötöd, elég 6 láb is.
Sőt: ha netán kevés lenne a szabad láb, a CS-el is lehet trükközni: egy láb elég két kijelzőnek, ha egy tranzisztorral invertálod, így magas állapotnál az egyik, alacsonynál pedig a másik kijelzővel tudsz kommunikálni. Egyszerre úgyis csak egy kijelzőre szokás írni.
Update: közben rájöttem, hogy ez csak 2 kijelzőnél működik, de azért itt hagyom, hátha vki hasznát veszi.
[ Szerkesztve ]
-
Dißnäëß
veterán
Háh, de jó ez a tranyós trükk !!! Viszont akkor már csinálhatok 3 feszültségszintet is, nem ? 2 tranyóval
Viszont D0 clock, D1 data, nem gond, ha data közös ? Vagy saját címmel rendelkezik úgyis mind ?
Lá lá lá lá lááá lááá.. Lá lá lá lá lááá lááá .. Lá lá lá lá lááá lá lááá lá lá lá lááááá láááá
-
nagyúr
válasz Dißnäëß #16545 üzenetére
A 3 feszültségszintet nem pontosan értem, hogy gondoltad, de 2 lábbal és
2 tranyóval1 tranyóval is lehet szerintem NAND kaput létrehozni, hogy a 3. kijelző csak akkor kapjon magas jelet, ha mindkét láb alacsony. Vagy akkor már lehet valódi NAND kaput is használni a feladatra.
És van még pár lábspórolós trükk a tarsolyomban, ha egyszer szükséged lenne rá.nem gond, ha data közös ?
Miért lenne?
[ Szerkesztve ]
-
Janos250
őstag
válasz vegyszer #16540 üzenetére
És biztosan bejön úgy, hogy nem kell a postán a vámmal vacakolni, fizetni, mert a Bangood árában már a VÁM is benne van, futár hozza a levámolt csomagot. Ez nagy előny, hogy meg lehet kerülni a töketlenkedő postát.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
gyapo11
őstag
válasz Janos250 #16548 üzenetére
Vám 150 EUR fölött van ha nem Európából jön a csomag. A kisebb értékű küldeményeken áfa van és ha a posta vámkezeli, akkor még valamennyi. A BG az áfát vásárláskor beszedi, ezt később átutalja a navnak, Európába behozza valahogy és innen mint európai csomag érkezik az országba, ezért semmi további költség nincs, mivel áfa fizetve, EU-ból érkező csomagra pedig nincs vámkezelés.
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
-
MPM
tag
válasz gyapo11 #16420 üzenetére
Nah lenne még egy kérdésem: alul a relével párhuzamosan bekötött relé azt a célt szolgálja, hogy ha zár a tranzisztor, akkor lehúzza a földre a relé bemenetét?
Gondolom igen, csak kicsit bezavar az értelmezésemnek, hogy az anódra van a negatív (föld) csatlakoztatva.(A nyitott állapot oké, ekkor nem folyik rajta keresztül áram, a tranzisztortól a föld felé.)
Egyébként nem lehetne egy nagyobb ellenállással helyettesíteni ezt a diódát? Úgy gondolom az is ellátná ezt a feladatot, nyitott tranzisztor esetén arra folyna el az áram, zárt állásban pedig kevés feszültség esne rajta a földtől a bemenet felé.
Javítsatok ki, ha sületlenségeket írok!
Új hozzászólás Aktív témák
- Milyen monitort vegyek?
- HP ProLiant MicroServer Gen8
- Helldivers 2 (PC, PS5)
- Milyen TV-t vegyek?
- Gördeszka topic
- Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Xbox Series X|S
- Anglia - élmények, tapasztalatok
- Konzolokról KULTURÁLT módon
- További aktív témák...