Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Szerintem figyeli, ha A változik akkor nézi B értékét, és ettől függően dönti el az irányt.
Max 600 percenként a max fordulat.A megszakításba hogyan tudok értéket írni illetve kiolvasni?
A hozzászólás módosítva: Feb 9, 2018
Holnap megpróbálkozom a fenti kóddal.Köszönöm.De fentebb írták hogy megszakítás kell,ez viszont nem az ha jól làtom.
A hozzászólás módosítva: Feb 9, 2018
Meg kellene nézni, hogy nincs-e ún. bounce. Ez olyasmi, mint a nyomógomb prellegése, valahogy ki kell szűrni. Vannak hw-es és sw-es megoldások is, "debounce" néven érdemes rákeresni, mindenki másra esküszik, nyilván tapasztalat alapján. Schmitt-trigger, kondi ide-oda, ellenállások variálása, stb.
Aztán ha sok a fordulat, akkor ne digitalread-et használj, mert az lassú lehet. Olvasd direktben a portot, az sokkal gyorsabb. És ahogy már javasolták: megszakítás lesz a barátod.
Nem feltétlenül kell megszakítás, mert ha semmi mást nem csinál a kód, mint hogy a rotary-t olvasgatja, akkor maradhatsz is a loop-ban a vizsgálatoddal. De általában a kódok csinálnak mást is, és nem a rotary olvasgatása az egyetlen dolguk.
Ha nem interrupt irányba mész el, akkor nagyon fontos, hogy minél kevesebb ideig foglalkozz mással. Ha 600/min a max. fordulat, akkor ez max 10/s, tehát másodpercenként legalább 40x le kell lefutna a loop ciklusodnak, minél többször annál jobb. Ha interrupt irányba mész el, akkor az interrupt legyen rövid. Nagyon rövid. Semmi kiiratás vagy ilyesmi, hanem olvasol (portot preferáltan), egy változó értékét növeled vagy csökkented és ennyi. A megszakításra, portolvasásra és sok más dologra is találsz példakódot a linken, amit kapu48 linkelt az előző oldalon.
Inkább ezt próbáldki:
Köszönöm mindenkinek a választ, rendesek vagytok! A fenti kódot megpróbálom értelmezni és kipróbálni, nagy segítség az biztos. Délután jövök az eredményekkel!
Sziasztok!
Adott egy Atmega8L-8PU próbapanelen összerakva, nincs külső kristály. Összeraktam egy párhuzamos port programozót. Ill. van egy PL2303HX USB-TTL adapterem. Lehetséges, hogy feltöltök rá egy bootloader-t, mondjuk az optiboot-ot, mert a 8k flash elég kevésnek tűnik és utána tudom használni simán a PL2303 adaptert, hogy feltöltsek rá programokat? Egyelőre nem mertem semmit csinálni, mert a FUSE bit-eket nem akarom elrontani, nincs kéznél kristály, ha véletlenül félresikerülne valami. Avrdude-al tudok csatlakozni a programozón keresztül, sikerült kiolvasnom a FUSE bit-eket, ill. az egyelőre üres EEPROM-ot is.
Próbálkozhatsz régi görgős egerekkel is, azok soros porton elküldik a pontos elfordulást. A processzor meg csinálhat amit akar párhuzamosan.
Helló!
Nyári óra állítást szeretném megoldani DS3231! De angol megfelelőit sem találom a témának! Tudna valaki javaslatot hogy indulhatok el vele?
Daylight saving az angol kifejezés rá. Én ezekben keresgetnék:
The Arduino and Daylight Saving Time (Europe) Adding Daylight Savings Time to Your RTC DS3231 RTC & Daylight Savings Time - Arduino Forum
Azoknak mekkora felbontásuk van? Nekem legalább 400 imp/ford-ra lenne szükségem..
A lehető legnagyobb frekvenciával kell járatni a kontrollert, Interrupt On Change megszakítást használni. Ebben a cikkben: Bővebben: Link, 64 MHz-re van állítva a PIC, a butább enkóderrel kb. 1700 f/p sebességig bírja az iramot.
Szia! Feltöltöttem a kódot és a jelenség az, hogy akármilyen irányba tekerem, szinte mindig egyhelyben számol. Két szám között ugrál szinte mindig. Egyébként az encoder ez: https://www.hestore.hu/prod_10037805.html
Ha jól értelmezem a kódot, akkor ez a mechanikus enkóderekhez lett készítve, a te enkódered kimenetén pedig Gray kód jelenik meg. Lásd itt: Bővebben: Link. Szerintem a kód olyan enkóderhez készült, amelyiknek olyna a kimenete, mint az oszcilloszkóp ábrákon is szerepel.
Ha szétszeded, a tárcsát átszereled valami áttétellel, a felbontással már nem lehet gond. A műanyag tárcsán olyan 100 körüli rés van, egy 1:4 áttétel után már lehet elég volna. Bár elég komoly mechanikai kihívás elé állít, hogy ne lötyögjön. Ami elbizonytalanít, azért az egereket nem lehet olyan gyorsan tolni, bár azokban is komoly áttétel volt.
Értem, amit mondasz, de mivel ipari gépen lesz alkalmazva, nem szeretnék "házi" módszereket alkalmazni. Inkább megveszem a gyári encodert,az tudom stabilan, jól felszerelni, csak arra kellene megoldás, hogy pontosan számoljon, miközben még más feladatokat is végrehajt.
Amennyiben a B megszakításnál felcserélem a számlálót, úgy teljesen stabilan számol, csak akkor mindig egyirányba...De legalább stabil és elég gyors.
Próbálj meg ebből kiindulni ez ds1307-re készült.
RTC.get(rtc,true); // nyári időszámítás---------------------------------------------------------- if(rtc[5]==3 && (rtc[4]>=25 && rtc[4]<=31)&& rtc[3]==7 && rtc[2]==2 && rtc[1]==0){ // Nyári időszámítás 1 órával előre RTC.set(DS1307_HR,3); } if(rtc[5]==10 && (rtc[4]>=25 && rtc[4]<=31)&& rtc[3]==7 && rtc[2]==3 && rtc[1]==0){ // Őszi időszámítás 1 órával vissza RTC.set(DS1307_HR,2); }
Úgy néz ki sikerült stabilan megoldanom a problémát. Most elég gyors, és pontos is. Az alábbi kódot sikerült összerakni :
int APhase = 2; int BPhase = 3; volatile int lepes = 0; int ertek = 0; int elozoertek = 0; void setup() { Serial.begin (9600); pinMode(APhase,INPUT_PULLUP); pinMode(BPhase,INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(APhase),szamlaloA,CHANGE); attachInterrupt(digitalPinToInterrupt(BPhase),szamlaloB,CHANGE); } void loop() { ertek=lepes; if (ertek != elozoertek) { Serial.println(ertek); } elozoertek=ertek; } void szamlaloA ( ) { if (digitalRead(APhase)==HIGH) { if (digitalRead(BPhase)==LOW) { lepes++; } else { lepes--; } } } void szamlaloB ( ) { if (digitalRead(APhase)==HIGH) { if (digitalRead(BPhase)==HIGH) { lepes++; } else { lepes--; } } } Köszönöm mindenkinek a segítséget, biztosan hamarosan jövök az újabb problémáimmal. A hozzászólás módosítva: Feb 10, 2018
Sziasztok!
Arduino alapokat hol és hogy lehetne netről autodidakta mód legjobban megtanulni?
Szia!
Én is most kezdem,de nekem nagyon sokat segít a következő oldal: http://www.elektromanoid.hu/progi1.html
Ez a visszaállításnál (3 -> 2) nem fog mindig visszaállni 2-re?
Szerintem tavir.hu, arduino 60 nap alatt tanfolyam. Naponta kapsz egy magyar nyelvű levelet, benne tananyag, feladat, akármi.
Persze ehhez nem árt, ha vannak hozzá "sallangok" is, pl. rtc chip, hőmérő modul, ellenállás, LED, ilyesmi.
Mivel október25 és 31 között egyszer fordul elő vasárnap hajnali 2.00 így a feltétel csak egyszer teljesül.
A hozzászólás módosítva: Feb 10, 2018
Nem így értem:
2:59:58, 2:59:59, 2:00:00, 2:00:01, 2:00:02, ... , 2:59:58, 2:59:59, 2:00:00, stb. Persze ha egy változóban tárolod, hogy épp nyári vagy "normál" időszámításban vagy, akkor ez nem probléma, de ha ezt nem teszed meg akkor nem látom be, hogy ez miért ne következne be újra és újra.
Igazad van, köszönöm szépen ez elkerülte a figyelmem.
A tavir email tanfolyam jó kezdés, ahogy írták előttem. Én már a vége felé járok. De majd ha meglesz az összes levél akkor állok neki. Egyelőre próbapanelen van egy Atmega8L-8PU, amihez csináltam egy párhuzamos port programozót. Egyszerű LED villogtatás már ment vele. Most egy bootloader-t akarok rá tenni, hogy ne kelljen a párhuzamos portot használni, de még nem sikerült.
A hozzászólás módosítva: Feb 10, 2018
Köszönöm!
|
Bejelentkezés
Hirdetés |