- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- Barátokká váltak az eddig rivális AI-óriások
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Az Aura Displays hordozható monitorhármasa jól felturbózhatja a produktivitást
- Dual Mode-os IPS monitorral adott magáról életjelet a Gigabyte
- Apple MacBook
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Milyen széket vegyek?
- Egérpad topik
- Teljesen az AI-ra fókuszál az új AMD Instinct sorozat
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Fejhallgató erősítő és DAC topik
- AMD GPU-k jövője - amit tudni vélünk
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
-
PROHARDVER!
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
-
Scooter86101
tag
Sziasztok, azzal a kérdéssel fordulnék hozzátok hogy hiába próbálok 1307 vagy 3231 es oramodulokat használni , naponta a pár masodperces sietés mindig elő jön ...
valaki meg tudta mar ezt oldani
?
Köszönöm előre is..
Sziasztok -
-
kbhuinfo
tag
Elnézést a korábbi szűkszavúságért. A microwave radar (RCWL-0516) lábai VIN (5V), GND, és az OUT (ezen a lábon érzékelés esetén megjelenik 3,3V a GND-hez képest). Az ESP32-re kötve csak akkor jön 3.3V az OUT kimeneten (és jelzi a mozgásérzékelést a GPIO bemenetén az esp32-nek), ha az ESP32 GND pinje és az OUT között mérem a feszültséget egy multiméterrel. A kérdés pedig: mire van szükség (ellenállás, kondenzátor, stb.), hogy jól működjön az áramkör? Feltételezem, hogy valami hiányzik és a mérés az, ami ezt az űrt betölti... Köszi!
-
-
kbhuinfo
tag
Van egy microwave radar, amely csak akkor működik jól (értsd: közelítésre HIGH jelet ad), ha a GND és a kimenete között mérem a feszültséget multiméterrel. Mit kell csinálnom, hogy mindig jól működjön?
-
tvamos
nagyúr
Ha esetleg valakit erdekel...
Ez a kod nem mukodik: [link]
(Eleve a 10+10 us nem 38kHz. Nem tudom, nekik hogy ment...)Kesobb talaltam ezt: [link]
Ez elvileg jo, de megtartottam az elozo kodot, es atirtam az idoziteseket erre.Most mar tudok Nikonnal exponalni, es html feluleten allitani az intervalometert.
-
tvamos
nagyúr
Probalt mar valaki Nikon fenykepezogepet vezerelni Arduinoval (pontosabban ESP32) IR-en keresztul? Van par pelda, nem tudom, hogy melyiket probaljam.
-
Tankblock
aktív tag
Hello,
Bocs én nem olvastam végig csak addig h mi kellett volna:
A code fennt van a giten latest verziója 2.5
[link] vagy használod ezt, vagy gitre nézel egy gyorstalpalót és leszeded a 2.4 release path ot.
A codeban a auto kifejezéstől hasal el. Azt nem tudom h az Arduino milyen c++ ra fordít, gyanakszom, hogy valami legújabb verzió, így nem tud vele mit kezdeni. Valahol csak meg lehet mondani, milyen c++ verziót preferáljon. Erre most nem lesz időm.
-
szente
addikt
Sziasztok!
0 db mikrokontrolleres tapasztalattal szerettem volna megépíteni ezt:
Alap projekt:[link]
Az alternatíva amit szerettem volna:
[link]
És igazából itt jött a probléma.Download and extract HID-dev_2_4 to arduino-nightly\libraries, then rename it to HID
https://github.com/NicoHood/HID/archive/dev_2_4.zipEz már nem elérhető. Próbáltam helyettesíteni ezzel: [link]
Gondoltam hátha ugyan az, de feltöltéskor hibaüzenetet ír és nem tölti fel.A kód amit fel kell töltenem az ez lenne:
[link]A hibaüzenet pedig ez:
Arduino: 1.8.8 Hourly Build 2018/11/23 04:33 (Windows 10), Alaplap:"SparkFun Pro Micro 5V/16MHz"
Figyelem: a platform.txt-nek a 'SparkFun AVR Boards' magból elavult recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}"-t tartalmaz, automatikusan átalakítva erre: recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}". Fontold meg ennek a magnak a frissítését.
In file included from d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.h:65:0,
from d:\program\arduino-nightly\libraries\hid\src\hid-apis\defaultkeyboardapi.h:27,
from D:\program\arduino-nightly\libraries\HID\src/SingleReport/BootKeyboard.h:31,
from D:\program\arduino-nightly\libraries\HID\src/HID-Project.h:53,
from C:\Users\ideab\Documents\Arduino\sketch_nov26b\sketch_nov26b.ino:33:
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp: In member function 'size_t KeyboardAPI::write(KeyboardKeycode)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:47:7: error: 'ret' does not name a type
auto ret = press(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:48:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:51:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp: In member function 'size_t KeyboardAPI::press(KeyboardKeycode)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:58:7: error: 'ret' does not name a type
auto ret = add(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:59:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:62:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp: In member function 'size_t KeyboardAPI::release(KeyboardKeycode)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:69:7: error: 'ret' does not name a type
auto ret = remove(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:70:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:73:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp: In member function 'size_t KeyboardAPI::releaseAll()':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:94:7: error: 'ret' does not name a type
auto ret = removeAll();
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:95:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:98:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp: In member function 'virtual size_t KeyboardAPI::write(uint8_t)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:105:7: error: 'ret' does not name a type
auto ret = press(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:106:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:109:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp: In member function 'size_t KeyboardAPI::press(uint8_t)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:116:7: error: 'ret' does not name a type
auto ret = add(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:117:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:120:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp: In member function 'size_t KeyboardAPI::release(uint8_t)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:127:7: error: 'ret' does not name a type
auto ret = remove(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:128:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:131:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp: In member function 'size_t KeyboardAPI::set(uint8_t, bool)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:158:7: error: 'ret' does not name a type
auto ret = set(KeyboardKeycode(k & ~SHIFT), s);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:162:21: error: 'ret' was not declared in this scope
if((k & SHIFT) && (ret || !s)){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\KeyboardAPI.hpp:165:9: error: 'ret' was not declared in this scope
return ret;
^
In file included from d:\program\arduino-nightly\libraries\hid\src\hid-apis\defaultkeyboardapi.h:76:0,
from D:\program\arduino-nightly\libraries\HID\src/SingleReport/BootKeyboard.h:31,
from D:\program\arduino-nightly\libraries\HID\src/HID-Project.h:53,
from C:\Users\ideab\Documents\Arduino\sketch_nov26b\sketch_nov26b.ino:33:
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp: In member function 'virtual size_t DefaultKeyboardAPI::set(KeyboardKeycode, bool)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:49:9: error: 'key' does not name a type
auto key = _keyReport.keycodes[i];
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:52:14: error: 'key' was not declared in this scope
if (s && (key == uint8_t(k) || key == KEY_RESERVED)) {
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:58:15: error: 'key' was not declared in this scope
if (!s && (key == k)) {
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp: In member function 'size_t DefaultKeyboardAPI::write(ConsumerKeycode)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:88:7: error: 'ret' does not name a type
auto ret = press(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:89:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:92:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp: In member function 'size_t DefaultKeyboardAPI::press(ConsumerKeycode)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:99:7: error: 'ret' does not name a type
auto ret = add(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:100:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:103:9: error: 'ret' was not declared in this scope
return ret;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp: In member function 'size_t DefaultKeyboardAPI::release(ConsumerKeycode)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:110:7: error: 'ret' does not name a type
auto ret = remove(k);
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:111:5: error: 'ret' was not declared in this scope
if(ret){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\DefaultKeyboardAPI.hpp:114:9: error: 'ret' was not declared in this scope
return ret;
^
In file included from d:\program\arduino-nightly\libraries\hid\src\hid-apis\nkrokeyboardapi.h:64:0,
from D:\program\arduino-nightly\libraries\HID\src/SingleReport/SingleNKROKeyboard.h:31,
from D:\program\arduino-nightly\libraries\HID\src/HID-Project.h:55,
from C:\Users\ideab\Documents\Arduino\sketch_nov26b\sketch_nov26b.ino:33:
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp: In member function 'virtual size_t NKROKeyboardAPI::set(KeyboardKeycode, bool)':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp:60:8: error: 'key' does not name a type
auto key = _keyReport.key;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp:63:13: error: 'key' was not declared in this scope
if (s && (key == uint8_t(k) || key == KEY_RESERVED)) {
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp:69:14: error: 'key' was not declared in this scope
if (!s && (key == k)) {
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp: In member function 'virtual size_t NKROKeyboardAPI::removeAll()':
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp:86:8: error: 'bits' does not name a type
auto bits = _keyReport.allkeys[i];
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp:88:7: error: 'bits' was not declared in this scope
if(bits & 0x01){
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp:91:4: error: 'bits' was not declared in this scope
bits >>=1;
^
d:\program\arduino-nightly\libraries\hid\src\hid-apis\NKROKeyboardAPI.hpp:93:9: error: 'bits' was not declared in this scope
while(bits);
^
exit status 1
Hiba a(z) SparkFun Pro Micro 5V/16MHz alaplapra fordításra.
Ennek a jelentésnek több információja lehetne
a "Bővebb kimenet mutatása fordításkor"
opció engedélyezésével a Fájl -> Beállítások-ban.Gondoltam ha követem a lépéseket, akkor tapasztalat nélkül is menni fog, de így ez most "hót homály".
Tudnátok segíteni?
-
Janos250
őstag
Tudtommal mindkét magon van, de én a led kezelő real time részt egyedüliként tettem az 1. magra, ott nem sikerült teljesen letiltani. Ha valaki tudja a teljes letiltást, írja le lsz! Ha "letiltjuk a megszakításokat", akkor nagyon le sikerült rövidíteni, de teljesen nem tudtam kiiktatni. Az összes szín számítást, miegymást a 0. magra tettem, tudtommal a WiFi kezelés is ott fut.
Ha az RMT-t használja az ember, akkor ezek a gondok nincsenek. Ott 8 ch. van, mindnek külön memóriája, satöbbije. Így akár 8 led szalagot is tudsz párhuzamosan kezelni. Elvileg. Ha csak egy szalagod van, akkor akár az erre a célra rendelkezésre álló TELJES memória tartományt odaadhatod neki, ami tovább könnyíti az életed.Van számláló, ami mutatja, hogy a memória kivitele hol tart, és státus jelző is van.
Vagy figyeled, hogy hol tart a kivitel, és amikor mondjuk felét kivitte, akkor annak a helyére már írhatsz, vagy ha interruptot használsz, akkor szemafort állítasz be. Arra figyelni kell, hogy a binárisnak nevezett szemafort kell beállítani, mert az az, ami a megszakításból kilépés után egyből elkezd futni. A másik csak akkor kapja meg a vezérlést, amikor a következő időszeletet neki osztja ki a rendszer, azaz, csak a prioritást állítja.A dőlt betűs nincs dokumentálva, de kitököltem, és amit korábban linkeltem, abban bejelöltem.
-
Janos250
őstag
válasz
Tankblock #9981 üzenetére
"HW azért van hogy használjuk"
A kiváncsi ember meg azért. hogy mindent kipróbáljon.
Igen, vannak rá kész könyvtárak az RMT-re, de...
Kiváncsi voltam, hogy elég gyors-e az ESP32, hogy szoftveres időzítéssel kezelje ezeket az 1 mikro alatti időzítéseket. Igen, elég gyors. Akkor persze nem a millis és micros függvényeket használjuk, hanem a 240 MHz-es órajeleket számláló SFR regisztert. Igaz, hogy ez csak 32 bites, és tizen.. másodpercenként átfordul, de lehet 64-bites eredményt is kapni, ha elég sűrűn olvassuk.Az RMT-t is végigpróbálgattam. Nem a kész könyvtárakat - bár azt is megnéztem persze - hanem közvetlenül az egyes regisztereket. Így azokat is sikerült azonosítanom, ami - akkor legalábbis - dokumentálatlan volt.
link
Ha nem -
AcCEsS
senior tag
Mindenkinek köszönöm a tanácsot, megoldódott a dolog, működik jól a ledszalag vezérlése és nincsenek random effektek! Minden forrasztási ponton újra átmentem (volt egy gyanúsan gyenge), meghagytam a logic level konvertert is, rövidebbre vettem a raspberry és a ledszalag közötti összekötőkábelt, és tettem rá egy ferritgyűrűt. Hogy melyik oldotta meg a problémát, nem tudom, a lényeg, hogy megy! Köszönöm az ötleteket!
Egyébként a végén véletlenül kimaradt a raspberry gpio portára kötött logic level konverter 5 voltos lába meg a ledszalag vezérlőszála közül a 300ohmos ellenállás. Ez gond lehet, vagy ne foglalkozzak vele?
-
-
Janos250
őstag
Leírom a saját tapasztalatomat, bár az eléggé különbözik az ESP32 miatt.
Ha a jel hosszát elég jól lőttem be, akkor rövid szalaggal símán ment. Ha növeltem a ledek számát, akkor a tiédhez hasonló jelenséget tapasztaltam. Digitális analizátorral derült ki az ok:
Az ESP32 1 ms-enként megszakít, akkor adja át a vezérlést - ha szükséges - másik tasknek. Amíg a kevés led miatt a magot megkapott processz 1 ms-en belül el tudta végezni a dolgát, addig minden símán ment. Ha ezt meghaladta a ledre "feltöltési" idő, akkor ha közben megszakított egy jel közben, akkor a rövig jel helyett hosszú lett véletlenszerűen, és bolondságokat csinált. Ha éppen egy alacsony helyiértékű bit lett hibás, akkor éppen nagy gond nem volt, de ha egy magasabb helyiértékű bit szaladt túl, akkor az galibát okozott. Nem azt akarom mondani, hogy nálad is ez a gond, hanem csak azt, hogy nálam ez volt, vedd esetlegesen számításba az időzítési hibát is. Egy digitális analizátorral kéne megnézni.(Ja, még mielőtt az ESP32-t használók felkapják a fejüket, ez annál a verziónál volt, amikor nem hardverből vezéreltem a ledeket, hanem símán C++ programból. Az ESP32 ugyanis elég gyors ahhoz, hogy ezt meg lehessen csinálni. Az interruptok megfelelő tiltásával kezelhetővé vált a probléma. A hardveres vezérlésnél ilyen gond nem volt, mert ott van elég idő az egyik pufferbe töltéshez, amíg a másik puffert nyomja kifelé a hardver)
-
szirmail
újonc
Sziasztok!
Korábbi hozzászólásokban olvastam Rojaflex redőnymotor vezérléssel kapcsolatos próbálkozásról. Pár napom már ráment, de nem igazán találtam jó megoldást. Domoticz+RFlink vezérlést használok, a SOMFY motorok vezérlése szépen működik.
Az RFlink debug módban sem észlel semmit a kommunikációból. Valakinek sikerült már működésre bírni ilyen redőnymotort valamilyen otthon automatizálási megoldásból?Köszönettel!
-
Janos250
őstag
Nekem gyanús ez a 3.3V ügy! Tudtommal az első led már "feldolgozva" adja tovább a következőnek, tehát az első kivételével - gyanítom - nem villoghatnának emiatt. Én egy éve körül sokat játszottam ezzel a leddel és ESP32-vel. Az volt a tapasztalatom, hogy az általad is leírt hibajelenség időzítési hiba volt. Ha túl rövid, vagy túl hosszú volt a jel, vagy a két pixel közötti idő túl nagy volt (8 us, vagy több) interrupt miatt, és elölről kezdte.
Persze lehet, hogy nálad egész más a gond. -
Vladi
nagyúr
Uraim!
Jelentem működik a cucc, jön a stabil jel. 50 körüli jel/sec, ami megfelel az előzetes számításaimnak.
Annyira mondogattam, hogy a hardver jó, hogy kiderült, nemjó. 1uF debounce kondit használtam - ez a board nyomógomb jelstabilizálásra és izolálásra lett tervezve. De ide nem jó. A kondit kivágtam, így már stabil.Az enkóder gyárilag tartalmaz erre megoldást.
Köszi a bíztatást és segítséget: vargalex, _q, Gergosz2, weiss, aryes, Janos250
ecaddsell te meg vigyázzá, mer jössz te még fedora topikba.
Olyan nagyon ne örüljetek, mer már a hardver már össze van rakva a kövi projektemhez, ez egy CNC punching machine lesz - nemtomamagyar nevét - arduino vezérléssel.
Énse nagyon örüljek, mer hátha lesz topiktali, akkor az egész banda Vladi kontójára iszik.
-
AcCEsS
senior tag
1 éve használok a tv hátuljára felszerelt ledsort (ws2812b - 5voltos) ambient fényként, Raspberry-ről vezérelve hyperion-al. 94 ledet működtetett eddig, de a múlt héten nagyobb tv-re váltottunk, és ki kellett bővítenem a sort a nagyobb képátló miatt. Jelenleg 124 led van a valamivel több, mint 4 méteres ledsorban, de valamiért nem jól működik. Random fényfelvillanásokat meg össze-vissza villogásokat csinál a ledszalag. Ellenőriztem a feszültséget, és a szalag végén 4.95 voltot mértem, egyébként egy PC-s ATX tápról hajtom. Ami még jelentős változás az előző kiépítéshez képest, hogy a Raspberry-t át kellett helyeznem, és a GPIO portját meg a ledszalag adatbuszát egy kb. 60-70 centiméteres kábellel kellett összekötnöm. Lehet, hogy az túl hosszú? Vagy valami zavart szed fel? Tudom, hogy ez nem igazán mikrokontroller téma, de feltételezem, hogy kábelhossz témában (is) jóval nagyobb tapasztalatra tetteket szert az évek során. Egyébként úgy emlékszem csinált ilyet annak idején, amikor a GPIO port és a ledszalag közé betettem egy 300ohmos ellenállást...
-
Teasüti
nagyúr
Üdv!
Ismertek olyan boltban kapható fényerő szenzort, rotary encodert és mozgásérzékelőt, amik burkolattal rendelkeznek - ergo alkalmazásra készek - és 5V-on működnek?
Köszi! -
Vladi
nagyúr
válasz
LógaGéza #9962 üzenetére
Az mindegy, hogy mi az ajánlott, ha ráengedsz 20 voltot, lehet menni fog, mert kevés fogyasztást vesz fel. Mondjuk egy ledet villogtat stabilan. De ha már 4 relé modult kell az 5 voltos ágon meghajtani, akkor annyi sok lesz a hőtermelése, hogy egyszerűen elég.
Én úgy szoktam lenni vele, hogy arduino minél kevesebbet hajcson meg, mondjuk csak opto izolátorokat.
Azt is vedd figyelembe, hogy azok a kis kék relék tutira nem bírják átereszteni a rájuk írt adatot. 10 A 230-on? Ne röhögtess. Ennyit tuti nem bír.
Az meg jó vicc, hogy szakértő rakta össze, de te stabilizáld. VAgyis fingja nincs, hogy mi a baja a rendszerednek.
-
Vladi
nagyúr
válasz
LógaGéza #9957 üzenetére
Ilyen relémodullal én is szívtam, annyit ér, amennyit adtál érte.
Amiket csináltam: árnyékolt kábel, ez nem sokat segített
- árnyékolni az egész cuccot, pl: fémdoboz, ez már kicsit hozzáadott.De amivel végül nullára redukálódott a probléma az az ssr relé lett. Mondjuk ahová én használom, ott nettó 5-6000 ft darabja, vagy akár efölött.
Az arduino tápját is nézd meg alaposan. Én úgy vettem észre, hogy a kiscucc nagyon érzékeny a tápra, ha nem kapja stabilan a nafát, akkor a pineken is ingadozhat az áram.
Jah meg azt is vedd figyelmbe, hogy az ilyen mechanikus relének elég magas a sebesség minimuma, képtelenség stabilan kapcsolni 0.5 másodperc alatt! Kibe kapcsolás legalább 1 sec!
-
fpeter84
senior tag
válasz
LógaGéza #9962 üzenetére
Csak óvatosan azzal a tápfesszel, mert nálam már nem egy kínai UNO/NANO/MEGA köszönt el 12V bemenő mellett! A rajtuk lévő 1117 LDO-ból legalább 1-2 tucatnyi féle létezik, és van amelyiknél mindössze 12V a megengedett legnagyobb bemenő tápfesz, de olyan is aminél 20V. Mindenesetre nekem már nem egy elpukkant (ugye a 12V-nak írt fali táp se feltétlenül kerek 12V), ezért azóta 8-10V fölé sosem viszem a tápját és így még egy sem adta meg magát... Ha autós felhasználásra kell vagy nem megoldható / nem praktikus az alacsonyabb tápfesz, akkor ilyen filléres step-down-t teszek elé inkább - a rajta lévő MP2307 tartósan mehet 20V fölött is és nem fog elmelegedni...
-
válasz
LógaGéza #9962 üzenetére
Az általad linkelt relé modul már eleve tartalmaz minden alkatrészt, ami a relé meghajtásához kell, ellenállást, tranzisztort, mert ugye direktben nem lehet relét kötni egy kimenetre, tehát nem kell már oda semmi más.
Tápfeszültségben egészen 6,4V-ig le lehet menni, a regulátornak legalább 1,4V-tal kell magasabb tápfeszültség, mint amit a kimenetén előállít, tehát akár a 7,5V-os táp is bőven elég lenne, a melegedés és a veszteség is kevesebb lenne. -
LógaGéza
veterán
Igazából az UNO oldalán azt írják, hogy a 9-12V az ajánlott, valóságban 20V-ig működik, csak ugye akkor sok lesz a hőtermelés. Azért szeretném hagyni így, mert akkor kb meg tudom oldani egy ilyenre cserélevel a mostani tápot - valamint nehéz találni 9V-os tápot szerelhetőben, ha jól tudom csak 7,5ös létezik - na meg többszörös áron szabályozható.
Akkor a relé, és az UNO közé nem kell ellenállás? Sok melótól mentene meg... Nehezíti a dologot, hogy 4 méter magasan van beépítve az egész, és csak létráról tudom szerelni... -
válasz
LógaGéza #9960 üzenetére
Bocs, már én is fáradt vagyok és hülyeséget írtam, kimenetekre természetesen nem kell felhúzó ellenállás, csak a bemenetekre.
Valószínű a 4 relé összes áramfelvétele miatt válik instabillá az UNO működése. Próbáld meg külön táppal a relé modulnak, és szerintem az UNO is kaphatna egy kisebb, 7-9V közti tápot. -
LógaGéza
veterán
Anno úgy rémlik, hogy a fogyasztó külső tápját, és az Arduino GND-jét össze kellett kötni (pl itt: [link], valamint itt volt még egy ellenállás is a vezérlő pinen).
Nem PWM lesz az, csak sima Digital Out... Túl sok minden van a fejemben
Eredeti UNO, és nincs külön ellenállás - elvileg hozzáértő rakta össze, én csak örököltem a projektet, hogy próbáljam stabilan működésre bírni.
Igazából akkor itt úgy látom, hogy külön kell egy 5V-os tápot adni a relének, és valószinű az nyírja ki, hogy nem bírja az UNO a terhelést amit a relékapcsolás igényel...
-
válasz
LógaGéza #9957 üzenetére
"nincs közös testen semmi,"
Ezt fejtsd ki bővebben!" A relémodul egy ilyesmi, GND-t és 5V-ot, valamint a 4 PWM jelet az UNO adja neki,"
PWM a relé modulnak??
Az 5V-ot a relé tekercséhez az UNO regulátoráról veszed, miközben az UNO 12V tápot kap? Azon csodálkozom, hogy még nem durrant el a regulátor a terheléstől. Eredeti UNO, vagy kínai másolat? Utóbbiak terhelés nélkül sem nagyon bírják a 12V tápot, tartósan 9V körül lehet őket üzemeltetni.
A relét vezérlő lábakon van le- vagy felhúzó ellenállás? -
válasz
adatfalo #9956 üzenetére
A ReceiveText beolvassa a soros portról az oda érkező karaktert. Ha az a karakter "a", akkor az if ág működik. Ha nem az, akkor az else if ágban már nincs mit beolvasni, 0 byte lesz, ezért nem kerül oda soha a vezérlés.
A logikai hiba tehát az, hogy egyszer kellene a karaktert beolvasni a ciklus elején, mégpedig egy változóba, utána pedig egy switch-be tenném a lehetőségeket, az egymásba ágyazott else if -ek sora nem túl elegáns megoldás és tele van hibalehetőséggel. -
LógaGéza
veterán
Üdv!
Arduino UNO-val vezérlek egy 4 relés modult, ami kapcsol 2 kürtöt, és 2 LED szalagot - vagyis kapcsolna, ugyanis nem bírom stabilan működésre bírni. Néha magától elengedi a relét, néha beragad, és nem tudom lekapcsolni, néha pedig eldobja a hozzáférést (egy Ethernet Shield van rajta, és hálózaton keresztül vezérlem).
A két LED szalag is külön tápot kap, a két kürt is, valamint az UNO-nak is van egy külön, 12V-os tápja. A relémodul egy ilyesmi, GND-t és 5V-ot, valamint a 4 PWM jelet az UNO adja neki, nincs közé semmi kötve. A fogyasztók mind 12V-osak, és a relé pozitivot szakít.
Miért dobhatja el magát? Arra gondoltam, hogy valami visszajátszhat a reléknél, és letilt az Arduino.
Valamint nincs közös testen semmi, ez okozhatja a problémát? -
adatfalo
senior tag
válasz
Gergosz2 #9955 üzenetére
Köszi!
Későbbiekben biztos kipróbálom, viszont az App Inventorban már felépítettem a progit és úgy gondolom, hogy csak valami logikai gikszer az ami miatt nem működik jól a program, ezt szeretném valakinek a segítségével megoldani, de egyébként ide is bemásolom:
Van 20 gombom, amit Arduino vezérel, mindegyik gomb lenyomásával az abc egy betűjét küldöm ki serialport-on, és azt szeretném, hogy mind a 20 gomb lenyomásánál más-más háttérre változzon a HorizontalArrangement12. Az "a" lenyomásánál Image5-re, a "b" lenyomásánál Image6-ra, stb, stb:
Ezt dobtam össze hozzá:
Az "a" lenyomása működik is, viszont a "b" már nem.Egyébként ha sima Terminal progiban nézem, akkor kiírja az adott karektert:
Tudok küldeni .aia filet is aki foglalkozna vele és megnézné!
-
Gergosz2
veterán
válasz
adatfalo #9954 üzenetére
Én használtam anno. Tényleg jó cucc tanítani és kisebb projekteket megcsinálni. De elég hamar el is lehet érni a határait, pl, hogy az app fusson háttérben meg hasonló. Személy szerint itt tértem át az Android Studiora. Ha van programozési tapasztalatod, akkor a Java-t is érteni fogod. Persze szokni kell, hogy hogyan kell felépíteni a progit, de végtelen anyag van a neten.
-
adatfalo
senior tag
Sziasztok!
Van itt olyan aki jártas MIT App Inventor-ban (arduino+app inventor)? Volna egy határidős projektem, ami nem akar tökéletesen működni, és szívesen fogadnám freelance-ek jelentkezését privátban! Természetesen fizetnék annak, aki tudna segíteni!
Előre is köszi!
-
-
JozsBiker
aktív tag
válasz
ecaddsell #9949 üzenetére
Ha az
index <= "1111";
sor értékadás, akkor nyilván 1111 lesz, de biztos hogy az ? Inkább egy összehasonlításnak tűnik, ami egy logikai igaz-hamis értékkel tér vissza, ami viszont nem fog az index változóba íródni. De ez attól is függ, milyen nyelven íródott, el tudok képzelni olyan szintaktikát, aminél a <= az értékadás irányát mutatja.
-
ecaddsell
aktív tag
Ugyan nem mikrokontroller, de nem találtam jobb topikot, és talán itt van a legjobb esélyem, hogy választ kapjak.
Szóval van egy VHDL kód amit nem teljesen értek aminek az oka (azon felül, hogy ebben a témában nem vagyok jó) az, hogy ugyanahhoz a jelhez több értékadás történik a processen (folyamaton) belül.Egyszerűsítve:
process(sck,index)
begin
if RISING_EDGE(sck) then
index <= index + 1;
end if;
if clear='1' then
index <= "1111";
end if;
end process;Az első if az ugye triviális, az órajel felfutó élére növeli az indexet (ami egyébként a teljes kódban sehol máshol nincs módosítva). Viszont a másik if-ben ugyanahhoz a jelhez van még 1 értékadás. Nem mellékesen a process érzékenységi listáján is ott van az index.
A kérdés az, hogy mi lesz az index értéke, ha a clear input be van állítva?Tippem szerint "1111". A miértre is fel tudok állítani valami teóriát (a folyamat újra indul az index változása miatt ahol már csak a második if fut), de szívesen olvasnám valakinek a véleményét aki jobban ott van ebben a témában.
Bónusz kérdés: Jól értem-e, hogy ha van egy másik folyamat aminek az érzékenységi listáján csak az index van akkor ha a clear értéke be van állítva akkor az nem fog elindulni?
-
kbhuinfo
tag
Tud valaki segíteni ESP32 SPIFFS használatában?
-
JozsBiker
aktív tag
válasz
Johnny_vT #9942 üzenetére
Nekem az Instructables az egyik kedvencem. Gondolom egyértelmű de azért leírom: a keresőjébe beírod az arduino -t, aztán már csak győzd idővel :-) Egyébként gratula a drónhoz, és külön le a kalappal a leírás miatt!
-
fpeter84
senior tag
válasz
Johnny_vT #9942 üzenetére
arduino projects, top 10 arduino project és hasonló kifejezésekre keresgélve rengeteg ötlettel találkozhatsz, valamint unalmas óráimban van hogy olyan oldalak arduino kiegészítő listáit nézegetem mint a banggood, dx, gearbest - utána persze nem feltétlenül ott veszem meg ha valami felkelti az érdeklődésemet, de ötlet gyűjtésre jó...
-
válasz
Johnny_vT #9942 üzenetére
Nekem smart car, mega board, néhány mikrokapcsoló, IR reflektív- és résopto encoder tárcsával a motorokra, UH szenzor, Bluetooth a vezérléshez.
Második projekt egy rfid kártyaolvasó Monopoly és Gazdálkodj okosan társasjátékokhoz.
Utoljára egy eredeti C64 billentyűzethez csináltam custom usb illesztőt pro micro-ból egy Raspberry Pi-hez (Retropie emulátort építettem egy eredeti C64 breadbox házból). -
ecaddsell
aktív tag
válasz
Johnny_vT #9942 üzenetére
Nekem CO2 szenzor (MH-Z14A), ami a mai napig megy és napi szinten használjuk. Nem mellékesen az egyetlen amit rendesen bedobozoltam (mini OLED kijelzőre írogatja az aktuális értéket meg a trendet).
Viszont mivel elsődleges, hogy ne veszítsd el a motiváltságot, lehet maradnod kellene a drón témában, amihez talán kevesebbeknek van itt ötlete (viszont a súly miatt kezdésnek húzós lehet mert paneleket építeni 0603-as meg 100 lábú CPLD alkatrészekből mint pl. a XC2C128 teljesen más mint evaluation bord-okból valamit összehuzalozni). Szóval nem árt a realitások talaján maradni, hogy ne legyen kudarc.
-
Johnny_vT
senior tag
Sziasztok!
Hobbiból építettem magamnak egy FPV drónt és közben többször felmerült bennem a gondolat, hogy a vadiúj barkács és programozás ismereteimet más projektekben is felhasználnám. Főleg mivel az Arduino-k aprópénzért megvásárolhatók.
Ötletem viszont nincs. Van olyan weboldal vagy YouTube csatorna, ahonnan ihletet meríthetnék? Nektek mi volt az első projektetek?
-
Vladi
nagyúr
3 csatornája van összesen, 2 rövid és 1 hosszú eltolásba. Nem tom jobban elmagyarázni, az adatlapjában benne van. EGészen komplex módon is tudod mérni a dolgokat.
100 osztású, tehát ilyen 3.6 fokonkélnt egy érzékelő. Most ebből hogy jön ki mondjuk 1/2 fordulaton 1500 jel?
Azért kell az egész bonyolítás mer a nyüves gépen nincs 1 db állandó fordulatú tengely.
-
"Ez a vágási ciklus. Az enkóder gyári értéke 100/fordulat, 200-ra lett gyorsítva áttéttel, 8 rpm-ről 16 rpm-re.
Egy lap kb 16 secundum, azaz 26-27 impulzus/sec. 1600 imp/min. 420-430 impulzus között lesz a szabvány 390 mm
0.91 mm/imp ezzel lehet számolni. 420 mm-es lap így kb: 460 imp."Ezt miért bonyolítottad ennyire el? Időből, sebességből saccolva számolod a távolságot. Miért nem a gép menetsűrűségét szorzod fel az encoder felbontásával? Akkor a "420-430 között lesz a szabvány" helyett tizedmm-re pontos adattal tudnál dolgozni.
-
Janos250
őstag
Ezért nehéz az élet enélkül:
https://www.ebay.com/itm/24MHz-8CH-USB-Logic-Analyzer-24MHz-8-Channel-Compatible-to-Saleae-ARM-FPGA-M100/272828061041?hash=item3f85d1d571:g:9rgAAOSwFjlZqCfv:rk:5:pf:0Egy ilyen 1800 forintos analizátort kötsz a kimenetre, és máris nagy felbontásban, nagy pontossággal, vissza tudod nézni PC-n hogy mit adott ki a szerkentyű. Én már többször javasoltam, hogy ne sajnáljátok rá azt az 1800 forintot. Nekem van ez is, meg a 100 megás is, de az esetek 99 százalékában elég ez a kisebb.
Persze még könnyebb lenne az élet egy jobb digitális tárolós szkóppal, de az százezer fölött kezdődik, aki nem mindennap használja, annak nem éri meg. Pedig pergés (prell) ügyben az az igazi. -
ecaddsell
aktív tag
válasz
ecaddsell #9932 üzenetére
Szóval ha fix szélességű impulzusokat ad akkor valami ilyesmi kellene (tudni kellene, hogy HIGH, vagy LOW a pulzus értéke):
#define MINPLENGTH 15000
void szamlalo(){
volatile static uint32_t thi = 0, tlo=0, tm = 0;
uint32_t td, ctm = micros();
td = ctm - tm;
tm = ctm;
if (digitalRead(PULSE_ENC)) tlo += td;
else thi += td;
if(thi > MINPLENGTH){
thi = tlo = 0;
currentpulse++;
}
else if (tlo > MINPLENGTH) thi = tlo = 0;
}Ha nem, akkor a túl gyors változásokat figyelmen kívül kellene hagyni (olyan kód kellene).
Szóval látszik jó lenne tudni milyen annak a jeladónak a jele, kisebb meg nagyobb forgási sebességnél.
De innen már vsz. te is meg tudod oldani.
Arra figyelni kell a kódolásnál, hogy ha LOW értéket olvasunk a megszakításban akkor az előző időszak HIGH volt... -
ecaddsell
aktív tag
Ja bocs, akkor amit írtam nem lesz jó (de mintha valami rotary encoder leírást linkeltél).
Ha valami pulzusos jeladó az sem nehezebb.Ugyanúgy minden élre kell interrupt és mérni kell a legutóbbi interrupt óta eltelt időt.
Két összegző kell (static volatile) ami minkét állapotban eltöltött időt összegi. Ha pulzus ideje meghaladja az elvárt időhossz mondjuk kétharmadát (vagy 3/4-ét ez jelalakból vagy próbával) akkor elfogadjuk, léptetjük a számlálót és mindkét idő összegző nullázva.Szóval amit lent írtál még így nem elég.
-
Ebben ezek szerint van elektronika? Akkor elvileg megoldja magának odabent a pergésmentesítést. Mondjuk az árából ítélve akár még kávét is főzhetne...
-
Vladi
nagyúr
válasz
ecaddsell #9926 üzenetére
Köszi újra a segítő szándékot, mint láthatod én maga vagyok a "nagyon kell." Sorry.
Az én cuccom nem rotary encoder, hanem incremental encoder. link Egy nagyságrenddel több jelet ad ki magából, mint egy sima forgó kapcsoló. (rotary encoder)
Nagyságrendileg 50 jelet másodpercenként. Ez 20 ms hosszú jelet jelent. Ebbe még prellnek és prell mentesítésnek is bele kell férnie.
Nade basszus! A kódodból alig értek valamit...
Most az lesz, hogy kiveszem a hardveres prell mentesítést (csípőfogó
) aztán alkalmazok szoftverest.
Ha loopban számlálok, akkor simán delay és kész, interruptban kicsit macerásabb, de találtam arra is példát.Csak azt kell kikísérletezni, hogy kb hány milisec legyen.
Majd próbálgatom 1-20 között, ahhol stabil az érték, ott a nyerő.
Egyébként tipikusan mennyi lehet ennek a konkrét cuccnak a prellegéi ideje? 1-2 ms?
másik: delay helyett ezt rakhatom az interrupt voidomba:
if((long)(micros() - previousMicros) >= dbenk * 1000){
currentpulse++;
Interrupt();
previousMicros = micros(); -
ecaddsell
aktív tag
Na akkor rotary encoder prell mentesítés még egyszer.
Az alapötlet innen:
https://www.best-microcontroller-projects.com/rotary-encoder.html
Én KY-040-el használom (sokat), hibázni még nem láttam. A logika megszakításban megy, a lekérdezés poll.
A speed control arról szól, hogy ha gyorsabban tekered akkor nagy ugrásokkal megy. Frekvencia beállításnál igen hasznos, máshol ahol fontos, hogy az elmozdulással legyen arányos az érték meg nem kell (ki kell kapcsolni).
Mivel ez is olyan téma, hogy jó megoldást még nem láttam (ezért voltam kénytelen egyet írni), hibásat annál többet, érdemes eltenni a linket.
Kommentelni akkor szoktam kódot, ha nagyon kell. Sorry./*
This code is free software; you can redistribute it and/or
modify it under the terms of the CC BY-NC-SA 3.0 license.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND...
*/
#define ROTE_CLK GPIO_NUM_xx
#define ROTE_DT GPIO_NUM_xx
#define ROTE_SPCTM 50000 // speed control time limit, not defined no speedctrl
volatile int32_t rotval = 0;
void IRAM_ATTR isrrot() {
volatile static uint8_t pinsta = 0x3, cwi = 0, ccwi = 0;
volatile static uint8_t cwexp[] = {0xD, 0x4, 0x2, 0xB};
volatile static uint8_t ccwexp[] = {0xE, 0x8, 0x1, 0x7};
int32_t rvchg;
#ifdef ROTE_SPCTM
volatile static uint32_t tc = 0, tm = 0;
uint32_t ctm, td;
#endif
pinsta = (pinsta << 2) & 0xf;
if (digitalRead(ROTE_DT)) pinsta |= 0x2;
if (digitalRead(ROTE_CLK)) pinsta |= 0x1;
if (pinsta == cwexp[cwi]) cwi++;
else if (pinsta == ccwexp[ccwi]) ccwi++;
if (cwi == 0x4 || ccwi == 0x4)
{
if (cwi == 4) rvchg = 1;
else rvchg = -1;
pinsta = 0x3; cwi = 0; ccwi = 0;
#ifdef ROTE_SPCTM
ctm = micros();
td = ctm - tm;
tm = ctm;
if (td < ROTE_SPCTM / 2) rvchg *= 7;
else if (td < (ROTE_SPCTM * 2) / 3) rvchg *= 4;
else if (td < ROTE_SPCTM) rvchg *= 2;
#endif
rotval += rvchg;
}
} // isrrot
int16_t getrotv() {
static int32_t lval = 0;
int32_t cval = rotval;
int16_t rotc = 0;
if (lval != cval) {
rotc = cval - lval;
lval = cval;
}
return (rotc);
} // getrotv
void inirotein(gpio_num_t clk, gpio_num_t dt) {
pinMode(clk, INPUT);
pinMode(dt, INPUT);
attachInterrupt(digitalPinToInterrupt(clk), isrrot, CHANGE);
attachInterrupt(digitalPinToInterrupt(dt), isrrot, CHANGE);
} // inirotein
...
inirotein(ROTE_CLK, ROTE_DT);
... -
Vladi
nagyúr
link. Hm... még viszonylag jókor szólnak.
Vagyis tutira iktassam ki az 1uF-es prellmentesítő kondit és álljak át szoftveres prell mentesítésre. 1 sec alatt számításaim szerint 50 change jel lesz, az 20 ms. Ez alá kell a delay. Vagy valami bütykölés interrupt alatt, de akkor már tényleg kihozom loopba a számolást.
-
Vladi
nagyúr
Nah csak nekiláttam a debugolásnak. Ott tartok, hogy az opto-izolátor kártyámon átjön a jel, megszakításból tudom növelni a számlálót, ezt ki is írja sorosra arduino.
Viszont nagyon sok a jel és nagyon hullámzik a mennyisége. Ilyen 150 és 1500 között ugrál a jelsűrűség másodpercenként.
Ez prell lenne?
-
adatfalo
senior tag
Sziasztok!
MCP23S17-vel van problémám
Írtam/összeollóztam egy programot, ahol az IC A és B oldal lábaira gombot kötöttem, az A oldal működik is, viszont a B oldalon folyamatosan az 11111111 értéket kapom (így az A oldalon megnyomott gomb értékét is elég nehéz kihalászni a rengeteg adatból). Vajon mit kéne átírnom a programba, hogy jól működjön?
Bekötésre ezt használtam: képA kód pedig itt található: LINK
Ezer hála és köszönet, ha valaki tud segíteni!
-
fpeter84
senior tag
válasz
XP NINJA #9914 üzenetére
LCD ügyben első körben én is a mobilra/tabletre alapozást ajánlom több oknál fogva:
- az ilyen arduino shield, meg arduinoval meghajtható LCD-k gyakran elég silány képet adnak... szürkén világító fekete, gyenge betekintési szög, sápadt színek... Most éppen sikerült vennem egy olyan 3.2 colosat aminek kifejezetten jó a képe, de zsákbamacska. Persze a kínai eladók hirdetésében még a 320x240 is UltraHD mega-giga minőség, de csak akkor tudod meg hogy mit vettél amikor bekapcsolod...
- az ilyen natív framebuffer nélküli mikrokontrollerrel LCD meghajtás elég lassú - még a leggyorsabb eljárások is - így elég nehézkes / lehetetlen gyorsan változó tartalmat, látványosabb grafikát kialakítani... Attól függően hogy mi az elképzelésed, érdemes lehet akár egy Pi Zero-n is elgondolkodni - azzal nem probléma a grafika...
Én egy fedkomp/pár adat megjelenítését végző kütyün dolgozgatok mostanában - elsősorban a VAG családos motorvezérlőből nyerem az adatokat KW1281 protokollon keresztül, de úgy tűnik kénytelen leszek pár adatot közvezlenül mérni én is, mert a lekérdezés sebessége nagyon korlátozott és van ahol kritikus a sebesség...
-
XP NINJA
őstag
válasz
Janos250 #9916 üzenetére
Amit linkeltél 5Voltos, nem is találtam 3.3-ast. Ahogy olvasgatok akkor ahoz hogy egy ESP32-vel használhassam, kell egy Logic Level Converter?
-
Janos250
őstag
válasz
XP NINJA #9914 üzenetére
Arduino választás:
A korszerűbbek 3.3 voltosak (STM32, ESP), de sok szenzor meg 5 voltos. A régi lapok 5 voltosak, de SOKKAL kevésbé hatékonyak. Én korábban mindenkinek az STM32-t ajánlottam, az ESP32 megjelenése, és a támogatás felfutása óta meg ESP32-t. De lehet régit is használni. Pap/papné. -
Janos250
őstag
válasz
XP NINJA #9914 üzenetére
Én nyomásmérőt ebből a szériából használok. Van többféle nyomásra.
https://www.ebay.com/itm/G1-4-DC5V-0-1-2-MPa-Pressure-Transducer-Sensor-Oil-Fuel-Diesel-Gas-Water-Air-xi/192587592681?epid=21012861556&hash=item2cd71d73e9:g:yQEAAOSwhfdaVtkf:rk:10:pf:0Kijelzőnek meg mobiltelefont (WEB lap).
-
XP NINJA
őstag
Sziasztok!
Nincs tapasztalatom még Arduinoval, de szerencsére programozni tudok, és alacsony szintű nyelvekkel is találkoztam már.
Kitaláltam egy projetket, amihez szeretném segítségeteket kérni, hogy mikre lesz szükségem hardver részről.
A rendszer egy autóban lenne, 4 dolgot kell mérjen, és megjelenítsen egy kijelzőn.
- Turbónyomás -1 és 2 bar között
- Olajnyomás 0-10 bar között
- Olajhő kb -40 és 150 között
- Kipufogó hő -40 és 1200 közöttLinkeket szivesen fogadnék, alap Arduinom sincsen, és kijelzőből is gondolom valami beváltat lenne érdemes
Méretben kb 4-5"-ra gondoltam. Hőmérőket még találtam alin, de a nyomásmérőkkel már gondban vagyok. pl MPXH6400AP
-
ecaddsell
aktív tag
Ne viccelj ilyen könnyen feladod?
Pl. megnézted, hogy kompatibilis a jeladód szintje a kontrollerével? Az, hogy a jeladón villog a LED semmit sem mond arra vonatkozólag, hogy tényleg megtörténik-e az interrupt.
Pl. a loop-ból kiírathatnád a számlálót ha az változik. stb.Emlékszem rád a Fedorás topikból, olyan dolgokban tudtál segíteni nekem (meg kb. mindenki másnak) amit már rég feladtam(unk), itt meg hozzá sem kezdtél a debughoz... Ki kell íratni dolgokat a soros porton.
ESP32-vel még az interruptból is kiírattam, pedig elvileg azt nem szabad (lehet itt nem is menne) mert mi történhet alapon, max újra fel kell töltenem a módosított kódot.
Ha nincs soros portra lehetőség akkor rá teszel valamelyik pinre egy ellenálláson keresztül 1 LED-et amit ki be kapcsol az interrupt stb.Kevesebből mint az általad írt összeg tervezek 10digit/s-es frekvenciamérőt csinálni, Arduino környezetben ebből a pénzből már egy egész hobbi labort lehet építeni. Persze, ha eléggé motivált vagy...
-
Vladi
nagyúr
Köszi srácok a számításokat.
Vaggy mostmár ott tartok, hogy veszek egy impulzus számlálót. 30-40K-ból kijön és pont ezt csinálja.
Nem jellemző rám ez, de most inkább feladom.De legalább az alkatrészek 90%-át meg a megszerzett tudást is fel tudom használni később.
-
vargalex
félisten
Szia!
Ha a piros gombot megnyomod, utána sem megy az enkóder alapú vágás? Amiért kérdezem:
- nincs inicializálva a currentpulse változó (és a voros sem egyébkén), így akár az is lehet, hogy annak értéke a kezdéskor (bár nem olvastam utána, hogy arduinoban van-e automatikus változó inicializálás, így csak a C-ből indulok ki) valami kicsi negatív szám, így jó későn fogja elérni a pulzus értékét.
- én a currentpulse változó értékét a loop if-jének legelején nulláznám, ugyanis így elvesztesz 300 ms-nyi interrupt-ot (ugye addig az interrupt tovább növelgeti az értéket, de utána nullázod - persze lehet, hogy az a cél, hogy a vágás vége és a következő vágás eleje közötti idő legyen állandó).Egyébként nézted a volatile leírásában az "int or long volatiles" bekezdést? Ugye a 8 bites olvasás pont okozhat gondokat.
-
Gergosz2
veterán
Nálam 10-20 rpm a tartomány nagyságrendileg.
Ezen a fordulaton üzemelsz? Milyen motort használsz?
Amúgy egy 1 uF kerámia kondenzátornak mennyi a feltöltődés és kisülés ideje nagyságrendileg?
Attól függ mekkor ellenállást lát. Ha ez megvan, legyen R, akkor az időállandó R*C-lesz. Nagyjából 5 időállandó alatt beáll a stacioner állapot, így ebben az esetben ez 5RC lesz.
-
Gergosz2
veterán
Nem tudom mi az applikáció de a négyszögjeles enkódert álatában így szokás feldolgozni:
Kis fordulaton a felfutó élek közötti időt szoktuk mérni, abból lehet megsaccolni a fordulatszámot. Gondolom egy Atmega328p-t használsz, ami ugyan nem cél hadrver, de megoldható vele a dolog. Ha nem fontos a forgásirány megállípátsa, akkor érdemes össze XOR-olni a két csatornát, így négyszeres freqis jelet kapsz.
Utána az interruptban a millis vagy micros aktuális értékét is lemented. Ha ez megvan akkor tudod két felfutó él között mennyi idő is telt el, amiből visszatudod számolni a szögsebességet.Nagyobb fordulaton meg a számolod a felfutó éleket és deltaT időkööznként megnézed a változást. Itt 1-2 ms-es kiolvasás, feldolgozás bőven jó lesz.
-
-
Vladi
nagyúr
Uraim! Ez így se működik.
Visszatettem a korábbi - idő alapú kódot. Arra ha ráengedem az encodert, semmit se csinál, csak a megszakításokat dobálja be - 25-öt másodpercenként - akkor azzal a kóddal is megbénul a rendszer, egyszerűen a sok megszakítástól nem fut le a loop többi része.
Délután nekiállok és leprogramozom úgy, hogy megszakításon kívül számláljon. Valami while számlál a megvan akkor do vágás, ilyen elven.
-
Vladi
nagyúr
Nokéremszépen, ez a javított:
/*
Ez a vágási ciklus. Az enkóder gyári értéke 100/fordulat, 200-ra lett gyorsítva áttéttel, 8 rpm-ről 16 rpm-re.
Egy lap kb 16 secundum, azaz 26-27 impulzus/sec. 1600 imp/min. 420-430 impulzus között lesz a szabvány 390 mm
0.91 mm/imp ezzel lehet számolni. 420 mm-es lap így kb: 460 imp.
*/
volatile const int enko = 3; //2-as pinbe van enkóder érzékelője, OPTÓN A JOBB OLDALI!!!, vezetékelésnél összekevertem, ezért a kódban cseréltem fel, ezért van itt keveredés!
volatile const int piros = 2; //3-es pinbe dugva az azonnali vágó kapcsoló
volatile const int rele = 5; // a kapcsoló relé.
volatile const int alapled = 13;
const int pulzus = 425; // EZ A LENYEG!
const int releido = 300; // a relé nyitás-zárás ideje, mechanikusnál adatlap írja le, minimum 400 milisec, de inkább jóval több, 0.8-1 vagy mégtöbb sec!
volatile int currentpulse;
volatile bool voros;
void setup() {
pinMode(piros, INPUT); // a 2-es a piros az bemenet lett
pinMode(enko, INPUT); // a kettes hurkázó is bemenet
pinMode(rele, OUTPUT); // relé a 6-on kimenet
pinMode(alapled, OUTPUT);
//Serial.begin(9600); //debug céllal került bele
attachInterrupt(1, szamlalo, CHANGE); //3-as az enkóder, megszakítást állítottam rá
attachInterrupt(0, nyissz, FALLING);//2-es a piros, azon is megszíktás van
//digitalWrite(alapled, LOW); // franc tudja miért, de HIGH-on tartja a ledet végig. Ártani nem árt, de inkább lekapcsolom.
}
void loop(){
if(currentpulse >= pulzus || voros) {
digitalWrite(rele, HIGH);
delay(releido);
digitalWrite(rele, LOW);
//Serial.println("Vágtam, kövi.");
voros = false;
currentpulse = 0;
}
}
void szamlalo(){
currentpulse++;
}
void nyissz(){
voros = true;
}Vázlat használ 1314 bájt (4%) -ot a program tárhelyből. A maximum 32256 bájt.
A globális változók 24 bájt (1%)-ot használnak a dinamikus memóriából, 2024 bájtot hagyva a helyi változóknak. A maximum 2048 bájt. -
Vladi
nagyúr
Okés, de ahogy nézem, long helyett nyugodtan használhatok int-et, mert 1000-nél sose lesz egyik értékem se nagyobb.
Amúgy köszi srácok, hogy átmasszírozzátok a kódomat, mindjárt jövök a véglegesnek szánt verzióval.
mod:
Meg szerintem unsigned is felesleges.
(#9901) aryes:
Nahát, ejnye.
Új hozzászólás Aktív témák
Hirdetés
- Barátokká váltak az eddig rivális AI-óriások
- Suzuki topik
- Megvan, milyen chipet használ a Pura 80 Ultra
- Apple MacBook
- Háztartási gépek
- Gurulunk, WAZE?!
- Kertészet, mezőgazdaság topik
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- The First Berserker: Khazan
- sziku69: Fűzzük össze a szavakat :)
- További aktív témák...
- 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
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest