- Mobil flották
- Akciófigyelő: kedvezményekkel indít az Ulefone Armor tablet/telefon páros
- 67 wattos gyorstöltés és Leica kamerák a Xiaomi kagylóján?
- Képeken a Honor 200 Pro
- iPhone topik
- Android alkalmazások - szoftver kibeszélő topik
- Fotók, videók mobillal
- Poco X6 5G - egy Redmi álruhában
- Google Pixel 8 Pro - mestersége(s) az intelligencia
- Szabadalmi vitába keveredett a Lenovo
Hirdetés
-
PC-re tart a God of War Ragnarök?
gp Az egyik legismertebb szivárogtató szerint Kratos legutóbbi kalandja lesz a következő nagy PlayStation cím, ami PC-re látogat.
-
Spyra: akkus, nagynyomású, automata vízipuska
lo Type-C port, egy töltéssel 2200 lövés, több, mint 2 kg-os súly, automata víz felszívás... Start the epic! :)
-
A leépítések után egy vagyont költ a töltőhálózatára a Tesla
it Miután nemrég újabb dolgozókat küldött el a Tesla, Elon Musk azt ígéri, hogy 500 millió dollárt költenek a töltőhálózatra (ez értelemszerűen inkább az USA-t érinti).
-
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
Működik
Ha valakinek kellene majd :#include <Wire.h>
#define ADS7828_ADDRESS 0x48 // ADS7828 Address byte: 0x48 0b10010000
// 1001 0 A1 A0 R /W
#define CH0 0x8C // Ch0: 0x8C
#define CH1 0x9C // Ch1: 0x9C
#define CH2 0xAC // Ch2: 0xAC
#define CH3 0xBC // Ch3: 0xBC
#define CH4 0xCC // Ch4: 0xCC
#define CH5 0xDC // Ch5: 0xDC
#define CH6 0xEC // Ch6: 0xEC
#define CH7 0xFC // Ch7: 0xFC
void setup()
{
Wire.begin(); // I2C kommunikáció inicializálása MASTER-ként
Serial.begin(115200); // Soros kommunikáció inicializálása, baud rate beállítása = 9600
delay(300);
}
void loop()
{
int kiolvasott = ADS7828_olvasas (ADS7828_ADDRESS, CH0); // 0x8C 0b1000 1100 SD, C2, C1, C0, PD1, PD0, x, x
// 1: Single-End, 000: Ch0, 11: Int ref és AD bekapcsolva
Serial.print("Ch0 értéke : ");
Serial.println(kiolvasott); // Nyers analóg érték kiiratása soros monitorra
}
int ADS7828_olvasas (int Addr_byte, byte Cmd_byte) {
byte data[2];
Wire.beginTransmission(Addr_byte); // I2C átvitel indítása, az adott címen
Wire.write(Cmd_byte); // Command byte küldése
Wire.endTransmission(); // I2C átvitel megállítása
Wire.requestFrom(Addr_byte, 2); // 2 byte adatra várakozás
// 2 byte adat olvasása
if (Wire.available() == 2) // Ha megérkezett a 2byte
{
data[0] = Wire.read(); // Első byte tömbbe írása
data[1] = Wire.read(); // Második byte tömbbe írása
delay(5);
int adc = ((data[0] & 0x0F) * 256) + data[1]; // Adat konvertálás 12bit-re
return adc;
}
}Nem a legszebb, de jól működik, semmi akadás az analóg mutatóban
Köszönöm a segítséget!
-
Tomika86
senior tag
Sziasztok!
Autóban gyorsulást szeretnék mérni, erre ha a megfelelő pozicióban van akkor alkalmas egy MPU-6050 szenzor? Bekapcsoláskor kell kalibrálni?
Láttam van több típus is, i2c kellene nekem.I2c esetén ha a főegységtől 50cm-re lenne egy pici oled kijelző, amin 1db változó lenne kiiratva. Ez okoz gondot?
Köszönöm
-
nagyúr
válasz Tomika86 #16154 üzenetére
Hát nem akarok hülyeséget mondani, de ha jól tévedek, a legmagasabb, Mbit-es sebességhez talán 20cm a maximális vezetékhossz, de azt nem tudom, hogy a többi egységet is lassítja-e, ha egy egység valami miatt csak lassabb sebességre képes. 🤔
Hosszabb vezeték esetén csökkenteni kell a felhúzó ellenállások értékét, talán 2,7k-ra.Az autóban nem lesz CAN busz véletlenül?
-
Tomika86
senior tag
Sziasztok
Mi a különbség ha a loop elött vagy után vannak deklarálva a függvények? Látom így is úgy is.Amúgy próbáltam a két magos programozást, de újraindul folyamatosan az esp32.
Köszönöm -
PeterPH
senior tag
válasz Tomika86 #16158 üzenetére
Arduino IDE esetén nincs jelentősége, PlatformIO+VSCode esetén mindenképp előbb kell deklarálni, vagy definiálni.
Valószínűleg a task watchdog indítgatja újra, mert az idle taskok nem jutnak szóhoz. Kis delay esetleg segíthet a loop illetve a 0. magon futó cikluson belül. Vagy tiltsd le a watchdog-ot. -
Janos250
őstag
válasz Tomika86 #16158 üzenetére
https://randomnerdtutorials.com/esp32-dual-core-arduino-ide/
https://techtutorialsx.com/2017/05/09/esp32-running-code-on-a-specific-core/
[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
válasz Tomika86 #16165 üzenetére
Az egyik felét hagyod a loopban, az fut majd az 1-es magon.
Csinálsz egy függvényt, abba teszed a másik felét, és az megy ./*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/
TaskHandle_t Task1;
//TaskHandle_t Task2;
// LED pins
//const int led1 = 2;
//const int led2 = 4;
void setup() {
Serial.begin(115200);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
//create a task that will be executed in the Task1code() function, with priority 1 and executed on core 0
xTaskCreatePinnedToCore(
Task1code, /* Task function. */
"Task1", /* name of task. */
10000, /* Stack size of task */
NULL, /* parameter of the task */
1, /* priority of the task */
&Task1, /* Task handle to keep track of created task */
0); /* pin task to core 0 */
delay(500);
/*
//create a task that will be executed in the Task2code() function, with priority 1 and executed on core 1
xTaskCreatePinnedToCore(
Task2code,
"Task2",
10000,
NULL,
1,
&Task2,
1);
Ez nem kell, mert a loop automatikusan a 0. magra megy.
*/
delay(500);
}
//Task1code: blinks an LED every 1000 ms
void Task1code( void * pvParameters ){
Serial.print("Task1 running on core ");
Serial.println(xPortGetCoreID());
/*
for(;;){
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led1, LOW);
delay(1000);
*/
// ide jön a 0-án futtatandó programrész
Serial.print("Task1 running on core ");
Serial.println(xPortGetCoreID());
}
}
/*
//Task2code: blinks an LED every 700 ms
void Task2code( void * pvParameters ){
Serial.print("Task2 running on core ");
Serial.println(xPortGetCoreID());
for(;;){
digitalWrite(led2, HIGH);
delay(700);
digitalWrite(led2, LOW);
delay(700);
Serial.print("Task2 running on core ");
Serial.println(xPortGetCoreID());
*/
}
}
void loop() {
// ide jön, ami az 1-es magon fusson
}[ 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!
Megszakításban, ha ezt használom:void Sebesseg_esemeny () {
ford_szamlalo++;
static unsigned long elozo_micros = 0;
unsigned long akt_micros = micros();
eltelt_ido = akt_micros - elozo_micros;
elozo_micros = akt_micros;
}Ebből kettő megszakítás közötti idő lesz meg usec-ben, ha jól gondolom?
Sebesség értéket szeretnék számolni, de mellé kellene még, hogy számoljam azt is, hogy méterben mennyit haladtam. És minél pontosabban.
Ez ha jól gondolom, csak akkor kivitelezhető, ha 1 fordulatra több jelem van a tengelyen. De akkor is, hogyan a legpontosabb, mennyi jel kell?
1 fordulatra kb 2 méter adódik. Ha több jel van, akkor ez az érték osztódik a jelek számával, egy teljes fordulatra. De akkor meg miből számolok sebességet,vagy ezt csak vissza szorzom a jelek számával egy fordulatra?Igazából az elv is elég, hogy rájöjjek miként megy ez, aztán max kérdek még
Láttam olyan példákat ahol van trip számlálás, de nem egyesével nől az értéke és nem is méterben. Néztem olyat ahol a megszakításban van minden kiszámolva.
Köszönöm!
-
Janos250
őstag
válasz Tomika86 #16169 üzenetére
A stack méretet szerintem csak próbálgatással lehet belőni. Adsz valami jó nagyot, aztán addig csökkented, amíg jó. Minél több változót definiálsz a függvényen belül, annál nagyobb kell. Ha globálisak a változóid, akkor kevesebb.
Igen, simán szétszedheted gyakorlatilag akárhány részre, és megszabhatod, hogy melyik rész hol fusson.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
válasz Tomika86 #16170 üzenetére
Én úgy gondolom, hogy egy jel is elég, ha a jel okozza a megszekítást. Ha meg az a baj, hogy a micros felbontása kicsi, akkor olvasd a 80 Mhz-es bus órajelet, az nyolcvanszor nagyobb felbontású.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
nagyúr
válasz Tomika86 #16175 üzenetére
Röviden: sehogy. Hosszabban: a hétköznapi autók sebességmérője is ± 5-10% pontossággal dolgozik, nem lehet előre beállított módon pontosan mérni az utat egy alapvetően nem fix kerületű, rugalmas abronccsal, hacsak nem veszed számításba a gumikopást és a keréknyomást. Szóval ne csinálj ebből nagy gondot.
Esetleg próbálkozhatsz beépített GPS-szel, ha már adott a mikrokontroller, nagyobb sebességen nagyobb pontossággal tudsz mérni sebességet és utat is. -
Tomika86
senior tag
Ha eltekintünk, hogy gumin gördül az autó akkor hogy lehetséges?
Aztmondja munkatársam, hogy van neki egy olyan kütyüje, amivel métert számol.
Kardántengelyen vannak a csavarok figyelve és van egy kalibráló érték amivel betudják lőni és pontos az 1 méter. De nem tudom mi ez pontosan, nem gps-es[ Szerkesztve ]
-
biker
nagyúr
válasz Tomika86 #16177 üzenetére
Jót nevettem volna, nekem mondja, történetesen mi van ha elpörög a kerék homokon/vízen/jégen? Hány méter a méter? Sárban dagasztáskor mennyi? Ha ledifferál az egyikk kerék és pörög míg a másik áll, vagy kanyarban más a kerék fordulat, mennyi méter a méter?
Plusz a kardántengely mérése nem veszi figyelembe a gumi kerületét ami nyomásra változik.
Ha nem összkerekes, akkor a 4 kerék 4 abs érzékelője jeleit összegezve ki lehetne számolni pontosan a sebességet, addig amíg nem 4 kerékkel állóra fékezve csúszik.[ Szerkesztve ]
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
gyapo11
őstag
Az abs is a forgást figyeli nem a megtett utat. A gps-szel meg az a baj, hogy két mérés között nem lehet tudni mi történt, és nagyobb sebességeknél az 1 másodperc alatt megtett út már nem lényegtelen, lehet kanyarodás, a gps meg két pontot ad, közte semmit.
Szerintem jó kompromisszum a motor/féltengely/kardántengely fordulatszámának mérése. Ehhez le kell mérni az egy kerékfordulat alatt megtett utat. Nem lesz extra pontos, az állókerekes fékezést, broadside-ot, kerék kipörgést nem tudja mérni, a kerék nyomása nagyon sokat nem változik.[ Szerkesztve ]
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
-
biker
nagyúr
válasz gyapo11 #16179 üzenetére
"Az abs is a forgást figyeli nem a megtett utat."
Igen? ÉS? Én állítottam mást, vagy külön leírtam, hogy csak akkor jó ha nem összkerekes (ergo van hajtott és hajtatlan kerék) és a négy érzékelőt együtt kiértékelve kapod meg jó közelítéssel az értéket?
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
Tomika86
senior tag
Szerintem a kipörgést, csúszást, egyebeket csak gps-el lehet pontosan kiküszöbölni.
Ezektől tekintsünk el, meg a guminyomástól is.Egyébként minden futam elött bekalibrálják, kardánon van figyelve a fordulat.
Megnézik 10méterre mennyit mutat, ha mást akkor elírják a kalibrálást. Aztmondja hogy működik. Csúszást egyebeket leszámítva.
Abs gyűrű nincs, csak a kardánon lehet figyelni, a váltóból kijövő tengelyt.Köszi
[ Szerkesztve ]
-
Tankblock
aktív tag
Általában a 2 nem hajtott kerék átlaga lesz a helyes megoldás az autó sebességére. Mivel nincs hajtva nem fog kipörögni.... Ezt lehet finomítani long acc szenzor figyelembe vételével.
1 forgás 1 jel nem ad megfelelő megfigyelési értéket : Nyquist kritérium figyelembe véve az autókban 42-44 mágnes olvas egy Hall Sensor ---> voala ABS sensor.....Remélem segítettem
Release the Beast....
-
Tomika86
senior tag
Sziasztok!
Ez így működhet?
// Megtett távolság számláló
egy_fordulatra_tavolsag_mm = kalibralo_ertek_kiir / sebjela_ertek_kiir; // Egy fordulatra megtett távolság mm-ben = (d*pi)/jel 2826mm/10 = 282,6mm
aktualis_tavolsag_mm = aktualis_tavolsag_mm + maradek;
aktualis_tavolsag_mm = ford_szamlalo * egy_fordulatra_tavolsag_mm ;
if (aktualis_tavolsag_mm >= 1000.0) {
maradek = aktualis_tavolsag_mm - 1000.0;
megtett_meter++;
trip_szamol_meter++;
osszkm_szamlalo_meter++;
aktualis_tavolsag_mm = 0;
ford_szamlalo = 1;
// Megtett méter kiiratása a másodlagos kijelzőre méterenként
u8g2.setCursor(0, 50);
u8g2.print(megtett_meter);
u8g2.sendBuffer();
}
// Megszakításra hívódó függvény sebesség méréshez
void Sebesseg_esemeny () {
ford_szamlalo++;
static unsigned long elozo_micros = 0;
unsigned long akt_micros = micros();
eltelt_ido = akt_micros - elozo_micros;
elozo_micros = akt_micros;
millis_mentes = millis();
}Vagy nagy hülyeség így?
-
nagyúr
válasz Tomika86 #16188 üzenetére
Erre gondolsz?
if (aktualis_tavolsag_mm >= 1000.0) {
maradek = aktualis_tavolsag_mm - 1000.0;Ha 1999-en felüli értéket kapsz, akkor mi van?
Inkább a maradékos osztást kéne használni:maradek = aktualis_tavolsag_mm % 1000.0;
megtett_meter+=aktualis_tavolsag_mm / 1000.0[ Szerkesztve ]
-
Tomika86
senior tag
Ez az if blokk helyett vagy bele gondoltad?
Nem látom át mit csinál így.Most jelenleg az if blokkal ellenőrzöm hogy megvan az 1 méter és ekkor növelem a számlálókat. Az igaz, hogy nem működik ha 2000-es maradék lesz, de elvileg az le van védve, nem lehet akkora értéket beírni, hogy nagy legyen.
Köszi -
nagyúr
válasz Tomika86 #16190 üzenetére
Helyette, de mivel mindig csak egy-egy részletet mutatsz a programodból, nem igazán látom át, mi mit csinál benne, például milyen kód és milyen feltételek szerint növeli az
aktualis_tavolsag_mm
-t...Az a probléma, hogy a kereked 1 méternél nagyobb kerületű, nem? Tehát minden második fordulatnál túl fogja lépni a 2000mm-t...
-
Tomika86
senior tag
A kommentben odaírtam igen, van egy érték amit meglehet adni képernyőn(kerékátmérő mondjuk mmben), van egy osztó ami azt adja meg 1 fordulat alatt mennyi jel van.
Így elvileg kevesebb lesz 1 méternél.A sebességes részét mindet felraktam, eeprom mentés és nullázást nem. Az egész program meg felesleges az 1200sorával felesleges lehet ide.
Köszönöm
-
nagyúr
válasz Tomika86 #16192 üzenetére
Megmondom őszintén, hogy mással is foglalkozom ezen kívül, így nem tudom az egész projekt összes darabját fejben tartani, csak annyit látok át egyszerre, amit akkor éppen megosztasz.
van egy osztó ami azt adja meg 1 fordulat alatt mennyi jel van.
Így elvileg kevesebb lesz 1 méternél.Úgy igen.
-
Tomika86
senior tag
Sziasztok
Mi okozhatja azt Esp32 esetén, hogy néha nem kell a boot gombot nyomni? Van hogy automatikusan csatlakozik, van hogy nyomni kell.
Illetve a GPIO2 láb, ezen van egy led alapból az esp panelen. Ez alapból piros, ha kapcsolok a 2es lábon akkor kéken világít. Tehát fizikálisan működik.
Programban megvan adva INPUTként.
Viszont ahol használom egy "if" feltételben, az nem akar jó lenni. Ha if (nyomogomb) ot írok akkor mindig végrehajtódik a feltétel. Ha !nyomogomb akkor soha.
Ha kapcsolom a bemenetet, ha nem. Programban végig true értékű.De akkor miért működik a lapon lévő led?
Le van húzva 0ra és akkor világít kéken a led ha 3,3vot adok rá.
#define nyomogomb 2, így van definiálva minden be/ki menet. Nodemcu 32s a panelKöszönöm
Új hozzászólás Aktív témák
- Milyen billentyűzetet vegyek?
- Eredeti játékok OFF topik
- Politika
- Mit tehetsz jogilag, ha átvertek, megkárosítottak a Hardveraprón?
- Nők, nőügyek (18+)
- Azonnali VGA-s kérdések órája
- 2024 - Íme a 20. héten megjelenő játékok listája
- Milyen TV-t vegyek?
- Anyagi katasztrófára figyelmezteti az Apple-t a brit média
- Milyen légkondit a lakásba?
- További aktív témák...
- Samsung Galaxy Note 20 Ultra 256GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy Watch 5 Pro, Újszerű, 1 Év Garanciával
- Apple iPhone 15 128GB, Kártyafüggetlen, 1 Év Garanciával
- Denon Home 350 (Újszerű) wifis, bluetooth-os multiroom hangszóró. 1év Garancia
- iPhone 13 Pro Max 128GB Kék Vodafone/1 hónap gar./Akku 84%/p3399/
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Promenade Publishing House Kft.
Város: Budapest