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   157 / 863
(#) erdeidominik1999 válasza Kovidivi hozzászólására (») Okt 11, 2015 /
 
Igazándiból még soha nem állítottam refrencia feszültséget, ha 1v1 re állítom, az azt jelenti, hogy az analog bementen max 1.1v lehet? A feszültségosztóban 2.2 és 1.1k-s ellenállások vannak.
(#) koncsik03 válasza Bell hozzászólására (») Okt 11, 2015 /
 
A map rész megvan, a case-t hogyan bővítsem? És a shiftOut() 2 byte kiírását hogy oldom meg?
Bocsi ha kissé értelmetlenkedem.
(#) Bell válasza koncsik03 hozzászólására (») Okt 11, 2015 / 1
 
Így:
  1. ...
  2. case 16:
  3.     return B1111111111111111;
  4.     break;

A switchFunc függvény eredmény és a writeOutput beneti paraméter típusát unsigned int-re állítod a rend kedvéért, a shiftOut-ot pedig kétszer futtatod.
Mivel a felső bittel (MSBFIRST) kezdi az adatok küldését, előbb a felső byte-ot (highByte(x)), aztán az alsó byte-ot (lowByte(x)) küldöd ki.
(#) koncsik03 válasza Bell hozzászólására (») Okt 11, 2015 /
 
Ezt próbáltam és az eredmény a következő: error: 'B1111111111111111' was not declared in this scope
(#) Bell válasza koncsik03 hozzászólására (») Okt 11, 2015 /
 
Igaz, mert csak 8 biten lehet így binárisan értéket megadni. Lehet, hogy a 0B1111111111111111 működik, ha mégsem, akkor marad a hexa (0xFFFF), vagy használj két külön változót az alsó és a felső byte-nak.
Vagy így:
  1. myInt = (B11001100 * 256) + B10101010;    // B11001100 is the high byte
A hozzászólás módosítva: Okt 11, 2015
(#) koncsik03 válasza Bell hozzászólására (») Okt 11, 2015 /
 
Így elfogadja a kódot, de két különálló 8 ledet vezérel, mintha sztereóba lenne.
(#) Bell válasza koncsik03 hozzászólására (») Okt 11, 2015 /
 
Gondolom a case 0 így néz ki:
  1. myInt = (B00000000 * 256) + B00000000;    // B00000000 is the high byte

és a shift regiszterek jól vannak bekötve. (A első kimenete megy a második bemenetére, az órajelek közösek. - szerintem)
(#) koncsik03 válasza Bell hozzászólására (») Okt 11, 2015 /
 
Az előbbi hozzászólásod módosítását eddig nem láttam. Így néz ki a case 0:
  1. case 0:    
  2.     return 0B0000000000000000;
  3.     break;

A regiszterek jól vannak bekötve, más program úgy fut, ahogy kell neki.
(#) Bell válasza koncsik03 hozzászólására (») Okt 11, 2015 /
 
Tedd fel a mostani programot, mert ennek már illene működnie.
(#) koncsik03 válasza Bell hozzászólására (») Okt 11, 2015 /
 
Pedig nem jó...
Nekiállok átnézem az áramkört hátha mégis ott van valami elkötve.
(#) koncsik03 válasza Bell hozzászólására (») Okt 11, 2015 /
 
Az áramkör is jó, mit ronthatok még el?
(#) Bell válasza koncsik03 hozzászólására (») Okt 11, 2015 /
 
Ha felteszed ide a programot a kapocsrajzot és az eredeti linket, megnézzük.
(#) koncsik03 válasza Bell hozzászólására (») Okt 11, 2015 /
 
Kapcsolási rajz, ezen kívül van egy ilyen. És a kód :
  1. int dataPin = 11;
  2. int latchPin = 8;
  3. int clockPin = 12;
  4.  
  5. int value = 0;
  6. int oldValue =0;
  7. int oldoldValue =0;
  8.  
  9. int treshValue = 25;
  10. float maxValue = 25;
  11.  
  12. void setup()
  13. {
  14.   pinMode(dataPin, OUTPUT);
  15.   pinMode(latchPin, OUTPUT);
  16.   pinMode(clockPin, OUTPUT);  
  17. }
  18.  
  19. void loop()
  20. {
  21.   int sensorValue = analogRead(A0);
  22.  
  23.   sensorValue=(sensorValue+(oldValue+oldoldValue)/2)/2;
  24.   if(sensorValue>maxValue)maxValue=sensorValue;
  25.  
  26.   writeOutput(switchFunc(sensorValue));
  27.  
  28.   oldoldValue=oldValue;
  29.  
  30.   oldValue=sensorValue;
  31.  
  32.   if(maxValue>treshValue)maxValue=0.999*maxValue;      
  33.    
  34. }
  35.  
  36. void writeOutput(int value)
  37. {
  38.     digitalWrite(latchPin, LOW);
  39.     shiftOut(dataPin, clockPin, MSBFIRST, value);
  40.     shiftOut(dataPin, clockPin, MSBFIRST, value);
  41.     digitalWrite(latchPin, HIGH);
  42.    
  43.    
  44. }
  45.  
  46. unsigned int switchFunc(unsigned int switchVar){
  47.  
  48. unsigned int switchVarMap=map(switchVar,0,maxValue,0,16);
  49.  
  50.  
  51. switch (switchVarMap) {
  52. case 0:    
  53.     return 0B0000000000000000;
  54.     break;
  55.    case 1:
  56.     return 0B0000000000000001;
  57.     break;
  58.    case 2:  
  59.     return 0B0000000000000011;
  60.     break;    
  61.    case 3:    
  62.     return 0B0000000000000111;
  63.     break;  
  64.    case 4:  
  65.     return 0B0000000000001111;
  66.     break;  
  67.    case 5:    
  68.     return 0B0000000000011111;
  69.     break;    
  70.    case 6:    
  71.     return 0B0000000000111111;
  72.     break;
  73.    case 7:  
  74.     return 0B0000000001111111;
  75.     break;
  76.    case 8:  
  77.     return 0B0000000011111111;
  78.     break;    
  79.    case 9:  
  80.     return 0B0000000111111111;
  81.     break;
  82.    case 10:  
  83.     return 0B0000001111111111;
  84.     break;
  85.    case 11:  
  86.     return 0B0000011111111111;
  87.     break;
  88.    case 12:  
  89.     return 0B0000111111111111;
  90.     break;
  91.    case 13:  
  92.     return 0B0001111111111111;
  93.     break;
  94.    case 14:  
  95.     return 0B0011111111111111;
  96.     break;
  97.    case 15:  
  98.     return 0B0111111111111111;
  99.     break;
  100.    case 16:
  101.     return 0B1111111111111111;
  102.     break;
  103.   }
  104. }
(#) Bell válasza koncsik03 hozzászólására (») Okt 11, 2015 / 1
 
A writeOutput-ban is unsigned int kell és ott elmaradt az alsó és a felső Byte szétválasztása.
Ugyanazt a hibás értéket küldöd ki kétszer.
Idézet:
„...Mivel a felső bittel (MSBFIRST) kezdi az adatok küldését, előbb a felső byte-ot (highByte(x)), aztán az alsó byte-ot (lowByte(x)) küldöd ki. ..”
(#) koncsik03 válasza Bell hozzászólására (») Okt 11, 2015 /
 
Így igaz, elekrülte a figyyelmemet. Így működik már, köszönöm a segítségedet!
(#) Bell válasza koncsik03 hozzászólására (») Okt 11, 2015 /
 
Nincs mit, tetszik a project
(#) kapu48 válasza koncsik03 hozzászólására (») Okt 11, 2015 /
 
Gyerekek! Na, ne nevettessetek már!

Ti a Tömböt, és tömb Indexelést nem ismeritek?

Ilyen feladathoz azt szoktunk használni! Nem switch-t.
Kisebb, gyorsabb, egyszerűbb a program.
Bővebben: Link
(#) Bell válasza kapu48 hozzászólására (») Okt 11, 2015 /
 
Ha visszaolvasol, egy meglévő program átalakításáról van szó, tanulási célzattal.
Ráadásul - ha belegondolsz, - ebben az esetben nem is a tömb az ideális megoldás.
(#) Ikarusfan hozzászólása Okt 12, 2015 /
 
Sziasztok!
Lenne kérdésem tőletek, hogy ki érti ez a Ikarus műszerfal kapcsoló és műszer bekötés és ardunio programozásba, ha igen írj hozzászólásba vagy privátban és köszönöm!
További szép napot!
(#) nagy-istvan válasza cupika97 hozzászólására (») Okt 12, 2015 /
 
Akkor még be kell olvasnod a buttonPin értékét

23. sor alatt a setupban: pinMode(buttonPin,INPUT);
33. sor alatt a loopban: buttonState = digitalRead(buttonPin);

és 38-ik sorban ezt

if(inChar == 'e')

át kell írnod erre:

if(inChar == 'e' or buttonState== HIGH)
(#) nagy-istvan válasza nagy-istvan hozzászólására (») Okt 12, 2015 /
 
Na megint úgy jártam, h sikerült válaszolni egy régen megválaszolt hozzászólásra... bocsi.
(#) kapu48 válasza Bell hozzászólására (») Okt 12, 2015 / 1
 
Ha jobban belegondolsz?

Igy mégiscsak Jobb lenne a programod!:
  1. int dataPin = 11;
  2. int latchPin = 8;
  3. int clockPin = 12;
  4.  
  5. int value = 0;
  6. int oldValue =0;
  7. int oldoldValue =0;
  8.  
  9. int treshValue = 25;
  10. float maxValue = 25;
  11.  
  12. int switchVarArray[] = {0B0000000000000000, 0B0000000000000001,
  13.                         0B0000000000000011, 0B0000000000000111,  
  14.                         0B0000000000001111, 0B0000000000011111,
  15.                         0B0000000000111111, 0B0000000001111111,
  16.                         0B0000000011111111, 0B0000000111111111,
  17.                         0B0000001111111111, 0B0000011111111111,
  18.                         0B0000111111111111, 0B0001111111111111,
  19.                         0B0011111111111111, 0B0111111111111111,
  20.                         0B1111111111111111};
  21.  
  22. void setup()
  23. {
  24.   pinMode(dataPin, OUTPUT);
  25.   pinMode(latchPin, OUTPUT);
  26.   pinMode(clockPin, OUTPUT);
  27. }
  28.  
  29. void loop()
  30. {
  31.   int sensorValue = analogRead(A0);
  32.  
  33.   sensorValue=(sensorValue+(oldValue+oldoldValue)/2)/2;
  34.   if(sensorValue>maxValue)maxValue=sensorValue;
  35.  
  36.   writeOutput(switchFunc(sensorValue));
  37.  
  38.   oldoldValue=oldValue;
  39.  
  40.   oldValue=sensorValue;
  41.  
  42.   if(maxValue>treshValue)maxValue=0.999*maxValue;    
  43.    
  44. }
  45.  
  46. void writeOutput(int value)
  47. {
  48.     digitalWrite(latchPin, LOW);
  49.     shiftOut(dataPin, clockPin, MSBFIRST, value);
  50.     shiftOut(dataPin, clockPin, MSBFIRST, value);
  51.     digitalWrite(latchPin, HIGH);
  52.    
  53.    
  54. }
  55.  
  56. unsigned int switchFunc(unsigned int switchVar){
  57.  
  58.   unsigned int switchVarMap=map(switchVar,0,maxValue,0,16);
  59.  
  60.   return switchVarArray[switchVarMap];
  61. }
(#) cimopata hozzászólása Okt 12, 2015 1 /
 
Sziasztok.

Van egy régi projektem amihez 1602A-s kijelzőt használtam, most elfogyott rendeltem újat kínából de ezzel az újonnan rendeltem csak egy értelmetlen sort ír ki. Próbáltam másokat is azzal is értelmetlenséget jelenít meg. A régi LCD ami működik szépen az 1602A v2.0 van ráírva. Ezekre pedig simán 1602A és alatta QAPASS. Van e valakinek ötlete mi lehet a baj miért nem kompatibilisek?
A hozzászólás módosítva: Okt 12, 2015

IMAG0274.jpg
    
(#) Bell válasza kapu48 hozzászólására (») Okt 12, 2015 /
 
Igen, ez is szemléletes és kevesebbet kell írni is.
De tömb nélkül is működik:

  1. unsigned int switchFunc(unsigned int switchVar){
  2.    unsigned int switchVarMap=map(switchVar,0,maxValue,0,16);
  3.    return 0xFFFF^(0xFFFF << switchVarMap);
  4. }


Javasoljuk koncsik03 barátunknak, hogy próbálja ki ezeket is
(#) morzsa15 hozzászólása Okt 13, 2015 /
 
Sziasztok!

Olyan kérdésem lenne hogy a mini pro mivel tér el az uno-tól?
(#) TavIR-AVR válasza morzsa15 hozzászólására (») Okt 14, 2015 /
 
SorosUSB illesztő hiánya,
bootloader méret (2k vs 0,5k)
kialakítás/méret
ár
(#) k3gy3tl3n hozzászólása Okt 14, 2015 /
 
Sziasztok, vettem két arduino nano-t kíából de eddig nem sikerült programozni az arduino fejlesztőkörnyezet segítségével az usb portján keresztül. AVR ISP MKII-vel ki tudom olvasni a fuse biteket szóval az uc jó rajta. Az eszközkezelőben usb serial 2.0 néven látom. Valami illesztő program hiányozhat? Bootloader elvileg van rajta. Konkrétan ez lenne.
A hozzászólás módosítva: Okt 14, 2015
(#) dolargaan válasza k3gy3tl3n hozzászólására (») Okt 14, 2015 / 1
 
Szia!

Tedd fel a CH340G illesztő programját. Az Arduino IDE-ben pedig válaszd ki azt a COM portot, amit kap.

ch341ser.zip
    
(#) k3gy3tl3n válasza dolargaan hozzászólására (») Okt 14, 2015 /
 
Ez azért kell mert ezen a klónon nem FTDI chip van?
(#) k3gy3tl3n válasza dolargaan hozzászólására (») Okt 14, 2015 /
 
Jó lett viszont az itthoni gépemen nem is kellett az illesztőprogram, valószínű már telepítettem régebben mert egyből felismerte COM-port ként.
Következő: »»   157 / 863
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