Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   830 / 850
(#) kuner válasza Régi motoros hozzászólására (») Jan 16, 2024 /
 
Aha, értem akkor mi a hiba!
A millis függvény nem lesz jó, mert csak szabályos villogásra jó, 2300ms/100ms nem kivitelezhető vele. Valami más megoldás lesz majd, mert szinte biztis, hogy megoldható.
(#) lalca válasza kuner hozzászólására (») Jan 16, 2024 /
 
void setup(){
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, (millis() % 2500) >= 2400);
}
(#) benjami válasza kuner hozzászólására (») Jan 16, 2024 /
 
Ugyan miért ne lehetne megoldani?
Itt van rá egy példa.
(#) kuner hozzászólása Jan 21, 2024 /
 
Köszönöm mindenkinek!!

Lenne újabb kérdés. Vannak hexa kódok az abc betűire? Vagy van valami parancs, amivel egyszerű szavakat lehet kiíratni 7szegmenses kijelzőre, MAX7219-el?
(#) Régi motoros válasza kuner hozzászólására (») Jan 21, 2024 /
 
Minden betűnek van hexa kódja, meg a nem betűknek is. Úgy hívják ASCII kódtábla, az alap készlet az első 127 karakter ami nem tartalmaz ékezetes betűket és FIX.
A kiterjesztett ASCII kódtábla utolsó 127 karakter meg tartalmaz ékezetes betűket is és atól függően melyik táblát használod, olyan ékezeteket fog tartalmazni, akár kínai kanjikat is.

Az IC adatlapjában meg benne kell lenni, hogy csak az alap fix kódtáblát tartalmazza, vagy van benne valamilyen kiterjesztett kódtábla is. Ami gyárilag fel van programozva, te csak azt tudod használni az IC-n keresztül. Ha speciális karaktert akarsz, akkor vagy keresel olyan dekóder IC-t ami tartalmazza az igényeidnek megfelelő karaktereket, vagy kihagyod a dekóder IC-t és direktben vezérled a szegmenseket. Ekkor azt rajzolsz ki amit a kijelző ábrázolni tud, akár még forgó pörgő animációkat is, csak a fantáziád szab neki határt.
A hozzászólás módosítva: Jan 21, 2024
(#) Kera_Will válasza kuner hozzászólására (») Jan 21, 2024 /
 
Max7219 hez jobb esetben van driver konyvtar ami tartalmazz valamennyi karaktert is.
Rosszabb esetben a karakterekhez tartozo mintak pixelek adat tombjeit neked kell definialni.
Abbol olvasni ki az aktualis karakter kepet.
Az ic csak "vas" 8x8 matrix pixeleit tudja ki es bekapcsolni.
Karakter tabla nincs benne.
Azt neked vagy az adott mar megirt "driver" konyvtar tartalmazza.
A mar megirt driver konyvtarban vannak elore definialt utasitasok amik alapjan tudod a karakter megjelenitest utasitasokkal megvalositani.
Ehhez tanulmanyozni kell az adott drivereirasat.
Jobb esetben mar magan az arduino.cc weboldalan is talalsz kesz drivert hozza. Mivel nepszeru ic ... nepszerutlenebbhez te magadnam kell majd a drivert rutinokat megirni. ilyen ez a uC vilag .
(#) Régi motoros válasza kuner hozzászólására (») Jan 21, 2024 /
 
Ui.: Az említett IC csak számkijelzésre használható, és négy betűt tud megjeleníteni adatlap 8.-ik oldal. Számok 0-tól 9-ig, - mínusz jel, betűk E, H, L, P, valamint üres karakter, mondhatjuk szóköznek is.
Amit ebből a négy betűből ki tudsz írni azt tudod megjeleníteni vele. pl.: HELP, LE, több nem jut eszembe. A direkt szegmensenkénti vezérlést nem tudom hogy képes e megvalósítani, nem néztem utána. De az ilyen FIX dekóder IC-k nemigen tudnak direkt szegmensenkénti vezérlést megvalósítani.
A hozzászólás módosítva: Jan 21, 2024
(#) Kera_Will válasza kuner hozzászólására (») Jan 21, 2024 /
 
Arduino.cc. oldalon keresve

talalatok ...

Ezek githubon levo linkekre mutatnak .
Aztan mand eldol hogy jo e neked. VAGY egyedi drivert kell irnod hozza.
(#) kuner válasza Régi motoros hozzászólására (») Jan 21, 2024 /
 
Szerintem túl nagy fa ez egy kezdő fejszének.
Egyelőre nem erőltetem.
(#) kuner válasza Kera_Will hozzászólására (») Jan 21, 2024 /
 
Pontmátrixra jó is lehetne, de nem az volt a terv.
Kicsi vagyok még a komolyabb fejlesztésekhez, driver íráshoz. Talán majd egyszer. Addig nem erőltetem ezt a dolgot.
(#) Bakman válasza Régi motoros hozzászólására (») Jan 21, 2024 /
 
Decode Mode regiszter. Ha 0x00-ra állítod, a szegmenseket bitenként lehet kapcsolgatni. 8x8 mátrix kijelzőhöz is ebben az üzemmódban használható. A dekódolás (adatlapban Code B) egy extra, nem kötelező használni.
(#) Régi motoros válasza kuner hozzászólására (») Jan 21, 2024 /
 
Mindenki kis lépésekkel kezdte az arduinot, aztán ahogy jönnek az igények, úgy keres kutat és tanul tovább. A lényeg, hogy az egyszerűbb projektektől haladj a bonyolultabbak felé, különben elvérzel.
(#) Kera_Will válasza kuner hozzászólására (») Jan 21, 2024 /
 
Vannak pontmatrixot is hajto konyvtarak.
Korbe kell nezni miket irtak mar meg.
Aztan jo vagy nem neked ?
Idovel majd kialakul.
Mikor mi a fontos , mi az elvart kovetelmeny.Ahhoz igazodik a program.
(#) Régi motoros válasza Bakman hozzászólására (») Jan 21, 2024 /
 
Az igaz lehet, én nem ismerem ezt az IC-t.
(#) icserny válasza kuner hozzászólására (») Jan 21, 2024 /
 
Ajánlott olvasmányok:
LedControl programkönyvtár (és a dokumentációja)
Arduino tanfolyam 2020. január 23-i előadása

A 2018/19-es évadból esetleg érdekesek lehetnek még a
Hétszegmenses LED kijelzők 1. rész (2019. április 4.) és a
Hétszegmenses LED kijelzők 2. rész (2019. május 2.) előadások
(#) proba válasza GPeti1977 hozzászólására (») Jan 21, 2024 /
 
És nagyon sok autórádióban A gombok kezelése ilyen. 8-10 gombig el szoktak menni.
(#) deminger hozzászólása Jan 25, 2024 /
 
Üdv mindenkinek!
Egy kis segítséget szeretnék kérni egy arduinos projektben. Azzal vagyok elakadva hogy próbálok egy 3 fázisú fázishasításos dimmelést megvalósítani egy nanoval, de nem igazán tudok rájönni hogy hogyan kellene. Van az első fázison egy zero-cross figyelésem ami a D2es bemeneten egy interrupt és a timer1 segítségével azon a fázison szépen csinálja a dimmelést. Viszont nem tudom, hogy a másik két fázist hogy tudnám megfelelően megoldani, vagy hogy egyáltalán egy nano képes-e erre. Nagy segítség lenne ha valaki adna pár tippet hogy hogyan menjek tovább.
(#) mnyugger válasza deminger hozzászólására (») Jan 25, 2024 /
 
(#) Bakman válasza deminger hozzászólására (») Jan 25, 2024 /
 
Ha van egy nullátmeneted, akkor X, Y és Z idő elteltével kell gyújtanod a triakokat. 0 -> X idő változó, ez a szabadon beállítható érték. X -> Y és Y -> Z idők fixek, elvileg 3.33 ms. Ennyi időeltolódás van a fázisok között, 50 Hz esetén.
(#) benjami válasza deminger hozzászólására (») Jan 25, 2024 /
 
Ha normál 50Hz-es jelről van szó, akkor egy teljes hullám az 20msec. Mivel ugye egy teljes hullámban kettő nullátmenet is van, a figyelőd 10msec közönként fog észlelni nullátmenetet. A 3 fázis miatt a nullátmenetek száma meg fog háromszorozódni, ezért 3.33msec időközönként lesz nullátmented. Az egyszerűbb megoldás az, ha 2db timert hsználsz. Az egyik timer-t a nullátmenet figyelő indítja. Ha letelt a fázishasítás mértékétől függő késleltetési idő, és a timer megszakítást okozott, akkor adsz egy bekapcsoló impulzust az adott fázishoz és indítod a másik timert amit 3.33msec időzítésre állítasz. A másik timer megszakításakor meg a másik fázisra küldesz indító impulzust, és még egy alkalommal elindítod a másik timert, hogy a harmadik fázisra is elmenjen az indító impulzus.
Egy timerrel is meg lehet oldani, csak kicsit bonyolultabb, mert átlapolódnak az időzítések.
mnyugger: a 3 fázisú motorokat nem fázishasítással, hanem a frekvencia változtatásával lehet fordulatszám szabályozni. Itt nem arról van szó (mondjuk arról nincs infó mire szeretné ezt használni, de remélhetőleg nem motorhoz, mert arra nem jó).

3fazis.jpg
    
(#) deminger válasza benjami hozzászólására (») Jan 25, 2024 /
 
Igen, 50hz-es jelre kell a dolog, a logikát értem és köszönöm az ötletet. A kérdésem akkor már csak a kivitelezés részét érinti: egy arduino nano alkalmas e erre a feladatra? Azt tudom hogy van benne egy timer amit a delay függvény használ, illetve van benne egy timer1 nevű amit használok az első fázishoz, ezt indítja a nullátmenet és ennek a végén gyújt az első triak. A kérdésem hogy van e benne még egy timer (a netes kereséseim alapján kellene lennie) és ha igen akkor azt hogyan tudom erre felhasználni? (valami konkrét kódrészlet ha lenne az lenne a legjobb)
(#) benjami válasza deminger hozzászólására (») Jan 25, 2024 /
 
Ezt a kontrollert használják nagyon sok 3d nyomtatóba és cnc-be. Ebből látszik, hogy sokkal összetettebb feladatot is meg lehet vele oldani. Töltsd le az atmega 328 adatlapját, abból minden kiderül. Többek között az is, hogy 2db 8 bites és 1db 16 bites timer van benne. A konkrét feladathoz keress a neten példákat a timer-ek megszakításos használatához. Türelemmel és kitartással (néha egy kis hajtépéssel ) menni fog az.
(#) Kera_Will válasza deminger hozzászólására (») Jan 25, 2024 /
 
Idézet:
„timer amit a delay függvény használ”

A millis() fugvennyel jobban jarnal ... a delay() alatt teljesen "áll a proci " .
(#) KoblogPerGyok válasza deminger hozzászólására (») Jan 25, 2024 /
 
Szia!

Kell még a megoldás? Szerintem tedd fel azt a kódot, ami a timer-eket indítja stb. Ha tök hibás, az sem baj, átkalapáljuk, hogy jó is legyen esetleg. A lényeg, hogy a Timer-eket kell megfelelően ütemezni, felparaméterezni. Ehhez kellenek különböző előosztók, meg kezdeti értékek, és annyi. No meg a ráaggatott interruptok. Szerintem megoldják itt neked, csak legyen valami kezdeti elképzelés.
Ha lesz időm, akkor felpakolok egy ilyen időzítőt neked. Onnantól meg egy kaptafa szinte mindegyik.
(#) KoblogPerGyok válasza deminger hozzászólására (») Jan 25, 2024 /
 
  1. volatile byte allapot;
  2.  
  3.  
  4.  
  5. //Ebben a fggvényben lévő dolgok fognak lefutni, ha a beállított idő letelik
  6.  
  7. ISR(TIMER1_COMPA_vect)
  8. {
  9.   allapot=!allapot;
  10.   if (allapot==true) {
  11.     PORTB=255;
  12.   }
  13.   else {
  14.     PORTB=0;
  15.   }
  16. }
  17.  
  18. void setup() {
  19.  
  20. allapot=false;
  21. cli(); // disable interrupts during setup+
  22.  
  23.   // Configure Timer 1 interrupt
  24.   // F_clock = 16e6 Hz, prescaler = 64, Fs = 100 Hz
  25.  
  26.   //  CS12      CS11    CS10    Description
  27.   //     0      0       0       Timer stop
  28.   //     0      0       1       Prescalar=1
  29.   //     0      1       0       Prescalar=8
  30.   //     0      1       1       Prescalar=64
  31.   //     1      0       0       Prescalar=256
  32.   //     1      0       1       Prescalar=1024
  33.   //     1      1       0       Falling edge
  34.   //     1      1       1       Rising edge
  35.  
  36.   TCCR1A = 0; //Mert nem kell PWM ezen
  37.   //Ez kell neked, ezt kell megérteni, az adatlapot böngészni:
  38.   TCCR1B = 1<<WGM12 | 0<<CS12 | 1<<CS11 | 1<<CS10; //CS12 ,CS12,11,10 a Prescale Binárisan számolva 1, 8, 32, 64, 128, 256, 1024 értékeket lehet beállítani
  39.   TCNT1 = 0;          // reset Timer 1 counter
  40.   // OCR1A = ((F_clock / prescaler) / Fs) - 1 = 2499
  41.   OCR1A = 2499;//100Hz mert 16000000/64=250000 ez osztva a kívánt 100-Hz-el:=2500 és-1
  42.  
  43.  
  44.   sei(); // re-enable interrupts  
  45.  
  46.  
  47.  
  48. Serial.begin(9600);
  49. Serial.println("Soros Port elinditva 9600 Baoud-al.");
  50. DDRB = DDRB | B11111111;
  51. Serial.println("Port B kimenetre allitva. 8-13 pin");
  52. PORTB = B00000000;
  53. Serial.println("Port B Nullara allitva.");
  54.  
  55. TIMSK1 = 1<<OCIE1A; // Timer 1 interrupt indítása
  56.  
  57. }
  58.  
  59. void loop()
  60.   {
  61.  
  62.   }


Bővebben: Link

Ide feltöltöttem, megy. A LED világít folyamatosan de nem tudja lemodellezni, no meg 100Hz-en amúgy is emberi szemmel nem látható lenne a villogás. Nekem PORT manipuláció kellett, azzal villogtatom a ledet, de 8-13 ig villogna most minden lábon.

A timer 2 szerintem hasonló. De 150Hz-re ez állítható, de ekkor az interrupt- függvényben kell a megelelő változóknak értéket adni.
A hozzászólás módosítva: Jan 25, 2024
(#) deminger válasza Kera_Will hozzászólására (») Jan 25, 2024 /
 
Én nem használom a delay függvényt, éppen ebből az okból, hogy megállít mindent, csak azt olvastam hogy a 3bol az egyik timert a delay hasznalja. És nemtudom hogy így én mennyire faraghatom azt át magamnak.
(#) KoblogPerGyok válasza deminger hozzászólására (») Jan 25, 2024 /
 
Szerintem, ha a beépített delay-t a kódodban sehol sem használod, akkor a timer megmarad neked, arra használod amire akarod. A delay is egy programkód, ami a fenti beállításokat elvégzi neked úgy, hogy az eredmény a delay() zárójelében lévő szám legyen. Szóval ha az nincs, attól még te arra használod, amire szeretnéd.
(#) deminger válasza KoblogPerGyok hozzászólására (») Jan 25, 2024 /
 
Köszönöm a dolgokat, ha hazaérek felteszem a kódomat amit eddig összetákoltam, abban én a timerone.h könyvtárat használom és úgy az időzítőt.
(#) KoblogPerGyok válasza deminger hozzászólására (») Jan 25, 2024 /
 
De ne indíts több timert szerintem, mert azzal csak feleslegesen bonyolítod a kódod. Mikor melyiket kell leállítani, meg indítani. Szerintem ezzel is megoldható, de ha nem értem a feladatot és mindenképpen kell timer2 is, az sem gond. dsPIC-ben minden timert függetlenül lehet használni, mert különben nem lenne jó. Persze PWM-nél, stb.-nél élből lefoglalja a megfelelő timert, de ha nem indítod el, akkor minden hardverelemhez hozzáférésed van. Szerintem itt is ez a helyzet.
A hozzászólás módosítva: Jan 25, 2024
(#) vargham válasza KoblogPerGyok hozzászólására (») Jan 25, 2024 /
 
A beépített delay nem használ timert. Simán egy ciklusban pörög, míg le nem telik az idő. Lásd a forrását.
A millis használ timert.
Következő: »»   830 / 850
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem