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   565 / 565
(#) zaza99 hozzászólása Sze, 18:23 /
 
Sziasztok!
Ezt az LCD kijelződ tudom nanoval spi módban használni, tehát öt analóg kimenetekre kötve. Csak számok kiiratására szeretném használni.
A hozzászólás módosítva: Sze, 18:24
(#) tbarath válasza zaza99 hozzászólására (») Sze, 19:34 /
 
Egyrészt nem kérdeztél semmit, a kérdő mondat végén kérdőjel van.
Amit pedig állítottál, az sincs rendben. Az Arduinonak nincs analóg kimenete, hanem PWM van, ami nem analóg. Az SPI-hoz pedig 4 digit pin kell (SS, SCK, MISO, MOSI), nem pedig 5, és ezek helye fix.

Ha pedig a kijelzővel kapcsolatos kérdésed van, akkor az eladót kérdezd, mert:
- mi mondhatunk bármit, de ha ő azt mondja, hogy SPI, aztán mégse olyat küld, akkor joggal reklamálhatsz, az ebay is melléd fog állni
- a leírás eléggé kusza, mert oda van írva 37 pin leírása, utána pedig valami SPI pszeudokód.
Szóval ezt max. az tudná megválaszolni, aki már rendelt pont ilyet pont ettől az eladótól, de még ez se biztos
A hozzászólás módosítva: Sze, 19:34
(#) pipi válasza zaza99 hozzászólására (») Sze, 19:51 /
 
Válassz olyan kijelzőt, aminek a fotóján látszik a lábkiosztás, és korrektül le van írva a kontrollerja, meg van hozzá minta progi/library...
Amit linkeltél vajon melyik? Azt mondja: Controller ili9481 ili9468, ili9488 hx8357, or r61581. ezek nem kompatibiles egymással, úgyhogy zsákbamacska.
(#) kapu48 válasza zaza99 hozzászólására (») Sze, 21:41 /
 
Ez tényleg rejtélyes kijelző!
A lábkiosztása 16 bites.
Az inicializálása SPI porton történne.
De a SPI bekötése nincsen feltüntetve a lábkiosztáson, pedig az kellene az SD kártyának is.
Unora vagy Megára is jó? Ilyen nem létezik, csak átalakítóval oldható meg.

Szerintem az eladó abszolult dilettáns az árújához!

Az ár pedig gyanúsan alacsony!
A hozzászólás módosítva: Sze, 21:43
(#) ha1drp válasza zaza99 hozzászólására (») Sze, 22:09 /
 
Öt analóg kimenetre semmiképp.

Jellemzően a soros vezérlés ezeknél a kontrollereknél csak 18bites színeket kezel, illetve a felbontás mérete is nagy, így AVR kontrollerekhez nem hiszem, hogy lenne értelme egyáltalán megpróbálni SPI módban. Ezért szerintem a panel gyártói inkább a párhuzamos port támogatását részesítik előnybe arduinohoz. Ezért a kijelző valószínű ili948x típusú 8bites párhuzamos port + vezérlő szükséges a meghajtására + 2 analóg van multiplexelve a touch-hoz.
Természetesen a panel megbontásával felhasználható SPI módban is, mivel az LCD kontrollere (az IM0..2 lábak konfigurációja szerint) elfogadja a soros kommunikációt.
(#) zaza99 válasza ha1drp hozzászólására (») Csü, 10:07 /
 
Köszönöm mindenkinek a segítséget!
(#) Vacok hozzászólása Csü, 11:46 /
 
Sziasztok!
Arduino IDE programban írtam Attiny85-re egy programot, amiben a Timer0-t compare megszakításra állítottam be. A Timer0-t beállító kód részlet így néz ki:
  1. TCCR0A = 0;
  2.   TCCR0B = 0;
  3.   TIMSK = 0;
  4.   TIFR = 0;
  5.   TCNT0 = 0; //Reset timer counter to 0
  6.   TCCR0A |= ((1 << WGM00) | (1 << WGM01)); //Set fast PWM mode
  7.   TCCR0B |= (1 << WGM02); //Set fast PWM mode
  8.   TCCR0B |= (1 << CS01); //prescaler 8
  9.   TIMSK |= (1 << OCIE0A); //Set interrupt on compare match.
  10.   TIFR |= (1 << TOV0)//Set Timer0 overflow flag bit
  11.   OCR0A = 20; //Prescaler of 8 gives 1uS per tick, 1uS * 20 = 20uS. (system clock 8MHz)

Beállítottam a Timer-t fast PWM módra, a CPU órajelét osztottam 8-cal, compare match interrupt beállítás, TOV0 flag bit beállítás majd az OCR0A regiszternek 20-as értéket adtam, így a megszakítás 20us-onként érkezik és lefut a megszakításban lévő utasítás. A cél az volt, hogy a Timer újraindulását ne befolyásolja/ ne késleltesse a megszakításban lévő utasítás. A kérdés, hogy ehhez jó így a Timer beállítása?
A hozzászólás módosítva: Csü, 11:49
(#) asrock hozzászólása Csü, 12:32 /
 
esp8266 ra valaki tudna ötletet dinamikus energia gazdálkodásra (minta példa) formában?
Bár ez firmware de a megoldás érdekelne hogyan van megoldva nem nagyon találni megoldást rola csak szimpla alvás módra!Bővebben: Link!
(#) Koncsar válasza KoblogPerGyok hozzászólására (») Szo, 9:11 /
 
Szia! Az AVR ha benne van, ha nincs benne az Arduinóban, akkor is világít az RX,TX LED.
Az FT232 USB illesztő krepált be szoftveres szinten szerintem. Az IC biztos helyes irányba van, mivel az ICSP csatiról programozható, mondjuk egy STK500 al. Lehet, hogy azért nem tudom kijavítani a hibát, Mproggal, Zadig-al, FTproggal, mert lezártam véletlen az FT232 programozó oldalát. Nem tudom. Másik gépben sem más a helyzet, sajnos. Most Com8 portra teszi a gép, de az arduino progiban ezt nem látja, így esélytelen bármit is beleégetni az AVRbe.
A hozzászólás módosítva: Szo, 9:16

Névtelen.png
    
(#) Koncsar hozzászólása Szo, 9:36 /
 
A D9C8 at nem hajlandó átírni ami az Argus driver é volt 6001 re.
0403 és 6001 nek kéne lennie.??

Névtelen.png
    
(#) asrock hozzászólása 1:31 /
 
float változónak 4096 értékét szeretném felbontani 32re if függvénnyel elég hosszú ezt levezetni mivel egyszerű megoldani ?
pl

  1. pl 8 osztással
  2. if ((lastOutput - output) > 512)
  3. revolutions=revolutions+1;
  4. if ((lastOutput - output) > 1024)
  5. revolutions=revolutions+1;
  6. if ((lastOutput - output) > 1536)
  7. revolutions=revolutions+1;
  8. if ((lastOutput - output) > 2048)
  9. revolutions=revolutions+1;
  10. if ((lastOutput - output) > 2560)
  11. revolutions=revolutions+1;
  12.  
  13. stb....
A hozzászólás módosítva: 1:35
(#) Kovidivi válasza asrock hozzászólására (») 6:48 /
 
Attól függ, hogy mit szeretnél ezzel a 32 apró résszel kezdeni. Ha az eredeti feltételtől függő, akkor bele kell építeni azt, és akkor elég csak 1 sor programkód. Ha egymástól teljesen függetlenek, de legalább az if utáni részeket előre tudod, akkor azt egy tömbbe le kell tárolni, és a feltétel helyett ismét csak egy hivatkozás lesz, egy sorban. A float adja a tömb sorszámát.
(#) Kera_Will válasza asrock hozzászólására (») 8:08 /
 
Erre nem jobb map() ami valamekorra kozotti reszt at konvertal aranyosan kisebb tartomanyra ?
A fuggveny neve map -nek remlik...
  1. map (valtozod,nagyertekminimuma, nagyertek maximuma,kicsiminimuma,kicsimaximuma)  // igynezki
  2. // neked ilyesmi kell
  3. map(valtozoneve,0,4095,0,32)  //

Ekkor a 4096 értékű valtozoneve értékétől függően 0-32 közötti arányos kimenö értéket kapsz vissza.

map() leírása
A hozzászólás módosítva: 8:13
(#) pipi válasza asrock hozzászólására (») 8:37 /
 
A feltételt osztod 512-vel és az eredményt hozzáadod a revolution-hoz
(#) asrock válasza Kera_Will hozzászólására (») 10:11 /
 
Ez hogy tudom ugy hogy 32 után ujra kezdje a számolást?
(#) Kera_Will válasza asrock hozzászólására (») 10:17 /
 
???Nem értem???
Lehet elbeszelunk egymás mellett.
Esetleg maradékos osztást beleviszel a műveletbe, kapott érteket mindig oszthatod 32vel es a maradék ertékelevel kezdi ujra 1-31 ig utana 32vel oszthato eseteben 0 lesz.
A hozzászólás módosítva: 10:20
(#) asrock válasza Kovidivi hozzászólására (») 10:20 /
 
Végteleníttet minden 4096 (encoder 360 fordulat) után nő vagy csökken revolutions értéke 1 el!
4096 32 osztani szeretném ami 32 után újra kezdi!
  1. #include <AS5600.h>
  2. #include <Wire.h>
  3. AS5600 encoder;
  4.  
  5. long revolutions = 0;   // number of revolutions the encoder has made
  6. double position = 0;    // the calculated value the encoder is at
  7. double output;          // raw value from AS5600
  8. long lastOutput;        // last output from AS5600
  9.  
  10.  
  11. void setup() {
  12.   Serial.begin(115200);
  13.    Wire.begin(D4,D3);
  14.  
  15.   output = encoder.getPosition();
  16.   lastOutput = output;
  17.   position = output;
  18. }
  19.  
  20. void loop() {
  21.   output = encoder.getPosition();                               
  22.  
  23.  
  24.     if ((lastOutput - output) > 2048)       
  25.     revolutions=revolutions+1;
  26.  
  27.     if ((lastOutput - output) < -2048)
  28.     revolutions=revolutions-1;
  29.    
  30.    
  31.  
  32.  
  33.  
  34.  
  35. position = revolutions;
  36.  
  37.  
  38.  
  39.   Serial.println(position);
  40.  
  41.  lastOutput = output;                      // save the last raw value for the next loop
  42. }
(#) asrock válasza Kera_Will hozzászólására (») 10:24 /
 
De ez nem fordul át -16,16 közöt dolgozik? nekem az kell hogy átforduljon !
map(valtozoneve,0,4095,-16,16)
A hozzászólás módosítva: 10:24
(#) Kera_Will válasza asrock hozzászólására (») 10:28 /
 
Hmm a map() ott dolgozik ahova behatarolod .
Módositsd a alsó felső határt ... +1 vagy -1 Mi forduljon át ?
(#) asrock válasza Kera_Will hozzászólására (») 10:37 /
 
Csak osztani akarok 32 vel nem limitálni pl-16 ig +16ig !
map -16nál és16 nem számol tovább!
(#) Kera_Will válasza asrock hozzászólására (») 10:41 /
 
Akkor nem 16 hanem 32 legyen a vége ... 0-32 esetleg tudnod kell , hogy elore vagy hatra forgott es abból az adatból számolni ujabb jó poziciót adatot amire szükséged van ....
(#) asrock válasza Kera_Will hozzászólására (») 10:47 /
 
Vagy egyszerűen átbillentem (tulcsordul)0,4096 akor átfordul 32 után 0 kezdi ujra?
Nem kell pontos pocició (kézi tekergetös) lesz!
(#) Kera_Will válasza asrock hozzászólására (») 10:53 /
 
Elvileg erről szól a map().
Első 128 pulzára biztos 0 lesz a kimeneten...
Majd a 128dik után lesz 1 a fugveny kimeneti erteke ... stb 4095ig 31...
Lehet 0 .... 31 .lesz a jo also limt
(#) asrock válasza Kera_Will hozzászólására (») 11:04 /
 
Hogy kell helyesen mert ez igy nem müxikMŰKÖDIK!

  1. output = encoder.getPosition();                               
  2.  
  3. revolutions= map(revolutions,0,4095,0,32);
  4.  
  5.     if ((lastOutput + output))     
  6.      
  7.     revolutions=revolutions+1;
  8.  
  9.     if ((lastOutput - output))
  10.  
  11.     revolutions=revolutions-1;


Nem chat felületen vagyunk!
A hozzászólás módosítva: 12:05
Moderátor által szerkesztve
(#) asrock hozzászólása 11:58 /
 
0..32 érték közöt számol nem végtelem a 32 osztás!

output = encoder.getPosition();

revolutions= map(lastOutput,0,4096,0,32);

if ((lastOutput + output>= revolutions))

revolutions=revolutions+1;

if ((lastOutput - output<= revolutions))

revolutions=revolutions-1;



position = revolutions;



Serial.println(position);

lastOutput = output;
Következő: »»   565 / 565
Bejelentkezés

Belépés

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