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   202 / 853
(#) Tetye válasza Balázs hozzászólására (») Márc 11, 2016 /
 
Igen működik, bocs közben lefordult, csak sok sorral feljebb valahogy be került egy pont.

Be van gipszelve a kezem néha megesik hogy véletlen benyomok valamit úgy hogy nem veszem észre.
(#) andykaaa hozzászólása Márc 11, 2016 /
 
Hellotok
EZT lattatok, nem is olyan draga, ahhoz kepest.
Vagy esetleg nagy kompatibilitasi problemak lennenek ?
(#) zosza18 válasza andykaaa hozzászólására (») Márc 11, 2016 /
 
Szia!
A lenti táblázat alapján, jobb mint az UNO.
(#) Kovidivi válasza andykaaa hozzászólására (») Márc 11, 2016 /
 
Nincs mögötte nagy közösség, lib-ek sincsenek hozzá olyan számban, mint az Atmega328-as Uno-hoz.
(#) Tetye válasza Tetye hozzászólására (») Márc 11, 2016 /
 
Na jó, esküszöm hogy nem kérdezek ma többet csak ezt magyarázza el valaki. Utolsó kérdésem óta kb 6 órája olvasgatok mintákat nézegetek és a választ keresem de semmi.
Van ez a kód:
  1. char cond[17];
  2. int q =0;
  3. int w =0;
  4. byte ghj;


  1. finder.getString("","&",cond,(17)); //28ABE3D0040000B1&
  2. for (int q= 0; q < 17; q++){
  3. w=q+1;
  4.                 ghj = cond[q] & cond[w];
  5.                 Serial.print("cond[q]:");
  6.                 Serial.println(cond[q]);
  7.                 Serial.print("cond[w]:");
  8.                 Serial.println(cond[w]);                
  9.                 Serial.print("cond[q]_HEX:");
  10.                 Serial.println(cond[q],HEX);
  11.                 Serial.print("cond[w]_HEX:");
  12.                 Serial.println(cond[w],HEX);                
  13.                 Serial.print("ghj:");
  14.                 Serial.println(ghj);
  15.                 Serial.print("ghj_hex:");
  16.                 Serial.println(ghj,HEX);                
  17.                 Serial.print("q:");
  18.                 Serial.println(q);
  19.                 Serial.print("w:");
  20.                 Serial.println(w);
  21.                
  22.             q++;
  23. }
  24.                 Serial.print("cond:");
  25.                 Serial.println(cond);
  26.  
  27.             }

Az lenne a lényege hogy a cond-ban lévő számokat szeretném át tenni byte ba amivel később egy tömböt szeretnék feltölteni.
Valahogy nem jönnek ki soha a számok, már sok mindent próbáltam és olvasgattam, de semmi nem vitt előre.
Ezek jönnek vissza:
  1. val:1
  2. cond[q]:2
  3. cond[w]:8
  4. cond[q]_HEX:32
  5. cond[w]_HEX:38
  6. lofasz:48
  7. lofasz_hex:30
  8. q:0
  9. w:1
  10. cond[q]:A
  11. cond[w]:B
  12. cond[q]_HEX:41
  13. cond[w]_HEX:42
  14. lofasz:64
  15. lofasz_hex:40
  16. q:2
  17. w:3
  18. cond[q]:E
  19. cond[w]:3
  20. cond[q]_HEX:45
  21. cond[w]_HEX:33
  22. lofasz:1
  23. lofasz_hex:1
  24. q:4
  25. w:5
  26. cond[q]
  27. cond[w]:0
  28. cond[q]_HEX:44
  29. cond[w]_HEX:30
  30. lofasz:0
  31. lofasz_hex:0
  32. q:6
  33. w:7
  34. cond[q]:0
  35. cond[w]:4
  36. cond[q]_HEX:30
  37. cond[w]_HEX:34
  38. lofasz:48
  39. lofasz_hex:30
  40. q:8
  41. w:9
  42. cond[q]:0
  43. cond[w]:0
  44. cond[q]_HEX:30
  45. cond[w]_HEX:30
  46. lofasz:48
  47. lofasz_hex:30
  48. q:10
  49. w:11
  50. cond[q]:0
  51. cond[w]:0
  52. cond[q]_HEX:30
  53. cond[w]_HEX:30
  54. lofasz:48
  55. lofasz_hex:30
  56. q:12
  57. w:13
  58. cond[q]:B
  59. cond[w]:1
  60. cond[q]_HEX:42
  61. cond[w]_HEX:31
  62. lofasz:0
  63. lofasz_hex:0
  64. q:14
  65. w:15
  66. cond[q]:

Hogy tudnék a 16 számjegyű char-ból, 8 byte-ot csinálni?
Ez lenne a cél:
  1. byte dsid1[] = {0x28, 0xAB, 0xE3, 0xD0, 0x04, 0x00, 0x00, 0xB1};
A hozzászólás módosítva: Márc 11, 2016
(#) szeg76 válasza Tetye hozzászólására (») Márc 11, 2016 / 1
 
  1. char  cond[]={"28ABE3D0040000B1"};
  2. byte  dsid[8];
  3. byte  tmp;
  4. byte  i;
  5.  
  6.  
  7.   Serial.begin(9600);
  8.  
  9.   for(i=0;i<8;i++)
  10.     dsid[i]=0;
  11.  
  12.   for(i=0;i<16;i++)
  13.     {
  14.       if( cond[i]>='0' && cond[i]<='9') tmp = cond[i]-'0';
  15.       if( cond[i]>='A' && cond[i]<='F') tmp = cond[i]-'A'+ 10;
  16.      
  17. //      Serial.print(tmp, HEX);Serial.print(' ');
  18.       if(i%2)
  19.         dsid[i/2]+=tmp;  
  20.       else
  21.         dsid[i/2]+=16*tmp;
  22.     }
  23.  
  24.   Serial.println();
  25.  
  26.   for(i=0;i<8;i++)
  27.     Serial.print(dsid[i], HEX), Serial.print(' ');
(#) Tetye válasza szeg76 hozzászólására (») Márc 11, 2016 /
 
Köszi a mintát, de segítenél megérteni is?
Ennek az a lényege hogy kizárjuk a nem HEX formátumú karaktereket?
  1. if( cond[i]>='0' && cond[i]<='9') tmp = cond[i]-'0';
  2.       if( cond[i]>='A' && cond[i]<='F') tmp = cond[i]-'A'+ 10;

Ez meg arról szól hogy ha az i osztható 2 vel akkor bájt második ha nem osztható akkor az első helyi értékére kerül? A 16*tmp vel kerül oda?
  1. if(i%2)
  2.         dsid[i/2]+=tmp;
  3.       else
  4.         dsid[i/2]+=16*tmp;
  5.     }
(#) szeg76 válasza Tetye hozzászólására (») Márc 11, 2016 /
 
Szerintem már érted is.

A második részlet negyedik sorát cseréld ki sima értékadásra, és akkor nem kell használat előtt külön nullázni a dsid tömböt.

  1. dsid[i/2]=tmp*16;
(#) Tetye válasza szeg76 hozzászólására (») Márc 11, 2016 /
 
Okés, köszönöm a mintát és az infót is.
Bájtal lehet olyat csinálni hogy változó van a nevében ?
pl:
  1. byte  dsid(1)[8];
  2. byte  dsid(2)[8];
  3. byte  dsid(3)[8];


  1. for (int i= 0; i < 3; i++){
  2. dsid(i)[2] = akarmi;
  3. }
(#) szeg76 válasza Tetye hozzászólására (») Márc 11, 2016 /
 
A tömböknek lehet több dimenziója is, például:

byte dsid[3][8];
byte b[7][24][4];
(#) Tetye válasza szeg76 hozzászólására (») Márc 11, 2016 /
 
Akkor ha 10 dsid-t szeretnék megadni, akkor úgy kell hogy
byte dsid[10][8];
És ezt simán feltölthetem és olvashatom?
EEprom-ba is akár? Lehet tömböt írni?
Eddig csak így csináltam:
  1. EEPROM.write(i, byte);
  2. ........
  3.        byte = EEPROM.read(i);
(#) doni8 hozzászólása Márc 11, 2016 /
 
Üdv!
Elakadtam az EEPROM használatával, ehhez szeretnék segítséget kérni.
Hivatalos oldalon lévő példaprogramokat néztem és mindenhol a setup részben van az EEPROM művelet. Ha a loop-ba rakom az írást, akkor már a fordítás közben hibát dob. Nem értem, miért...
Röviden, fel-le számlál a programom és szeretném ha kikapcsolás után, ugyanonnan folytatná és nem elölről kezdené. Egyébként egy MIDI vezérlő lesz, ha elkészül.
(#) Tetye válasza doni8 hozzászólására (») Márc 11, 2016 /
 
Kód nélkül nehéz lesz segíteni.
Mi a hibaüzenet?
(#) doni8 válasza Tetye hozzászólására (») Márc 11, 2016 /
 
Ezt próbáltam. Így ahogy van, nyilván lefordítja, de ha az "EEPROM.put(eeAddress, f);" részt már a loop-ba teszem akkor hibát dob.
"eeAddress"-re és "f"-re "was not declared in this scope" hiba.
(#) Tetye válasza doni8 hozzászólására (») Márc 11, 2016 /
 
Ne csodálkozz ezen, hiszen a setup-ban vannak deklarálva és nem globálisan.
Tedd át a változók deklarációját a program elejébe a setup elé és menni fog.
bár én egy külön void-ba raknám nem rögtön a loop-ba.
Meg hát az eeprom írása nem végtelen.
  1. #include <EEPROM.h>
  2.  
  3.   int eeAddress;
  4.   float f ;
  5.  
  6. void setup() {
  7.   Serial.begin(9600);
  8.   while (!Serial) {
  9.   }
  10.   eeAddress = 0;   //Location we want the data to be put.
  11.   f = 0 ;
  12. }
  13.  
  14. void loop() {
  15.  
  16.  
  17.   EEPROM.write(eeAddress, f);
  18.   Serial.println("Written f:");
  19.   Serial.println(f);  
  20. delay(3000);
  21.   f++;
  22. }
A hozzászólás módosítva: Márc 11, 2016
(#) doni8 válasza Tetye hozzászólására (») Márc 11, 2016 /
 
Igen, így már működik. Mindenre gondoltam, csak erre nem. Vannak más változóim is megadva a setup-ba és az működik.. de aztán rájöttem, hogy azok egy tömb elemei, ami pedig már az elején deklarálva van, így a setup-ban csak egy értékadás történik.
Egyébként gombnyomásra fog történni az EEPROM írás, ráadásul egy időzítőn keresztül. Minden gombnyomás nullázza az időzítőm, így amikor csak "tekergetem" az eszközt akkor nem ír bele minden lépést, csak ha már megálltam valahol. Így próbálok spórolni vele.
Köszönöm a segítséget!
(#) Tetye válasza Tetye hozzászólására (») Márc 12, 2016 /
 
Rá néz nekem valaki erre? Nagyon nem kar menni a fordítás ha tömb így van megadva.
  1. for (int h = 1 ; h < 4; h++){        
  2.          
  3.           client.print("<tr><td>DS id");
  4.           client.print(h);
  5.           client.print(": <input type=\"text\" size=\"18\" maxlength=\"16\" name=\"ds");
  6.           client.print(h);          
  7.           client.print("\" value=\"");
  8.           for (int i = 0 ; i < 8; i++){
  9.             if(dsid[h,i] < 0x10){      //ez nem tetszik neki
  10.               client.print("0");  
  11.             }
  12.             client.print(dsid[h,i],HEX);    //és ez
  13.           }
  14.           client.print("\"></td></tr>");
  15.          
  16.           }
(#) icserny válasza Tetye hozzászólására (») Márc 12, 2016 / 1
 
dsid[h,i] helyett dsid[h][i] kell neki.
(#) Tetye válasza icserny hozzászólására (») Márc 12, 2016 /
 
Köszönöm, de sajnos nem jutottam messze.
Olyan dolgokat kezd csinálni amit nem értek.
Valamiért olyan változókat változtat meg amihez semmi köze nincs.
  1. byte IP1 = 192;
  2. byte IP2 = 168;
  3. byte IP3 = 1;
  4. byte IP4 = 200;
  5.  byte ip[] = {IP1,IP2,IP3,IP4};
  6. byte dsid[4][8] = {
  7.  {0x28, 0xAB, 0xE3, 0xD0, 0x04, 0x00, 0x00, 0xB1},
  8.  {0x10, 0x61, 0xef, 0x33, 0x02, 0x08, 0x01, 0x43},
  9.  {0x28, 0xAB, 0xE3, 0xD0, 0x04, 0x00, 0x02, 0xB1},
  10.  {0x10, 0x61, 0xef, 0x33, 0x02, 0x08, 0x03, 0x43}
  11. };

Ezzel kezdődik majdnem a kód.
És mióta próbálom használni ezt a tömbben tömböt, olyan dolgokat művel hogy a IP1 IP2 IP3 IP4 de ugyan így a MAC és a MASK byte ok értéke is megváltozik miközben ez lefut:

  1. if (result == "DIS"){
  2. Serial.println("found a DIS");
  3. SET = finder.getValue();
  4.               while(finder.findUntil("ds", "\n\r")){
  5.                 Serial.println("found a ds");
  6.                 int val = finder.getValue();
  7.                 Serial.print("val:");
  8.                 Serial.println(val);
  9.                 finder.getString("","&",cond,(17)); //28ABE3D0040000B1&
  10. //itt még jók az IPx értékek              
  11.  for(i=0;i<8;i++)
  12.             dsid[val][i]=0;        
  13.      for(i=0;i<16;i++)
  14.         {
  15.           if( cond[i]>='0' && cond[i]<='9') tmp = cond[i]-'0';
  16.           if( cond[i]>='A' && cond[i]<='F') tmp = cond[i]-'A'+ 10;
  17.           if(i%2)
  18.             dsid[val][i/2]+=tmp;
  19.           else
  20.             dsid[val][i/2]=16*tmp;            
  21.         }
  22.       for(i=0;i<8;i++)
  23.         Serial.print(dsid[val][i], HEX), Serial.print(' ');                
  24.             }
  25. //De itt már nem              
  26.             Serial.println();

Hogy tudja azokat a byte-okat piszkálni?
A képen meg látszik hogy hiába töltöm fel a 4 tömböm, nem azok lesznek induláskor az értékek. Ha pedig ez lefut hogy jó értékek kerüljenek be akkor meg át ír más változókat.
Kb mint ha nem férne a pohárba a víz, és kifolyik a mosogatóba...
Csak a miértjét nem értem, hisz nem írja hogy elfogyna a hely. 8-k ból 4 szabad. Volt hogy csak 3 volt szabad de akkor sem csinálta. A loopban nincs nagyon deklarálva változó kb ennyi: for (int i= 1; i < 4; i++){..}
Mega2560:
Sketch uses 28 720 bytes (11%) of program storage space. Maximum is 253 952 bytes.
Global variables use 4 031 bytes (49%) of dynamic memory, leaving 4 161 bytes for local variables. Maximum is 8 192 bytes.
Mi lehet ez ?
A hozzászólás módosítva: Márc 12, 2016

hiba.jpg
    
(#) icserny válasza Tetye hozzászólására (») Márc 12, 2016 / 1
 
Nem látom az ábrádon, hogy "val" kiíratott értéke mennyi. Erős a gyanúm, hogy egyet le kell vonni belőle, mert a tömbindexek számozása nem 1-nél, hanem 0-nál kezdődik. Valószínű emiatt csúsznak el a számok az ábrán (ID1-nek azt írja ki, ami a táblázatod szerint ID2-nek volt szánva. Beleírásnál pedig a tömbön kívüli területre is írhatsz az ilyen hibás indexelés miatt.

(Ja, amúgy gőzöm sincs, hogy mit csinálsz, csak a formai hibákat szúrom ki.)
(#) Tetye válasza icserny hozzászólására (») Márc 12, 2016 /
 
Valóban, tényleg ez szívatott meg de nagyon.
A tömbön kívüli terület volt a ludas, bele csúszott más változókba.
Köszönöm ismét!
(#) elactrofan hozzászólása Márc 13, 2016 /
 
Sziasztok!

Tudnátok segíteni? Napokban megjött az arduino lapkám, de win7 alatt nem tölti fel a progit. Kiprobáltam linux alatt ott hiba hiba nélkül feltölti és csinálja a dolgát.
Mit kéneegnézni, hogy win7 alatt is mûködjön? Usb drivert felraktam nincs ismeretlen eszköz a win szerint.
A hozzászólás módosítva: Márc 13, 2016
(#) Gabó válasza elactrofan hozzászólására (») Márc 13, 2016 /
 
Idézet:
„de win7 alatt nem tölti fel a progit.”

Ezt kifejtenéd? Jó progit szedtél le?
(#) sunside válasza elactrofan hozzászólására (») Márc 13, 2016 /
 
Az eszközkezelőben a portok között ott kell lenni egy ardu soros port bejegyzésnek, azt a COM-portot állítsd be a programban.
(#) k3gy3tl3n hozzászólása Márc 13, 2016 /
 
Sziasztok, ma próbálgattam a távirányítós hajóm és sajnos nagyobb terhelésnél újraindul az arduino, max terhelésénél 5A-t eszik a 12VDC moci és egy 7Ah ólomakkuról hajtom. Van tippetek hogy mi lehet? Meg kéne jobban kondizni az arduino-t?
(#) sunside válasza k3gy3tl3n hozzászólására (») Márc 13, 2016 / 2
 
Nagyobb puffer az ardunak és diódával elválasztva a motortól lehet egy megoldás.
(#) icserny válasza elactrofan hozzászólására (») Márc 13, 2016 /
 
1. Telepíteni kell a kártyán található USB-UART átalakító lapkához való eszközmeghajtó szoftvert (FTDI 232 vagy CH340).
2. Utána az Arduino IDE-ben ki kell választani a kártya típusát és a soros port számát Tools menu Board és Serial port menüpontok).
(#) Kera_Will válasza icserny hozzászólására (») Márc 13, 2016 /
 
Ezt a pár "alap tézist" be kellene a íratni téma fejlécébe ... mint ahogy a PIC / AVR témákban is benne van ...
(#) Gabó válasza Kera_Will hozzászólására (») Márc 13, 2016 /
 
Én már jeleztem 1-2x a modiknak ezt a megoldást.
(#) elactrofan válasza sunside hozzászólására (») Márc 13, 2016 /
 
Köszönöm, mûködik
Következő: »»   202 / 853
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