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 |