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   515 / 838
(#) Kovidivi válasza Mercurion99 hozzászólására (») Márc 12, 2019 /
 
Pl. nem a nyers, terhelhető tápot rakják ki a jack csatlakozóra, hanem egy soros 100ohm-on keresztül. Így rövidzárlatnál sem fog 5V/100Ohm=0.05A-nál nagyobb áram folyni. A másik, amire én gondolok, hogy csak a setup részben keresed a szenzort, miután a loop-ban vagy, már csak lekérdezgeted. Így amikor lehúzod, majd újra csatlakoztatod, a szenzorral megszakad a kapcsolat. Újra kell keresni, és kiadni neki a megfelelő parancsokat (pl. egy várakozás nélküli lekérdezésnél hiába fogja a program a "konverzió kész" üzenetet várni, sosem fog megérkezni).
A várakozás nélküli lekérdezésben ha még nincs kész a konverzió, simán folytatjuk a program futását a delay-es várakozás helyett. Egyébként már a lib is tartalmazza ezt az üzemmódot, én előszeretettel használom.
(#) Mercurion99 válasza Kovidivi hozzászólására (») Márc 13, 2019 /
 
Köszi a segítséget.
Pontosan melyik libről lenne szó és a liben belül van rá példa?
(#) Kovidivi válasza Mercurion99 hozzászólására (») Márc 13, 2019 /
 
Pontosan nem tudom, általában a legelső, amit google megtalál, azt rakom fel. A legelterjedtebbet.
Itt tudsz csemegézni: Bővebben: Link.
A liben belül van példa!
A hozzászólás módosítva: Márc 13, 2019
(#) Mercurion99 válasza Kovidivi hozzászólására (») Márc 13, 2019 /
 
Be tudnád esetleg még írni a kódot,hogyan is kellene kinéznie?
(#) Kovidivi válasza Mercurion99 hozzászólására (») Márc 13, 2019 /
 
A dallas féle lib-et használtam, async konverziónal nevezik: Bővebben: Link
(#) david10 hozzászólása Márc 13, 2019 /
 
Sziasztok,
December végén kértem a segítségeteket egy 48x8 ledből álló kijelző készítésében.
A kijelzőt elkészítettem kék ledekből, viszont az a gond, hogy azok a ledek is világítanak, amiknek nem szabadna. Decemberben MAX7219-el, míg most 4094-ekkel + A337 tranzisztorokkal próbálkoztam, a jelenség ugyanaz: a ledek akkor is világítanak, amikor nem kellene. (Csak egy 8x8-as négyzeten kísérleteztem). Mindkét vezérlés tökéletesen működik zöld színü ledekkel.
Van-e valaķinek ötlete, abban, hogy mivel tudnék még próbálkozni? Ha ellenállásokat teszek be, akkor is ugyanúgy világítanak azok a ledek is amiknek nem kellene, csak halványabban.
A választ elre is köszönöm!
(#) Kovidivi válasza david10 hozzászólására (») Márc 13, 2019 /
 
A kódodba be kell rakni egy kis szünetet, amikor váltasz (sort vagy oszlopot, ezt már neked kell tudni). Ki kell kísérletezni a megfelelő várakozási időt, a félvezetők nem tudnak olyan gyorsan lezárni, mint ahogy te a következő részt aktiválod, és így egy szellemképes képet kapsz.
(#) david10 válasza Kovidivi hozzászólására (») Márc 13, 2019 /
 
Köszönöm a válaszodat! Pénteken kifogom probálni a szünetes megoldást is.
A másik ötlet az az lenne, hogy mindenik 8x8-as kijelzőre 2db 4094-et tennék (egyet a sornak és egyet az oszlopnak), kifogom mindkettőt próbálni.
(#) proba válasza david10 hozzászólására (») Márc 13, 2019 /
 
Helyes sorrend (szerintem):
1 oszlop adatait kiíratod
2 oszlop kijelölés
3 várakozás
4 oszlop kijelölés megszüntetése
5 új oszlop adatok beírása
6 Itt várhatsz is egy kicsit
7 következő oszlop kijelölése
A 4,7 pontot nem lehet összevonni, mert még az egy órajelnyi hibás tartalom is szellemképként látszik.
Szerintem 16x8-as (de inkább 8x8) mátrixnál nagyobbat nem célszerű egyben kezelni, több kisebbre kell(ene) bontani. Az idő 1/16-od része jusson minden ledre legalább, így nem kell túl nagy áram a megfelelő fényerőhöz.
A hozzászólás módosítva: Márc 13, 2019
(#) Kovidivi válasza proba hozzászólására (») Márc 13, 2019 /
 
A 6-ost én az 5-ös elé raknám. Tehát letiltod az egész oszlopot, vársz, ekkor alszanak el a LED-ek teljesen, majd következő oszlop adatainak kiküldése, majd oszlop engedélyezése.
Ha tiltod az oszlopot, és utána azonnal kirakod az új adatot, akkor még látszódhat egy kis ideig az új infó az előző oszlopon.
(#) proba válasza Kovidivi hozzászólására (») Márc 13, 2019 /
 
Ízlés szerint. Én nagyobb kijelzőt még nem csináltam, így ez nem volt gond. Elég volt kioltani, felülírni újra kijelölni..
(#) david10 válasza proba hozzászólására (») Márc 13, 2019 /
 
Ez a jelenlegi forráskód, a
  1. char szoveg[] = {195, 195, 195, 255, 255, 195, 195, 195}
tömbben van eltárolva, hogy mit szeretnék kiírni, jelen esetben egy H betű látható.

  1. void screen_refresh() {
  2.  
  3.   for(i=0;i<light_intensity;i++)
  4.     {
  5. /*************************** FIRST FRAME ***************************/
  6.     digitalWrite(latchPin, LOW);
  7.     shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[0]);
  8.     //shiftOut(dataPin, clockPin, LSBFIRST, ujkilenc);
  9.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizenhet);
  10.     digitalWrite(latchPin, HIGH);
  11.     ledmatrix.Shift_Register_Emulator(254,LedPort); }
  12.   ledmatrix.Shift_Register_Emulator(255,LedPort); //Turn off all the LEDs
  13.    
  14. /******************************* SECOND FRAME ********************************/  
  15.     for(i=0;i<light_intensity;i++)
  16.     { digitalWrite(latchPin, LOW);
  17.     shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[1]);
  18.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtiz);
  19.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizennyolc);
  20.     digitalWrite(latchPin, HIGH);
  21.     ledmatrix.Shift_Register_Emulator(253,LedPort);}
  22.   ledmatrix.Shift_Register_Emulator(255,LedPort); //Turn off all the LEDs
  23.   /**************************** THIRD FRAME *******************************/
  24.   for(i=0;i<light_intensity;i++)
  25.     {
  26.     digitalWrite(latchPin, LOW);
  27.     shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[2]);
  28.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizenegy);
  29.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizenkilenc);
  30.     digitalWrite(latchPin, HIGH);
  31.     ledmatrix.Shift_Register_Emulator(251,LedPort);  }
  32.   ledmatrix.Shift_Register_Emulator(255,LedPort); //Turn off all the LEDs
  33.    
  34. /************************* FOURTH FRAME *******************************/
  35.   for(i=0;i<light_intensity;i++)
  36.     { digitalWrite(latchPin, LOW);
  37.     shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[3]);
  38.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizenketto);
  39.     //shiftOut(dataPin, clockPin, LSBFIRST, ujhusz);
  40.     digitalWrite(latchPin, HIGH);    
  41.     ledmatrix.Shift_Register_Emulator(247,LedPort);}
  42.     ledmatrix.Shift_Register_Emulator(255,LedPort); //Turn off all the LEDs
  43.    
  44. /***************************** FIFTH FRAME ******************************/
  45.     for(i=0;i<light_intensity;i++)
  46.     { digitalWrite(latchPin, LOW);
  47.     shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[4]);
  48.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizenharom);
  49.     //shiftOut(dataPin, clockPin, LSBFIRST, ujhuszonegy);
  50.     digitalWrite(latchPin, HIGH);
  51.     ledmatrix.Shift_Register_Emulator(239,LedPort);   }
  52.   ledmatrix.Shift_Register_Emulator(255,LedPort);
  53.  
  54. /**************************** SIXTH FRAME *****************************/
  55.     for(i=0;i<light_intensity;i++)
  56.     { digitalWrite(latchPin, LOW);
  57.     shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[5]);
  58.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizennegy);
  59.     //shiftOut(dataPin, clockPin, LSBFIRST, ujhuszonketto);
  60.     digitalWrite(latchPin, HIGH);
  61.     ledmatrix.Shift_Register_Emulator(223,LedPort);
  62.     }
  63.   ledmatrix.Shift_Register_Emulator(255,LedPort);  //Turn off all the LEDs
  64.    
  65. /***************************  SEVENTH FRAME **************************/  
  66.    for(i=0;i<light_intensity;i++)
  67.     {  digitalWrite(latchPin, LOW);
  68.     shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[6]);
  69.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizenot);
  70.     //shiftOut(dataPin, clockPin, LSBFIRST, ujhuszonharom);
  71.     digitalWrite(latchPin, HIGH);
  72.          
  73.     ledmatrix.Shift_Register_Emulator(191,LedPort);
  74.     }
  75.   ledmatrix.Shift_Register_Emulator(255,LedPort); //Turn off all the LEDs
  76.    
  77. /**************************** EIGHTH FRAME ***************************/
  78.     for(i=0;i<light_intensity;i++)
  79.     { digitalWrite(latchPin, LOW);
  80.     shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[7]);
  81.     //shiftOut(dataPin, clockPin, LSBFIRST, ujtizenhat);
  82.     //shiftOut(dataPin, clockPin, LSBFIRST, ujhuszonnegy);
  83.     digitalWrite(latchPin, HIGH);
  84.     ledmatrix.Shift_Register_Emulator(127,LedPort);}
  85.   ledmatrix.Shift_Register_Emulator(255,LedPort); //Turn off all the LEDs
  86. }
