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   565 / 838
(#) zaza99 hozzászólása Nov 13, 2019 /
 
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: Nov 13, 2019
(#) tbarath válasza zaza99 hozzászólására (») Nov 13, 2019 /
 
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: Nov 13, 2019
(#) pipi válasza zaza99 hozzászólására (») Nov 13, 2019 /
 
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 (») Nov 13, 2019 /
 
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: Nov 13, 2019
(#) ha1drp válasza zaza99 hozzászólására (») Nov 13, 2019 /
 
Ö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 (») Nov 14, 2019 /
 
Köszönöm mindenkinek a segítséget!
(#) Vacok hozzászólása Nov 14, 2019 /
 
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: Nov 14, 2019
(#) asrock hozzászólása Nov 14, 2019 /
 
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 (») Nov 16, 2019 /
 
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: Nov 16, 2019

Névtelen.png
    
(#) Koncsar hozzászólása Nov 16, 2019 /
 
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 Nov 19, 2019 /
 
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: Nov 19, 2019
(#) Kovidivi válasza asrock hozzászólására (») Nov 19, 2019 /
 
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 (») Nov 19, 2019 /
 
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: Nov 19, 2019
(#) pipi válasza asrock hozzászólására (») Nov 19, 2019 /
 
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 (») Nov 19, 2019 /
 
Ez hogy tudom ugy hogy 32 után ujra kezdje a számolást?
(#) Kera_Will válasza asrock hozzászólására (») Nov 19, 2019 /
 
???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: Nov 19, 2019
(#) asrock válasza Kovidivi hozzászólására (») Nov 19, 2019 /
 
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 (») Nov 19, 2019 /
 
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: Nov 19, 2019
(#) Kera_Will válasza asrock hozzászólására (») Nov 19, 2019 /
 
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 (») Nov 19, 2019 /
 
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 (») Nov 19, 2019 /
 
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 (») Nov 19, 2019 /
 
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 (») Nov 19, 2019 /
 
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 (») Nov 19, 2019 /
 
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: Nov 19, 2019
Moderátor által szerkesztve
(#) asrock hozzászólása Nov 19, 2019 /
 
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;
(#) usane hozzászólása Nov 22, 2019 /
 
Üdv!
Nem biztos, hogy ide kellene feltennem a kérdést, de nagyjából ide is tartozik.
Van egy Neopixeles projectem amit PIC-en fejlesztettem.
Szeretném ha WiFi-s lenne ezért úgy döntöttem, hogy az egészet átrakom ESP8266 NodeMCU alá.
A LED-szalag RGBW. Na már most, az Adafruit könyvtár mint kiderült nem működik, ha a WiFi is megy a 8266-on. A FastLED nem támogatja még az RGBW-t, maradt Makuna NeopixelBus könyvtára, de mint kiderült az meg AZ I2C vonalat használja az ESP-n az meg csak egy van rajta, nekem viszont két szalagot kellene meghajtanom két külön mintával. Játszott már valaki RGBW Neopixellel ESP-n? Van megoldás?
A hozzászólás módosítva: Nov 22, 2019
(#) asrock válasza usane hozzászólására (») Nov 22, 2019 /
 
Wifi rész egy timert használ valószínű Adafruit ezt használná fel megoldás Ticker lib!
(#) pipi válasza usane hozzászólására (») Nov 22, 2019 /
 
Esetleg nézd meg esp32-n
(#) Rober_4 hozzászólása Nov 23, 2019 /
 
Sziasztok!
Van egy short típusú változóm. Szeretném tudni, hogyha pozitív vagy negatív irányban túlcsordult egy összeadás művelet után. Van rá lehetőségem?
(#) szeg76 válasza Rober_4 hozzászólására (») Nov 23, 2019 / 1
 
Amennyire én tudom, C/C++ nyelvben közvetlen utólagos módja nincs, neked kell olyan kódot írnod, hogy valamilyen módon nyoma legyen.

Szerintem legegyszerűbb az a megoldás, hogy a műveletet egy hosszabb típusú átmeneti változóban végzed el, majd megvizsgálod, hogy az eredmény befér-e a short típus határai közé.
Következő: »»   565 / 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