Fórum témák

» Több friss téma
Fórum » Arduino
 
Témaindító: groening, idő: Szept 28, 2008
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   608 / 614
(#) Kovidivi válasza zoz11 hozzászólására (») Márc 23, 2020 /
 
Serial.println(double(Thermister(analogRead(1)))); helyett:
Serial.println((signed int)((Thermister(analogRead(1)+0.5))));

A +0.5 a kerekítés miatt kell.
Mennyire pontos a számított érték 20 és 90fokC környékén?
Valahogy jó hőkontaktusba kellene hozni mondjuk a multi hőmérőjével. Egy pici alu bordát melegíteni, aminek a furatába kellene bedugni a multi hőmérőjét és az NTC-t is. Ha van kedved.
A hozzászólás módosítva: Márc 23, 2020
(#) tbarath válasza nemgyuri hozzászólására (») Márc 24, 2020 /
 
Bakman a konkrét kérdésedre válaszolt, de az F() résznek is van jelentősége, valamint a backslash sok más dolgot is jelenthet. Javaslom a "60 nap alatt Arduino ingyenes tanfolyam" elvégzését (google-ba mehet az idézőjel közötti rész), valamint a konkrét témában az "escape sequence"-nek nézz utána.
(#) Kovidivi válasza nemgyuri hozzászólására (») Márc 24, 2020 / 1
 
Az F azt jelenti, hogy ne a RAM-ba tárolja a szöveget, hanem a progmem-et használja fel (mindig csak az a szöveg lesz a memóriában tárolva, ami éppen kell). F nélkül a programodban levő összes Serial.print és hasonló függvényeknek átadott szöveg a RAM-ban tárolódna, és az gyorsan elfogyna.
Mivel a Serial.print függvény bemeneti paramétere szabályozva van, ezért a kiírandó szövegnek " (idézőjelek) között kell lenniük. Akkor van gond, ha pont idézőjelet akarsz kiiratni. Ilyenkor a speciális karakter párt használjuk, ami visszaper (\), és utána az idézőjel ("). Így: Serial.print("\"");. Tehát az idézőjelek között található: \" , amiből csak ez marad: ".
Ugyanez vonatkozik a ' (felsővonás)-ra is, a visszaperre önmagára is.
Tehát
Serial.print("\\"); -> \
Serial.print("\'"); -> '
Ez a Serial.print logikája.
Lehetséges, hogy panaszkodni fog a fordító, mert ezek csak egy karakterek, egy karaktert pedig felső aposztrófok közé (') kell írni.
Tehát Serial.print('\\'); -> \ . Ki kell próbálni.

Magyarul nem hiszem, hogy találsz segédletet.
Én is google segítségével frissítettem fel az emlékeim, ezekkel a keresőszavakkal: "arduino serial print how to print special characters".
A hozzászólás módosítva: Márc 24, 2020
(#) zoz11 válasza Kovidivi hozzászólására (») Márc 24, 2020 /
 
Este lemérem hogy mennyire pontos.
Így módosítottam, most jó:
  1. #include <math.h>
  2.  
  3. int Thermister(int RawADC) {
  4. double Temp;
  5. Temp = log(((10240000/RawADC) - 10000));
  6. // 10K Ohm hoellenallas.
  7. //Ahogy számolunk: Ellenállás =
  8. //  (1024 * BalanceResistor/ADC) - BalanceResistor
  9.  Temp = 1 / (0.001129148 + (0.000234125 * Temp) +
  10.  
  11.         + (0.0000000876741 * Temp * Temp * Temp));
  12.  
  13. signed int homers=(signed int)(Temp-273);
  14.  
  15.  return homers;
  16. }
  17. void setup() {
  18. Serial.begin(9600);
  19. }
  20. void loop() {
  21.  // Kiirjuk a homerseklete
  22. Serial.println(int(Thermister(analogRead(1))));
  23. delay(500);
  24. }
(#) Vacok hozzászólása Márc 24, 2020 /
 
Sziasztok!
Adott egy ébresztőóra, aminek a kijelzését egy shift regiszter vezérli, a kód pedig Timer1 megszakításban kb. 2ms-kénk fut le. Az időmérést a Timer2 végzi aszinkron módban óra kvarcról. Az ébresztés során kiadott hangot pedig egy a főprogramból meghívott “void beep()” hivatkozás generálja, ami a főprogramban fut le. A probléma az, hogy ahogyan változtatom a kijelző frissítési frekvenciáját, változik a kiadott hang magassága, illetve a főprogram futási sebessége. Konkrétan, ha a Timer1 megszakítás 1ms-ként érkezik, akkor csökken a hangmagasság és lassul a program. A frissítési frekvencia csökkentésével fordítva. Órajelnek a belső 8MHz van beállítva. Az én gondolatom erről a problémáról az, hogy túl gyakran érkezik a megszakítás ahhoz, hogy a főprogram megfelelő sebességgel tudjon futni és a lassabb futási sebesség okozza a frekvencia csökkenést, de erősítsetek meg vagy cáfoljatok meg benne. Illetve, ha nem ez a gond, akkor mitől áll elő ez a jelenség?
Köszönöm előre is a válaszokat.
(#) Moderátor hozzászólása omegas hozzászólására (») Márc 24, 2020
 
Egy kérdést csak egyszer, egy helyre teszünk fel!
(#) Kovidivi válasza zoz11 hozzászólására (») Márc 24, 2020 /
 
Kerekítés kimaradt. Így 27.95fokC-ra 27-et fog kiírni!
(#) sargarigo válasza Vacok hozzászólására (») Márc 24, 2020 /
 
Ha megszakítás érkezik, akkor értelemszerű hogy megszakítja a főprogram futását! Minél többször érkezik, annál jobban észrevehető ez. Ahogy én látom, egyszerűen tedd hardveressé a beep-et (csipogóval), vagy kezeld azt is megszakításból! Itt ugyanis már tudod szinkronizálni az eltelt időhöz, nem fog a futástól függeni! Fontos, hogy minden megszakítás minél rövidebb ideig tartson, és csak annyiszor hívd meg ahányszor az tényleg szükséges! A főprogram a vesztese a megszakításoknak, szóval időkritikus kódot ide nem teszünk!
A hozzászólás módosítva: Márc 24, 2020
(#) Vacok válasza sargarigo hozzászólására (») Márc 24, 2020 /
 
A hardveres csipogóval az a gond, hogy van más funkciója is az órának, ahovam más hangmagasság kell. Összesen 5-6 külömböző frekvencia megy a csipogóra. Megszakításból nem igazán tudom, hogyan tudnám vezérelni. Timer0 - delay, timer1 - kijelző, timer2 - időmérés. Több számlálóm meg nincsen. A timer2 megszakítás másodpercenként egyszer fut le. A timer1-nek meg minél gyakrabban kellene, hogy a kijelző ne villogjon.
(#) sargarigo válasza Vacok hozzászólására (») Márc 24, 2020 /
 
Csak ötlet: Ha a timer2 másodpercenként fut, akkor vedd el tőle a feladatot, és a timer1-ből ki tudod számlálni hogy mikor telt le az a másodperc! Így a timer2 felszabadult, lehet csipogtatni!
Szerk.: Hogy hogyan azt ne kérdezd, kód nélkül nem tudok többet segíteni
A hozzászólás módosítva: Márc 24, 2020
(#) Vacok válasza sargarigo hozzászólására (») Márc 24, 2020 /
 
Ez is felvet egy két újabb problémát, de ötletnek nem rossz. Bár eszembe jutott, hogy teljesen újraépítem a hardvert és a kijelzést nem shift regiszerrel, hanem TM1637 ic-vel hajtom meg. Ezt is megszakításból kellene vezérelni, mert a főprogram sok while és for ciklust tartalmaz, ami megakasztaná az egészet, de a megszakításban levő kód jelentősen egyszerűsödne.
A hozzászólás módosítva: Márc 24, 2020
(#) sargarigo válasza Vacok hozzászólására (») Márc 24, 2020 /
 
Esetleg ha nem túl bonyolult a főprogram és van rá idő, akkor ott is csinálhatja a képfrissítést.
(#) proba válasza Vacok hozzászólására (») Márc 24, 2020 /
 
A timmer1 8Mhz kvarcról nem fog olyan pontos lenni, mint egy órakvarcról menő időalap. Amúgy a főprogramban azt figyelheted, a timmer2 mikor vált valamelyik bitjén, Kevésbé időkritikus időzítésekhez jó lehet. ( Szegmensek közötti váltogatás) A timmer1 megmarad hang előállításhoz.
Pic esetén csináltam olyat, felprogramoztam PWM-nek, Így két megszakítást is ki lehet belőle csikarni. Egyet mikor letelik, egyet meg mikor szintet vált. A szintváltós jó lehet a szegmensek közötti váltogatáshoz. Mindig újratöltve a hasonlító regisztert a következő váltási időtartammal, a letelik meg jó az óra időalapjának változatlanul. Az hogy ezt arduinón hogy kell megcsinálni, ne kérdezd. A lehetőség szerintem benne van.
Ezen a nyomon továbbmenve, ha minden kijelző léptetésnél egy/több számlálót léptetsz, ezek delaynak is tökéletesek. Késleltetés kell? Akkor beírod a számlálóba a kívánt értéket, a kijelző rutin elrendezi a csökkentést, ha nulla, akkor egy biten jelzi, csak azt kell figyelni, a főprogram mehet folyamatosan.
A kijelző kezelés/gomb kezelés /késleltetés a timmer2 megszakításaira bízható, ha a PWM-es dolog működik.
(#) Cooter hozzászólása Márc 24, 2020 /
 
Üdv!
Hogy tudom legegyszerűbben kiíratni TM1637-re egy RTC-ben tárolt időt? Csak óra és perc kellene, ha lehet 1db nyomógombbal jó lenne ha állítható lenne.
(#) usane válasza Cooter hozzászólására (») Márc 24, 2020 /
 
Hány éves a kapitány?
(#) gyerek67 válasza Cooter hozzászólására (») Márc 24, 2020 /
 
Usane arra gondolt (csak fél kérdezni ), hogy ide "pár dolog" még kellhet.
Valamilyen programozási tapasztalatod van?
Ugyanis ezt a feladatot pl. mikrovezérlő segítségével lehetne a legjobban megoldani (lásd: Arduino).
A hozzászólás módosítva: Márc 24, 2020
(#) Cooter válasza gyerek67 hozzászólására (») Márc 24, 2020 /
 
Nagyon kezdő vagyok a témába, de természetesen arduinoval gondoltam, egy nano-t gyomrozok most nonstop Az RTC-be sikerült beálltani az időt, próbáltam több kódot is módostani(hogy megjelenjen a TM1637-n), mert pont olyat nem találtam amilyen kellene, de már nem nagyon van ötletem.
(#) proba válasza Vacok hozzászólására (») Márc 24, 2020 /
 
Hány számjegyű a kijelződ? Annyiszor 100-150 Hz kell frissítési frekvenciának. Akkor elvileg nem igazán látszik a villogás. Az alatt villog, az felett meg felesleges erőforrás pocsékolás, melegedés.
(#) gyerek67 válasza Cooter hozzászólására (») Márc 24, 2020 /
 
Akkor bizony itt most olvasni kell! (Jellemzően angolul...)
Mivel az eszközt nem ismerem, legalább a programot mutasd, ami szeretné kiíratni a kijelzőre az adatot!
(#) usane válasza Cooter hozzászólására (») Márc 24, 2020 /
 
Igen, többek között arra, is mennyire tudod az arduinot programozni. Csak a kijelzőt nem tudod, vagy a teljes program kellene?
Aztán pl. milyen RTC? Pontosan hogy képzeled a működését, stb.
Gondolatébresztőnek: Bővebben: Link
Szerk: A kijelzőhöz könyvtár is van. Arduinora lassan már atombombához is van könyvtr csak meg kell keresni.
Látom közben az RTC-t már bűvölöd.
A hozzászólás módosítva: Márc 24, 2020
(#) usane válasza Vacok hozzászólására (») Márc 24, 2020 /
 
A csipogót miért nem hardveres pwm-el hajtod?
(#) kissi válasza proba hozzászólására (») Márc 24, 2020 /
 
Szia!

Idézet:
„Hány számjegyű a kijelződ? Annyiszor 100-150 Hz kell frissítési frekvenciának.”


Dehogy kell ! Ha a képfrissítési frekvencia 50 Hz, akkor már nem villog zavaróan ( pl. régi TV-k!)! Azaz egy 4 számjegyes kijelző 1 teljes frissítése 20ms, ami kijelzőként 5 ms-ot jelet, azaz 200 Hz-et!
Adott esetben még ennél lassabbal is lehet, ami a kijelzőtől, dobozolástól és a felhasználó érzékenységétől függ, de az 50 Hz egy jó érték és nem igazán terheli meg a processzorokat ( ha nem csinál más hülyeséget ! ) !
(#) Cooter válasza usane hozzászólására (») Márc 24, 2020 /
 
Nem nagyon tudom programozni, azért próbáltam módosítani a neten talált kódokat. Az RTC egy DS3231. A kijelzőhöz van könyvtár. Annyit tudtam elérni, hogy az RTC be van állítva, amit soros porton látok is(óra, perc), meg annyit hogy vagy a percet vagy az órát mutatja. A nyomógomb részével nem próbálkoztam, nem is tudom hogy kezdjek hozzá. Működését úgy képzeltem, hogy 5 másodpercig nyomva tartom a gombot, akkor elkezd villogni az óra. Ekkor tudnám léptetni. Ha pl 3 másodpercig nem nyomom meg a gombot, akkor a perc kezd villogni és léptethető, újabb 3 másodperc nyugalom után alaphelyzetbe áll. Mellékelem a legközelebb áll kódot, de így soros porton működik. (Remélem jól mellékeltem )
(#) David 3g hozzászólása Márc 24, 2020 /
 
Sziasztok. Volna egy nagy problémám, a nagy arduinozásokban és probálgatásokban valamit sajnos tehettem az arduino unommal.Fel tudom írni rá a programokat, világít minden rendeltetés szerüen, semmi hiba a szoftver kliensben de sajnos a pwm kimeneteken nem jön ki semmi. Probáltam Atmegát cserélni de ugyan az a hiba. A 13 lábon lévő led villogtatása megy hogy ha szeretném ,de azon kivűl semmi. Ötleteket előre is köszönök szépen.
(#) icserny válasza Cooter hozzászólására (») Márc 24, 2020 /
 
Idézet:
„Hogy tudom legegyszerűbben kiíratni TM1637-re egy RTC-ben tárolt időt?”
Ha DS1307-hez kell, akkor Itt találsz egy leírást.
Ha DS3231 az RTC, akkor nálam találsz mintaprogrmot (Avishay Orpaz TM1637Display programkönyvtárát használtam a kijelzőhöz). Ha jól csalódom, Arduino IDE-ből is telepíthető.
Letöltések: Előadásvázlat és Mintaprogramok (ZIP)

"1db nyomógombbal jó lenne ha állítható lenne."
Ezt majd neked kell megcsinálni hozzá...
(#) mateatek válasza David 3g hozzászólására (») Márc 24, 2020 /
 
Kód nélkül nehéz...
(#) proba válasza kissi hozzászólására (») Márc 24, 2020 /
 
Ám legyen, az alkotó majd eldönti. Nekem a 100Hz vált be, az alatt fejforgatáskor, mozgáskor néha néha látszott a vibrálás. A régi monitorokon is inkább a 75Hz mint az 50Hz volt ami nem zavart. Amit építettem órákat azokon is azt tapasztaltam, 80-100Hz a minimum szegmensenként. A TV-k nagy előnye az utánvilágítás volt, ezért nem zavart az 50Hz.
(#) Kovidivi válasza proba hozzászólására (») Márc 24, 2020 /
 
Én általában változtatható programozom, hogy ha vibrál a kijelzés, tudjam a frissítést gyorsítani. Annál zavaróbb nincs, ha fejforgatásra látszik a frissítés. Ha a proci tudja, inkább legyen "túl gyors", mint lassú.
(#) nemgyuri válasza Kovidivi hozzászólására (») Márc 24, 2020 /
 
Köszönöm, ezekre voltam kíváncsi. (bluetooth-os kapcsolaton dolgozok Nextionnal)
(#) asch válasza David 3g hozzászólására (») Márc 24, 2020 /
 
Ha csippet cserélve sem működik jól, akkor nem valószínű, hogy a csippen belül a láb driver leégése a probléma, tehát programhiba lesz. Ha megosztod a programot, akkor lehet rá bármit is mondani. Vak tippem szerint a lábat nem állítottad outputba.
Következő: »»   608 / 614
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu