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   661 / 845
(#) vyky válasza proba hozzászólására (») Nov 6, 2020 /
 
Most teszteléskor Egy tápot használok,De ha csak a bemenet van negativon,és csak a VCC van bekötve akkor a csak a led világit.
(#) proba válasza vyky hozzászólására (») Nov 6, 2020 / 1
 
Idézet:
„Ha a GND és a RY-VC van bekötve Akkor led nem világit,de a relé behúz.”


Ettől kezdve a modul hibás. Már csak az ok a kérdéses. Ha az arduinó tápról nem húzott, utána a külső tápról húz, akkor két ok lehet, vagy az arduinó táp nem bírta meghúzatni a reléket ( elég esélyes az a kérdés is) és hibás volt a modulod, vagy valamivel tönkretetted ( bár ebben a formában azért elég nehéznek gondolom ) a külső táp ráadásakor. Mindkét esetben új modul, vagy javítás, csak a továbbiak szempontjából nem mindegy a kérdés. Amire esetleg még kíváncsi vagyok, bár nem sok mindent befolyásol, az optok elmenő oldali két lába között hány ohmot mérsz? illetve RY_VCC - GND kapcsok között hány ohm van.
A hozzászólás módosítva: Nov 6, 2020
(#) vyky válasza proba hozzászólására (») Nov 6, 2020 /
 
Az egyiknél 36k a másik 20k ohm .
(#) usane válasza vyky hozzászólására (») Nov 7, 2020 / 1
 
Hát akkor ez rossz. Ahogy proba mondta már csak az a kérdés miért. Ha fordított tápot adtál neki akkor a tranzisztorok esélyesen attól haltak meg, mert gyanítom, hogy azok a rosszak nem az optok, ha az optok lábai között 20k-30k ellenállást mérsz. Ugyanakkor a GND és JD-VVC között mértről még nem nyilatkoztál. Ha tudsz SMD-t forrasztani akkor cseréld ki őket. A neten többféle variávió létezik. S8050-től kezdve BC847-ig. A relé 70-75 mA-t vesz fel 5V-on. A BC847-nek 100mA a maximum kollektor árama, az S8050-nek 500mA, BC817 is 500mA-es. Ennél fogva a két utolsó jobb választás. Viszont szinte a legtöbb NPN tranzisztor jó aminek a paraméterei és lábkiosztása megfelel.
A hozzászólás módosítva: Nov 7, 2020
(#) vyky válasza usane hozzászólására (») Nov 7, 2020 /
 
Akkor marad a forrasztási próba Köszönöm nektek a segítséget.
(#) tomat5 válasza zoz11 hozzászólására (») Nov 7, 2020 /
 
Szia,
Megnéztem az adatlapot nem teljesen egyértelmű számomra, hogy pontosan hogy lehet modbus -on paraméterezni az eszközödet.

- A 8. "Table of parameters" fejezetben van egy modbus oszlop. Ha jól értem, akkor ez adja meg az adott paraméter címét, kissé szokatlan módon. 0 - 216 -ig vannak címek.
- Vannak csak írható "R" és írható/olvasható "R/W" regiszeterek. Ez rendben van, a modbus -nál az előbbi az input regiszternek felel meg, az utóbbi a holding regiszternek. Más eszközökben ez két teljesen különálló címtartományban szokott lenni, de ha jól tudom a címzésre csak ajánlás van a szabványban, egyébként pedig gyártóspecifikus, hogy mi hol érhető el.

Elsőre ezt próbálnám meg:
- Valahol láttam a doksiban a default modbus soros porti beállításokat, ezt kell beállítani a PC-n vagy az arduinon a soros portra. ( baud, parity, stop bit)
- 04 -es (ha nem megy akkor 03) funkciókóddal megpróbálnék kiolvasni egy értéket. Az ITT található leírásból látod hogy kell összeállítani a keretet.
- PL a 0. címről 1 db regiszeter kiolvasása valahogy így nézne ki:
[RTU]>Tx > 17:06:01:856 - 01 04 00 00 00 01 31 CA
1. byte a slave címe itt: 0x01, nálad a leírásban megadott gyári érték
2. byte funkciókód itt 0x04
3.4. byte regiszter cím itt: 0x0000
5.6. byte hány db regisztertakarubónk kiolvasni itt: 0x0001
7.8. byte CRC. Erre van példakód a szabványban vagy más egyéb helyen a neten, talán a feljebb linkelt oldalon is. Ha a Qmodmaster programmal próbálkozol, az kiszámolja neked.
- Amit nem látok, hogy milyen adattípust ad vissza az eszköz. A paraméterek min. és max értékeiből én 16 bites előjeles integer -re tipplelek. Ha lesz sikeres lekérdezés abból kiderül.
- Ha a lekérdezés megy, akkor az írás is rendben lesz. 06 -os funkciókóddal tudod írni a megfelelő regisztert, a linkben van erre is példa.
Üdv.
(#) tomat5 válasza tomat5 hozzászólására (») Nov 7, 2020 /
 
Most látom esetleg megtévesztő lehet:
01 04 00 00 00 01 31 CA
Csak ennyi a keret, ami előtte van a PC SW log timestamp. Természetesen nem kell kiírni a portra.
(#) Balagemann2031 hozzászólása Nov 10, 2020 /
 
Sziasztok! Szeretném telepíteni a gépemre a CH340-es drivert de driver telepítési hibával feljön egy ablak. Több forrásból próbáltam mindenféle drivert, de mindegyiknek a telepítése végén hibát ír. Valaki tudna erre megoldást? Köszi előre is!
(#) usane válasza Balagemann2031 hozzászólására (») Nov 10, 2020 /
 
A lap tetején sárga csíkban levő driver sem jó? Milyen oprendszer?
(#) Balagemann2031 válasza usane hozzászólására (») Nov 10, 2020 /
 
Szia! Win 10 Pro, régebben már használtam, régóta arduinózok. Tudom hogy a klónok ezzel mennek főleg. A csíkban lévő driverrel kezdtem, de a telepítés végén Driver installation failure-t ír. Ki van kapcsolva a vírusírtó.
(#) Balagemann2031 válasza Balagemann2031 hozzászólására (») Nov 10, 2020 /
 
Megoldottam, Először uninstallra mentem rá utánna az installra és így már megy.
(#) usane hozzászólása Nov 10, 2020 /
 
Egy programozástechnikai kérdés.
Egy kétdimenziós tömb teljes sorának értékadását meg tudom oldani a sor elemeinek egyenkénti megadása nélkül?
A hozzászólás módosítva: Nov 10, 2020
(#) superuser válasza usane hozzászólására (») Nov 10, 2020 /
 
C-ben memcpy.
(#) kissi válasza usane hozzászólására (») Nov 10, 2020 /
 
Szia!

Milyen adatok vannak a sorban ?
(#) usane válasza superuser hozzászólására (») Nov 10, 2020 /
 
Valóban, ezt használom is.

Kissi: Byte-ok.
A hozzászólás módosítva: Nov 10, 2020
(#) kissi válasza usane hozzászólására (») Nov 10, 2020 /
 
Idézet:
„Byte-ok.”
Az jó !

Azért kérdeztem, hogy hátha karakterek és akkor lehetett volna idézőjelek között...

A memcpy az egy memóriaterületet másol, ha jól tudom, akkor meg azt kell előtte feltölteni...
Nem értem a feladatodat valószínűleg !
(#) usane válasza kissi hozzászólására (») Nov 11, 2020 /
 
Igen, de ahol a memcpy-t használom ott már megvan egy másik tárolóban az adat. Hogy miért is kérdeztem az értékadást azt közben elfelejtettem
(#) kissi válasza usane hozzászólására (») Nov 11, 2020 /
 
Idézet:
„Igen, de ahol a memcpy-t használom ott már megvan egy másik tárolóban az adat”


Ezt nem láttam az "üveggömbben" !
(#) sargarigo válasza usane hozzászólására (») Nov 11, 2020 /
 
Idézet:
„Hogy miért is kérdeztem az értékadást azt közben elfelejtettem”

Van baj!
(#) usane válasza sargarigo hozzászólására (») Nov 12, 2020 /
 
Jól van na. Párhuzamosan tolom az ESP szoftverrel az android appot is. Már lassan tömbbökkel meg változókkal álmodok.
(#) Egri Frédi válasza usane hozzászólására (») Nov 12, 2020 /
 
Én az asszonnyal szoktam ...
(#) sargarigo válasza Egri Frédi hozzászólására (») Nov 12, 2020 /
 
Én meg nem álmomban
(#) Egri Frédi válasza sargarigo hozzászólására (») Nov 12, 2020 /
 
Vigyázz, mit írsz mert ide is jön a modi ... Semmi malackodás !
(#) sargarigo válasza Egri Frédi hozzászólására (») Nov 12, 2020 /
 
..semmi, semmi..
(#) sany hozzászólása Nov 12, 2020 /
 
Sziasztok!
A napokban kezdtem megismerkedni a MAX7912 IC-vel meghajtott 8x8-as LED mátrix kijelzővel, illetve ennek a 4 digites modul változatával kezdtek megismerkedni. Egyszerűbb animációkat, betűket már tudok készíteni. Azonban számokat, szám változókat nem sikerül pl. egy adatsorból kiíratni. Tudom a Google a barátom, de őszintén amit talál egy kicsit tömör számomra, ezért szeretnék én írni egy kódot, így talán jobban meg tudnám érteni. Ebben kérném a segítségeteket.
Arra gondoltam, hogy készítek egy számlálót, ami 0-9999 számol és ezt megjeleníti a kijelző modulon is. Már elkezdtem írni egy kódot, amit kigondoltam:

  1. #include "LedControlMS.h"
  2. LedControl lc=LedControl(11,13,10,4);
  3. void setup() {
  4.   lc.shutdown(0,false);
  5.   lc.shutdown(1,false);
  6.   lc.shutdown(2,false);
  7.   lc.shutdown(3,false);
  8.   lc.setIntensity(0,5);  
  9.   lc.setIntensity(1,5);
  10.   lc.setIntensity(2,5);
  11.   lc.setIntensity(3,5);
  12.   lc.clearDisplay(0);  
  13.   lc.clearDisplay(1);
  14.   lc.clearDisplay(2);
  15.   lc.clearDisplay(3);
  16.  
  17. }
  18. //karakterek kirajzolása
  19. byte nullak[] = {0x00,0x38,0x44,0x4c,0x54,0x64,0x44,0x38}; // 0
  20. byte egyk[] =   {0x04,0x0c,0x14,0x24,0x04,0x04,0x04,0x04}; // 1
  21. byte kettok[]=  {0x00,0x30,0x48,0x04,0x04,0x38,0x40,0x7c}; // 2
  22. byte haromk[]=  {0x00,0x38,0x04,0x04,0x18,0x04,0x44,0x38}; // 3
  23. byte negyk[]=   {0x00,0x04,0x0c,0x14,0x24,0x7e,0x04,0x04}; // 4
  24. byte otk[]=     {0x00,0x7c,0x40,0x40,0x78,0x04,0x04,0x38}; // 5
  25. byte hatk[]=    {0x00,0x38,0x40,0x40,0x78,0x44,0x44,0x38}; // 6
  26. byte hetk[]=    {0x00,0x7c,0x04,0x04,0x08,0x08,0x10,0x10}; // 7
  27. byte nyolck[]=  {0x00,0x3c,0x44,0x44,0x38,0x44,0x44,0x78}; // 8
  28. byte kilenck[]= {0x00,0x38,0x44,0x44,0x3c,0x04,0x04,0x78}; // 9    
  29. void kezdo_ertek()
  30. {
  31.   for (int i = 0; i < 8; i++)  
  32.   {
  33.     nulla();
  34.     nulla1();
  35.     nulla2();
  36.     nulla3();
  37.   }
  38. }
  39. void nulla()  { for (int i = 0; i < 8; i++) { lc.setRow(0,i,nullak[i]);}}
  40. void nulla1() { for (int i = 0; i < 8; i++) { lc.setRow(1,i,nullak[i]);}}
  41. void nulla2() { for (int i = 0; i < 8; i++) { lc.setRow(2,i,nullak[i]);}}
  42. void nulla3() { for (int i = 0; i < 8; i++) { lc.setRow(3,i,nullak[i]);}}
  43. //egyes helyérték
  44. void egy()     { for (int i = 0; i < 8; i++) { lc.setRow(0,i,egyk[i]);}}
  45. void ketto()   { for (int i = 0; i < 8; i++) { lc.setRow(0,i,kettok[i]);}}
  46. void harom()   { for (int i = 0; i < 8; i++) { lc.setRow(0,i,haromk[i]);}}
  47. void negy()    { for (int i = 0; i < 8; i++) { lc.setRow(0,i,negyk[i]);}}
  48. void ot()      { for (int i = 0; i < 8; i++) { lc.setRow(0,i,otk[i]);}}
  49. void hat()     { for (int i = 0; i < 8; i++) { lc.setRow(0,i,hatk[i]);}}
  50. void het()     { for (int i = 0; i < 8; i++) { lc.setRow(0,i,hetk[i]);}}
  51. void nyolc()   { for (int i = 0; i < 8; i++) { lc.setRow(0,i,nyolck[i]);}}
  52. void kilenc () { for (int i = 0; i < 8; i++) { lc.setRow(0,i,kilenck[i]);}}
  53. //tizes helyérték
  54. void egy2()     { for (int i = 0; i < 8; i++) { lc.setRow(1,i,egyk[i]);}}
  55. void ketto2()   { for (int i = 0; i < 8; i++) { lc.setRow(1,i,kettok[i]);}}
  56. void harom2()   { for (int i = 0; i < 8; i++) { lc.setRow(1,i,haromk[i]);}}
  57. void negy2()    { for (int i = 0; i < 8; i++) { lc.setRow(1,i,negyk[i]);}}
  58. void ot2()      { for (int i = 0; i < 8; i++) { lc.setRow(1,i,otk[i]);}}
  59. void hat2()     { for (int i = 0; i < 8; i++) { lc.setRow(1,i,hatk[i]);}}
  60. void het2()     { for (int i = 0; i < 8; i++) { lc.setRow(1,i,hetk[i]);}}
  61. void nyolc2()   { for (int i = 0; i < 8; i++) { lc.setRow(1,i,nyolck[i]);}}
  62. void kilenc2 () { for (int i = 0; i < 8; i++) { lc.setRow(1,i,kilenck[i]);}}
  63. //ezres helyertek
  64. void egy3()     { for (int i = 0; i < 8; i++) { lc.setRow(2,i,egyk[i]);}}
  65. void ketto3()   { for (int i = 0; i < 8; i++) { lc.setRow(2,i,kettok[i]);}}
  66. void harom3()   { for (int i = 0; i < 8; i++) { lc.setRow(2,i,haromk[i]);}}
  67. void negy3()    { for (int i = 0; i < 8; i++) { lc.setRow(2,i,negyk[i]);}}
  68. void ot3()      { for (int i = 0; i < 8; i++) { lc.setRow(2,i,otk[i]);}}
  69. void hat3()     { for (int i = 0; i < 8; i++) { lc.setRow(2,i,hatk[i]);}}
  70. void het3()     { for (int i = 0; i < 8; i++) { lc.setRow(2,i,hetk[i]);}}
  71. void nyolc3()   { for (int i = 0; i < 8; i++) { lc.setRow(2,i,nyolck[i]);}}
  72. void kilenc3 () { for (int i = 0; i < 8; i++) { lc.setRow(2,i,kilenck[i]);}}
  73. //negyes helyertek
  74. void egy4()     { for (int i = 0; i < 8; i++) { lc.setRow(3,i,egyk[i]);}}
  75. void ketto4()   { for (int i = 0; i < 8; i++) { lc.setRow(3,i,kettok[i]);}}
  76. void harom4()   { for (int i = 0; i < 8; i++) { lc.setRow(3,i,haromk[i]);}}
  77. void negy4()    { for (int i = 0; i < 8; i++) { lc.setRow(3,i,negyk[i]);}}
  78. void ot4()      { for (int i = 0; i < 8; i++) { lc.setRow(3,i,otk[i]);}}
  79. void hat4()     { for (int i = 0; i < 8; i++) { lc.setRow(3,i,hatk[i]);}}
  80. void het4()     { for (int i = 0; i < 8; i++) { lc.setRow(3,i,hetk[i]);}}
  81. void nyolc4()   { for (int i = 0; i < 8; i++) { lc.setRow(3,i,nyolck[i]);}}
  82. void kilenc4()  { for (int i = 0; i < 8; i++) { lc.setRow(3,i,kilenck[i]);}}
  83. int adatok()
  84. {
  85.   int adat=0;
  86.   for(int i = 0; i <10 ; i++)
  87.   {  
  88.      adat=adat+1;
  89.      delay(1000);
  90.   }
  91.   return adat;
  92. }
  93. void kiir_egyes_helyiertek()
  94. {
  95.   if( adatok==0)
  96.   {
  97.    kezdo_ertek();
  98.   }
  99.   if (adatok()==1)
  100.   {
  101.     lc.clearDisplay(0);
  102.     egy();
  103.   }
  104.   if (adatok()==2)
  105.   {
  106.     lc.clearDisplay(0);
  107.     ketto();
  108.   }
  109.   if (adatok()==3)
  110.   {
  111.     lc.clearDisplay(0);
  112.     harom();
  113.   }
  114.   if (adatok()==4)
  115.   {
  116.     lc.clearDisplay(0);
  117.     negy();
  118.   }
  119.  if (adatok()==5)
  120.   {
  121.     lc.clearDisplay(0);
  122.     ot();
  123.   }
  124.  if (adatok()==6)
  125.   {
  126.     lc.clearDisplay(0);
  127.     hat();
  128.   }
  129.   if (adatok()==7)
  130.   {
  131.     lc.clearDisplay(0);
  132.     het();
  133.   }
  134.   if (adatok()==8)
  135.   {
  136.     lc.clearDisplay(0);
  137.     nyolc();
  138.   }
  139.   if (adatok()==9)
  140.   {
  141.     lc.clearDisplay(0);
  142.     kilenc();
  143.   }  
  144. }
  145. void loop() {
  146. kiir_egyes_helyertek();
  147. delay(1000);
  148. lc.clearDisplay(0);
  149. }


Először sikerélménynek az egyes helyértéken szereplő számokat szeretném kiíratni, illetve számoltatni. Ehhez létrehoztam az egyes karaktereket és ezeknek a kijelzőre való kiírását. (megcsináltam a további helyértékek számait is a megadott forráskódban). Arra gondoltam, hogy összehasonlítom az aktuális adat értékét és ha az megegyezik a karakter számértékével, akkor azt megjelenítem kijelzőn. Jelenleg a forráskód hiba nélkül lefut, azonban nem akar számolni,csak 0000-át mutat a kijelző. Hogyan tovább?
Köszönöm a segítségeteket!
(#) kapu48 válasza sany hozzászólására (») Nov 13, 2020 /
 
Hogy hozzá tudjunk szólni a témádhoz, ismernünk kellene a "LedControlMS.h" beszerzési helyét?
(#) kapu48 válasza sany hozzászólására (») Nov 13, 2020 /
 
Ha pl. beraknád a setupba a: Serial.begin(115200); tudnál hibát keresni!
És ezt a rutinodat kiegészítenéd így:
  1. int adatok()
  2. {
  3.   int adat=0;
  4.   for(int i = 0; i <10 ; i++)
  5.   {
  6.      adat=adat+1;
  7.      delay(1000);
  8.   }
  9.   Serial.println(adat);  //<<< debug
  10.   return adat;
  11. }

Láthatnád, hogy mindig 10-et ad vissza. Ezért a hosszú várakozáson kívül, más feladatot nem lát el.
A hozzászólás módosítva: Nov 13, 2020
(#) usane válasza sany hozzászólására (») Nov 13, 2020 /
 
Ahogy kapu48 írta ez a függvény így nem jó. Úgy kezeled mintha hardveres timer lenne ami minden értknövelésnél ad egy megszakítást és növeli az adatot, pedig ez egy szubrutin a mmi meghíváskor végig lefut és a végén kiadja az értéket ami a for ciklus végén 10.
Próbáld így:
az adat változót tedd globálissá;
az adatok függvényt pedig pl így:
  1. int adatok()
  2. {
  3.   if(adat == 9)
  4.   {
  5.     adat = 0;
  6.   }
  7.   else
  8.   {
  9.     adat++;
  10.   }
  11.   return adat;
  12. }

A delay ide nem kell mert a loop-ban már van egy.
A hozzászólás módosítva: Nov 13, 2020
(#) sany válasza usane hozzászólására (») Nov 13, 2020 /
 
Köszönöm. Ìgy nem is kell for ciklus.
(#) usane hozzászólása Nov 13, 2020 /
 
Nem tud valaki egy online REST szervert ami mutatja mit küldtem neki? Az ESP32 webserverem POST requestre azt írja üres. A GET megy frankón. Most nem tudom, hogy az Android szoftver a hibás, vagy az ESP webserverrel van a gond. Korábban az ESP8266-al ment simán, de az ESP32-n nem megy. Szóval valami olyan szerver kellene ami nem csak válaszol hanem mutatja is, hogy mi van az üzenetben.
Hogy elég világos legyen, nem a weboldalon akarom megírni a requestet, mert olyat találtam , hanem egy Android appal akarom elküldeni a kérést és azt szeretném megnézni, hogy mit küldött a szervernek.
A hozzászólás módosítva: Nov 13, 2020
Következő: »»   661 / 845
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