(#) proba válasza david10 hozzászólására (») Márc 13, 2019 /
 
Ehez értenem kellene, hogy működik. De valahogy nem jó. Eleve for ciklust nem használnék időzítéshez, mert nem lesz időd új képet kiszámolni. Ha az intenzitást így akarod befolyásolni, rossz út. Mátrxoknál alapnak tartom, minden oszlopra ugyan annyi idő jut, és az konstans. kb 10ms/megjelenítendő oszlopok száma. A fényerőt az dönti el, a rá jutó időből mennyi ideig világít. Ebből az következik, fényerő szabályzásnál ha az egyiket kioltom, a másik csak egy adott idő mulva következik, még ha a holt időben nincs is semmi a kijelzőn. Szerintem kezdőként másként nem tudsz villódzás mentes egyenletes képet készíteni. A várakozó cikluson belül teljesen feleslegesen túráztatod a léptető regisztereket.
A szép megjelenéshez a programodat át kellene szervezni, először lemondva a fényerő szabályzásról. A program loop ciklusa kb 1ms környéke legyen. minden ciklus végén egy oszlopot rajzoltass ki, és addíg legyen kint a kép mig a következő loop lefut. (és ez csak max 16 oszlopig működik jól)
loop végén
ledmatrix.Shift_Register_Emulator(255,LedPort); //Turn off all the LEDs
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[2]); //adatok kiléptetése
digitalWrite(latchPin, HIGH);
ledmatrix.Shift_Register_Emulator(hely,LedPort); // ledek bekapcsolása
loop vége
loop
loop végen hely léptetése
következő oszlop kiirás
loop
........
A hozzászólás módosítva: Márc 13, 2019
(#) Kovidivi válasza proba hozzászólására (») Márc 14, 2019 /
 
Én fényerő szabályzásra a shift regiszterek OE lábát használtam, nagy megelégedéssel. De volt, amikor programból is megoldottam, interupttal. Bekapcsoltam az oszlopot, majd innen indult egy timer, ami x idő után lekapcsolta a LED-eket. Ez is működött (működik).
(#) proba válasza Kovidivi hozzászólására (») Márc 14, 2019 /
 
Ha az alap mátrix működik, jöhet a csicsa.
(#) Kovidivi válasza proba hozzászólására (») Márc 14, 2019 /
 
Így van. Csak tippeket próbáltam adni a kérdezőnek. Ha megvan a koncepció, sokkal egyszerűbb már elsőre úgy megírni a programot, hogy beilleszthető legyen bele plusz funkció.
(#) Kovidivi válasza proba hozzászólására (») Márc 14, 2019 /
 
Egyébként attól is függ a szellemkép, hogy tranzisztort, vagy FET-et használ az ember. A tranzisztor bázisáram nélkül gyorsabban lezár, mint a FET soros ellenállással. De ha tudja az ember az okot, akkor a megoldást is meg fogja találni rá.
(#) KoblogPerGyok válasza elektroncso hozzászólására (») Márc 14, 2019 /
 
Hogy áll a program? Vezérli már az antennát?
(#) david10 válasza proba hozzászólására (») Márc 14, 2019 /
 
Köszönöm a segítőkész válaszokat!

A program ötlete innen származik, az itt lévő példák alapján össze copy-pastel-tem egy valamit, amiből lett egy valamennyire működő dolog, ami mint kiderült nem a legoptimálisabb program.

Fényerő szabályzásra nincsen szükségem, minél fényesebb, annál jobb. Ezzel a kijelzővel elméletileg az április 12-én rendezésre kerülő szakmák éjszakájára kellene elmenni, feltéve, ha addig sikerül üzembe helyzeni A program másik fele, ami a 48 bájtos tömbbe teszi bele a kiírandó adatokat az készen van.

Ha különlegesebb hardware-re van szükség, akkor azt is betudom szerezni, Arduino Mega, STM32F103 stb. mindenféle van itthon.

A koncepció: van 48 oszlop, aminek a katód lábai egy 4094-nek a lábaira van rákötve. A 8 sornak az anód lábai A733 PNP tranzisztorra mennek rá, a ledmatrix.Shift_Register_Emulator függvény annyit csinál, hogy a 8 bites adatot, kiküldi a PNP tranzisztoroknak (ezzel helyettesítem az odajáró 4094-et).

Így képzelted-e el a kódot? Kovidivi tanácsát is megfogadva, a 6-ost az 5-ös elé tettem:
  1. void screen_refresh() {
  2.    //1 oszlop adatait kiíratod:
  3.    digitalWrite(latchPin, LOW);
  4.    shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[1]);
  5.    digitalWrite(latchPin, HIGH);
  6.    
  7.    //2 oszlop kijelölés:
  8.    ledmatrix.Shift_Register_Emulator(254,LedPort);
  9.    
  10.    //3 várakozás:
  11.    delay(1);
  12.    
  13.    //4 oszlop kijelölés megszüntetése:
  14.    ledmatrix.Shift_Register_Emulator(255,LedPort);
  15.    
  16.    //6 Itt várhatsz is egy kicsit:
  17.    delay(1);
  18.    
  19.    //5 új oszlop adatok beírása:
  20.    digitalWrite(latchPin, LOW);
  21.    shiftOut(dataPin, clockPin, LSBFIRST, ~szoveg[2]);
  22.    digitalWrite(latchPin, HIGH);
  23.    
  24.    //7 következő oszlop kijelölése:
  25.    ledmatrix.Shift_Register_Emulator(253,LedPort);
  26. }
(#) proba válasza david10 hozzászólására (») Márc 14, 2019 / 1
 
Ha ilyen nagyratörő álmaid vannak.. Első körben már a kijelző refres mint rutin név is téves. Az egész programodnak a kijelzőröl kell szólnia, ha nem akarsz nagyon belebonyolódni. Ahogyan én látom
Hardvare: minden kijelzőnek egy egy 4094 ( szerintem nulla fényerőt fog adni az a 10-15mA amire képes) ezeket felfűzve (sorvezérlés) . A kijelzők megfelelő oszlopai pedig párhuzamosan kötve mehetnek a tranzisztorokra .
A programod pedig kb


shiftOut(dataPin, clockPin, LSBFIRST, szoveg[0], szoveg[8], szoveg[16] ...... );minden 8. oszlop feltöltése.
digitalWrite(latchPin, HIGH); adatok átírása
digitalWrite(latchPin, LOW);
ledmatrix.Shift_Register_Emulator(254,LedPort); adott oszlopok bekapcsolása
delay(6); most világít egy kicsit
ledmatrix.Shift_Register_Emulator(255,LedPort); összes led ki


shiftOut(dataPin, clockPin, LSBFIRST, szoveg[1], szoveg[9], szoveg[17] ...... ); feltöltöd a következő oszlopot.
digitalWrite(latchPin, HIGH); adatok átírása
digitalWrite(latchPin, LOW);
ledmatrix.Shift_Register_Emulator(253,LedPort); adott oszlopok bekapcsolása
delay(6);
ledmatrix.Shift_Register_Emulator(255,LedPort); összes led ki

mindez ismételve míg mind a nyoc oszlop el nem fogy. Akkor lehet a tartalmat egyel shiftelni, és kezdődik elölről.
Annyit lehet változtatni, a feltöltést a világítás alatt is végre lehet hajtani, ha nem kell a kioltási késleltetés.
A hozzászólás módosítva: Márc 14, 2019
(#) 5L hozzászólása Márc 15, 2019 /
 
Sziasztok,

Remélem jó helyre írom a kérdésemet: van egy Arduino Mega2560 klón (meduino) board-om amihez hozzá szeretnék UART-on keresztül kötni egy SIM5360E alapú breakoutboardot (Bővebben: Link ). Erről a dologról tudni kell, hogy a SIMCOM SIM5360E chipjét használja ami 1.8V-os RX/TX-el operál, ezért a modul gyártója rakott egy 3.3V<->1.8V logikai szintillesztőt a board-ra és maga a board egy 3.3V TTL ki/bemenetet vár az UART portján. A probléma: az Arduino 5V-os, ezért csináltam egy 5V<->3.3V szintillesztőt, viszont így nem működik a dolog. Szerintetek mi lehet a hiba? A két logikai szintillesztő már "lenyeli" a jelet vagy annyira gyengíti? Csatoltam a áramkör rajzát hátha az segít jobban megérteni a problémát. (Jah még annyi hogy külön-külön működnek csak egymással nem akarnak kommunikálni...)

circuit.png
    
(#) kapu48 válasza 5L hozzászólására (») Márc 15, 2019 /
 
Szerintem felesleges a kétszeres szint illesztés!
A simcomon levő illesztő VCCB tápját kösd át 5V-ra és megvan 1.8V <> 5V illesztésed.

Vagy ugyanezt megteheted a másik illesztővel is. 3.3V helyett adsz neki 1.8V tápfeszt.
És akkor a simcom illesztőjét elhagyhatod.
A hozzászólás módosítva: Márc 15, 2019
(#) 5L válasza kapu48 hozzászólására (») Márc 15, 2019 /
 
Igen erre én is gondoltam, de mindkét megoldáshoz SMD-t kell forrasztani a simcom board-on.
(ráadásul nagyon kis alkatrészek).
Már bánom hogy ezt vettem meg, főleg hogy alig van dokumentálva.

Még arra is gondoltam hogy van ott egy 1k ellenállás, talán az zavarhat be?
(#) kapu48 válasza 5L hozzászólására (») Márc 15, 2019 /
 
Néztem a gyártó kínai oldalát! Kirakót, egy képet tele kínai írással!
Ezt még a fordítóba sem lehet beledobni, hogy megértse az ember!
Én biztos messzire elkerültem volna.

Rendelés előtt a legfontosabb, hogy megnézem milyen az árú dokumentálása, és, hogy ezek alapján lehet valami értelmeset össze hozni?

Másik javaslat: Hajtsad a Megát 3.3.V-ról. Ha szerencséd van még működik ugyanazzal az óra jellel.
A hozzászólás módosítva: Márc 15, 2019
(#) proba válasza 5L hozzászólására (») Márc 15, 2019 /
 
Mondjuk én alapból 3,3V os arduinót szoktam venni, nincs baj a szintillesztéssel, igaz kisebb az órajele. Az 5V-os is talán elmegy 3,3V ról, csak a stabilizátor után kell kötni a tápot.
A te áramköröd szerintem azért nem működik, mert rossz fetet választottál. Túl nagy a nyitófeszültsége.
(#) tbarath válasza 5L hozzászólására (») Márc 15, 2019 /
 
Ha jól tudom az Atmega 0.6*VCC fölött high-nak veszi a vonalat (legalábbis digit pineken), ha így van akkor a SIMxxx TX és a Mega RX közé nem kell szintillesztő. A másik irányba pedig elég lehet egy feszültségosztó is, mondjuk 2k2-3k3.
(#) 5L válasza proba hozzászólására (») Márc 15, 2019 /
 
Milyen FET-et javasolsz? SO-8 -as tokozás lenne jo mert azt konnyebb forrasztani.
(#) 5L válasza proba hozzászólására (») Márc 15, 2019 /
 
https://www.hestore.hu/prod_10038208.html

Ez jo lehet helyette nem? 1.5V max Vgs(th) erteke
(#) proba válasza 5L hozzászólására (») Márc 16, 2019 /
 
Remélem.
(#) Helios hozzászólása Márc 16, 2019 /
 
Sziasztok!

Tud segíteni nekem valaki egy kisebb probléma megoldásában? Adott egy működő kód, melyben van 4 gomb, amiből 3-at szeretnék kicserélni encoderre. De nem tudom kijavítani, megírni hozzá a javítást. Meg tudja nekem valaki csinálni?
Következő: »»   515 / 838
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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