Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Szerintem annyi a megoldása a problémádnak, hogy a kommentelt részben ne a duration-t figyeld, hiszen ha nem jön a záró feltétel, akkor azt ki sem számítod.
Helyette inkább így:
Még annyit hozzátennék, hogy
helyett érdemes
így zárójelezni, nehogy véletlenül összeakadjanak a vizsgálatok! A hozzászólás módosítva: Márc 20, 2020
Szerintem a számlálás módját kéne jól kialakítani.
Időegységenkénti impulzust kell számolni és a kerék kerületét figyelembe véve számolni a sebességet, nem a két impulzus közti időt. Így, ha az adott időegység alatt nem jön impulzus, akkor az eredmény 0 lesz, hiszen állsz. Az időegységet kísérletezéssel érdemes megválasztani, azt figyelembe véve, hogy mekkora az a legkisebb kerékfordulatszám, aminél még nem borulsz fel ![]()
Köszönom ,hogy segíteni akarsz,az ötlet is jó,de ha veszünk egy 5 másodperces intervallumot 6 km/h -nál 5 x fordul a kerék.Hátrány emiatt ,hogy 5 mp-ként frissül az érték,ha meg pont 0,01
mp-el a számláló indulás előtt vagy után halad ela mágnes az érték nél kb 2 km/h val csalni fog. Nézegettem a neten az ilyen célú kódokat és ellentétben az enyémmel van mindben egy sor,hogy a belső timert újraindítja miután triggerelte az adott pint. Nálam ez van : duration = endTime - startTime; lehet ,hogy kéne egy ilyen sor is: (kipróbáltam ezzel,de a timer fut tovább startTime = endTime; // itt resetel részlet soros monitorból: fordulatszám: 17 időtartam 225 fordulatszám: 0 időtartam 11613 fordulatszám: 16 időtartam 246 fordulatszám: 16 időtartam 249 fordulatszám: 16 időtartam 247 fordulatszám: 0 időtartam 60235 !!!!!! A sorosmonitor szerint a belső timer nem áll meg soha ,mert ha nem kap jelet,20 másodperc után az eltelt időt 20000 -től számolja próbáltam egy timerRunning = 0; sort betenni, de nem áll meg a számláló ,miért vajon? A hozzászólás módosítva: Márc 21, 2020
Hali mesterek. Van egy lépcső világításom Ws2812 es LEDekkel , 10 lépcsőnél kettesével világítanak sorban és alszanak el ahogy illik. Arduino NANO V3 a vezérlő. Az a problémám , hogy nem találom azt a programot -amit régesrég bele töltöttem, és most át akarom írni a lépcső számot és a ledek számát.
Tehát hogy lehet le menteni az arduinoból a működö programot ???
Ahogy olvastam a "C" kódot nem lehet kiolvasni,csak a gépi kódot.
AVR Dude progival telán hexben ki lehet szedni,de ahogy olvasom igen macerás...
Köszönöm a választ, mivel amatőr vagyok nem erőltetem.
Ahogy böngészek rengeteg "neopixel stair case "leírást találok , de azt ami először volt nekem azt nem. Jó munkát és egészséget : pittyu
A flash program területet használja EEPROM céljára. Ez miatt nem lehetséges annyiszor írni, mint az Atmega EEPROM-ját és ezen felül 1kB EEPROM hely 2 kB flash helyet foglal el.
Szerk: De természetesen nem kötelező használni az EEPROM funkciót. Az Arduino-s könyvtárak viszont alapból a kompatibilitás miatt 2kB helyet elkülönítenek neki. de ezt átírhatod. Akár 0, akár 8kB-ra. A hozzászólás módosítva: Márc 21, 2020
Kapisgálom. Elő szokott fordulni, hogy a flash nem elég magának a feltöltött programnak, ha jól tudom: ilyen esetekben ez probléma lehet, ahogy látom.
Köszi.
Ezért cserében van sok minden pluszban. Párat, ami az eszembe jut, azt leírom.
-32 MHz-es belső órajel, illetve 32MHz-es külső kvarc, vagy órajel használata. -2 8bites, 2 16 bites timer. -1.024 voltos, 2.048 voltos és 4.096 voltos belső referencia. Ami az én megítélésem szerint egészen jó. -12 bites ADC, ami egészen gyors. Olyannyira, hogy egy analogRead() utasítással 2 mérés átlagát fogod kapni nagyon gyorsan. -8 bites DAC. 6 timer kimenetre tudsz kapcsolni 85 milliamperes, nagyobb áramú meghajtót. Alapból 15 milliampert tudnak. -Az rx-tx lábakat, és 6 timer lábat más lábakra is tudsz kapcsolni, mint ahol a szokott helye van. -Több I/O láb. -Shmitt-trigger jellegű a digitális bemenet. Hirtelen ennyi, csak azokból, amiket én használok benne. Igaz, van pár tulajdonsága, ami ezek közül az Arduino keretrendszerben nem megy "csak úgy kapásból". A hozzászólás módosítva: Márc 21, 2020
Köszönöm szépen a részletes választ!
Ez majdnem jó:
csak: az értéket csak akkor mutatja amikor elmegy a mágnes a hall előtt (egy rövid pillanatra) utána egyből"0"-ra áll A hozzászólás módosítva: Márc 22, 2020
Moderátor által szerkesztve
Közben nekem is leesett, hogy akármennyire nem jó állítani a számlálási intervallumot, mert a lassú frissítés kényelmetlen.
Legyen 1 s a számlálási idő és egyből m/s-ben kaphatod meg az értéket, amit km/h-vá tudsz konvertálni. A számlálási idő generáljon megszakítást (a timer ilyet tud) és a megszakításban csak annyit kell csinálni, hogy a megszámolt fordulatokat (ez a gyűjtő) átmenteni egy másik változóba, a gyűjtőt törölni és újraindítani (resetelni a timert). A főprogramod meg kiszámolja a sebességet a másik, a gyűjtő értékét fogadó változó alapján és megjeleníti. Így másodpercenként frissíti a kijelzőt. Ha megállsz, akkor a gyűjtő 0 értéke fog átmásolódni, így nem kell külön nullázgatni a kírásra kerülő változót, elég csak a program elején egyszer.
A kerékre lehet több mágnest is tenni, Így már nem lesz olyan vészes a lassú menet, pontosabb lesz a mérés. Ha nekem kellene csinálnom, az érzékelők felfutó/ vagy lefutó élét nézném ( érzékelő!= az előző állapot. ) így bárhol megállhat a kerék. Egyszerűen számolnám pl a magas/alacsony állapotváltozásokat. A kerék átmérőből ki lehet számolni egy olyan időtartamot, aminél 1 (10) fordulat pont 1Km/h. Ha pontosan ennyi időnként mérsz, a kerékfordulatot egy az egyben kiírathatod, Ha ez alatt az idő alatt nem jött változás, akkor a számláló nulla lesz, így a kiírt érték is.
A hozzászólás módosítva: Márc 22, 2020
Moderátor által szerkesztve
Csak egy gondolatkísérlet:
Ha minden egyes fordulatnál kijelezzük a legutolsóhoz tartozó sebességet, azt kis eltéréseknél is nehéz lesz leolvasni az ingadozás miatt. De ha egy megfelelően megválasztott idő (1-2 másodperc) elteltével rekurzív átlagot képezünk a legutóbbi mérés és az ugyancsak rekurzív átlaggal képzett - időközben esetleg több - mérés eredményéből, leolvashatóbb, pontosabb lesz az eredmény menet közben. Ha megállunk, rövid időn belül nulla lesz a kijelzett sebesség, mert az új érték attól kezdve mindig nulla lesz. Vélemény?
Alacsony fordulat(frekvenciá)nál érdemesebb a periódusidőt mérni, abból számolni(reciprok).
Gyorsabban, pontosabb értéket ad. Frekimérés akkor tud "pontos" lenni ha a mérési "időnek" sok-sokszorosa a frekvencia. A hozzászólás módosítva: Márc 22, 2020
Pipi véleménye is megfontolandó, 3.6 Km/h sebességnél egy másodpercre durván fél kerék fordulat jut, ha 36Km/h-t nézzük oda meg 5 fordulat. Ez még 10 másodperces mérésközzel is igencsak darabos felbontást ad. túl sok mágnest a kerékre pakolni meg nem biztos hogy szerencsés. Marad a periódusidő mérés.
Amit felvetettem, az csak a mért értékek rekurzív átlagolásáról szól. Függetlenül a mérés módjától.
Ez egyetlen mágnessel - periódusidő méréssel - is működik. Szükség van a legutóbbi befejezett értékre és nagyobb sebességnél az időközben többször is frissített átlagra. A kijelzés akár 1-2 másodpercenként történhet, a legutóbbi érvényes adat és a meglévők rekurzív átlagolásával. Természetesen nem baj, ha közben van megkezdett mérés, majd ha befejeződik, azt használjuk a következő kijelzés értékéhez. (Persze a meglévő adatokkal képzett rekurzív átlagolás után.) A hozzászólás módosítva: Márc 22, 2020
Üdv fórumozók,
5.napja nem jövök rá a bajra itt az egész kód
Amit nem értek ha a loop állandóan ismétlődik az elején szépen kiírja a nullát, ezután megmérem a sebességet szépen kiirja hogy 15 pl. ha nem kap inputot kb 2 másodpercig ,és éppen megint az elején jár a duration(millis) 2000 (2 mp)fölé megy,miért nem áll vissza "0"-ra? Folyamatosan az utolsó mért értéket mutatja.(az se lenne baj ha teljesen lekapcsolna.Próbáltam a 2 digit pinjét lehúzni testre (LOW),de akkor meg a 0 belevillogott.Lassan feladom... A hozzászólás módosítva: Márc 23, 2020
Moderátor által szerkesztve
Ahogy én látom az a baj, hogy a setNumber() eljárást csak akkor hívod meg, amikor a mérés befejeződött, vagyis amikor az állapotgéped 1-be van állítva (timerrunning == 1) feltétel. Amikor ez visszaállította a timerrunning értékét nullába, és ettől a pillanattól már nem jön több impulzus, akkor nincs ami frissítse a kijelződ.
Szerintem el kellene indulnod a megszakítások irányába, és vagy a mérést, vagy a kijelzést megszakításból végezni. Gondolom meg lehet oldani anélkül is, de miközben mesét duruzsolnak a fülembe, ezt most nem tudom átgondolni ![]() Szerk.: Esetleg próbáld meg a refreshDisplay() elé beszúrni ezt:
Ez a duration vagyis a mérésed eredményétől függetlenül nullázza a kijelzőt ha túl nagy az idő. Elvileg. A hozzászólás módosítva: Márc 22, 2020
Nagyon köszönöm,király vagy!
Tökéletes,egyedül Te tudtad megoldani. Végre elkezdem összerakni próbapanel helyett ![]() Szép estét!
Sziasztok, segítséget kérnék Tőletek!
Arduino programozási segédletet honnan lehet letölteni? Gondolok itt elsősorban stringkezelésre és egyéb adatkezelési finomságokra. Pl. a következő kódrészlet működik, de nem tudom, hogy a (F("\"")) mit jelent.
A vett adatokat is értelmeznem kell, ezért szeretnék valami leírást (lehetőleg magyarul) ami a programnyelv mélységeibe ad betekintést.
Ha szöveget akarsz küldeni, akkor az elküdendő karaktereket idézőjelek közé kell rakni, pl.:
A hozzászólás módosítva: Márc 23, 2020
Sziasztok
Megint próbálkozok a Thingpeak-al: Bővebben: Link Nagyon jó volna, ha működne. Miután feltelepítettem a Thingspeak.h-t a példák menübe elhelyezett néhány páldaprogram közül kiválasztottam, de nem fordul NodeMcu-ra. ezzel a hibával: Idézet: „Arduino: 1.8.8 (Windows 7), Alaplap:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 921600" c:/users/zsoltee/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\WriteSingleField.ino.cpp.o: in function `ThingSpeakClass::writeRaw(unsigned long, String, char const*)': C:\Users\zsoltee\Documents\Arduino\libraries\ThingSpeak/ThingSpeak.h:928: undefined reference to `ThingSpeak' collect2.exe: error: ld returned 1 exit status Többszörös könyvtárak találhatók ehhez: "ThingSpeak.h" Használt: C:\Users\zsoltee\Documents\Arduino\libraries\ThingSpeak Nem használt: C:\Users\zsoltee\Documents\Arduino\libraries\arduino_844550 exit status 1 Hiba a(z) NodeMCU 1.0 (ESP-12E Module) 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. ” Ha kitörlöm a 844550 könyvtárat akkor összeomlás van. Szerintetek mi a megoldás?
Sziasztok! Kezdő vagyok kísérletezek neten található kódokkal. Legtöbben uno-t használnak úgy veszem észre, én nano-t használok. Az ilyen uno-s kódoknál az IDE kiír nekem olyan hibát, hogy "hiba az arduino nano alaplapra fordításra". Mi ennek az oka? Hogy tudom ezeket feltölteni nano-ra?
Föl kell húzni az egérrel, hogy látszódjon a többi rész.
Közbe az enyém is megoldódott, nem kellett volna manuálisan bemásolni egy thingspeak könyvtárat.
Meg a toolsnál is ki kell választani a NANO-t.
Megoldódott, köszi a segítséget! 2 db könyvtárt hiányolt!
![]()
Üdv
Van egy összeollózott kódom, 10K NTC-t használok hőmérésre. Nem jövök rá, hogy mit kellene módosítanom ahhoz hogy ne mutasson tizedes értéket. Esetleg ebbe tudna nekem valaki segíteni?
|
Bejelentkezés
Hirdetés |