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   43 / 850
(#) szikorapéter válasza TavIR-AVR hozzászólására (») Aug 16, 2014 /
 
Megvan hozzá a 328P-PU chip is,meikkel könyebb. Én személy szerint abban a hitben éltem hogy a 88-as többet tud,ezértis lehetne felhasználni erre a célra.
(#) erdeidominik1999 hozzászólása Aug 16, 2014 /
 
Sziasztok Arduino megát, ha 12 volttal hajtok meg nem lesz baja? Vagy arra gondoltam, az nem működne, hogy sorba kötök egy ledet vele?
(#) szikorapéter válasza erdeidominik1999 hozzászólására (») Aug 16, 2014 /
 
Használj 5V-os stabilizátort,nagy valószínűséggel ha 12V-ról próbálnád meg műköttetni tönketennéd a vezérlőt.
(#) erdeidominik1999 válasza szikorapéter hozzászólására (») Aug 16, 2014 /
 
De én a 9v-os bemeneten gondoltam.
(#) szikorapéter válasza erdeidominik1999 hozzászólására (») Aug 16, 2014 /
 
Ha magán a panelen érted úgy jó,nekemis 9V-ról jár 2db 4,5V-os laposelemről. szerintem a 12V nem tesz benne kárt,de inkább nézz utánna. szerintem stabilizálja magának a feszültséget a panel.
(#) erdeidominik1999 válasza szikorapéter hozzászólására (») Aug 16, 2014 /
 
Ok. Köszia a választ.
(#) Kovidivi hozzászólása Aug 16, 2014 /
 
Sziasztok!
6db sorosan kapcsolt lithium ion cella feszültségét mérem merítés közben, 0.5-1A-res áram mellett. Ha valamelyik cella 3V alá merül, az Arduino csipog, azt a cellát kikötöm a sorból, az ellenállás osztóval együtt, így az Arduino 0V-nak méri azt a bemenetet. Ezután kivonom a legfelső bemeneten mért feszültségből az előtte levő bemenetet, ami nem 0V-os, és így tovább. Soros monitoron visszaírom a feszültségeket. A define résznél szinte minden személyre szabható, 6 cellával próbáltam, de kevesebbel sem lehet túl nagy gond, még nem teszteltem.
Akit érdekel, tanulmányozza, kezdőknek sok érdekesség lehet benne. Esetleg ha valamelyik függvényre, vagy akár az egész működésre nézve ötletetek támadna, szívesen meghallgatom.
A program kipróbálva, jól működik Arduino Uno-val.
Referencia az 5V, A0-A5-re kötött feszültségeket méri. Sima 5V-os csipogó a define-ban megjelölt lábon (azért pont ott, mert mellett 3. láb GND, így az Arduinoba simán be lehet szúrni a csipogót.
Köszi!
  1. // kovidivi 2014.08.16
  2. #define csipogo 11  //11-es lábon
  3. #define idotartam 2 //másodpercben
  4. #define R1 46.3   // fesz osztó felső tagja Kohmban
  5. #define R2 9.9 // fesz osztó alsó tagja Kohm-ban
  6. #define cellaszam 6 // A0-A5
  7. #define lekapcs 3.0 //lekapcsolási feszültség V-ban
  8. #define reffesz 4.96 //USB 5V-ja
  9. //R1 46.3 R2 9.9 reffesz 5V -> 28,384V-ig tudok mérni!
  10. //felbontás: 0,027746V 27,75mV <- bőven oké! 2 tizedesjegy kijelzés!
  11.  
  12. //változók deklarálása:
  13. int i,k;
  14. double cellafeszmost[cellaszam];
  15. double cellasensor[cellaszam];
  16. double elozoido=0;
  17. //typedef uint8_t
  18. typedef unsigned char uint8_t;
  19. uint8_t analogbemenetek[]={A0,A1,A2,A3,A4,A5};
  20.  
  21.  
  22. void setup()
  23. {
  24.   Serial.begin(9600);
  25.   Serial.println("Ido(ms)\tperc\tA0\tA1\tA2\tA3\tA4\tA5\t");
  26.   pinMode(csipogo, OUTPUT);
  27. }
  28.  
  29.  
  30. void loop()
  31. {
  32.   while(1)
  33.   {
  34.    feszbeolvasas();  //analóg lábak beolvasása
  35.    konvert();  //átkonvertálás V-ba
  36.    kivonas();  //sorba kötött cellákat mérek, ezért ki kell vonni a legfelső cellán mért feszültségből az alatta levőt.
  37.    kiirsoros();  //soros kommunikáció
  38.    vedelem();  //csipog, ha egy cellafesz kisebb, mint 3.2V, viszont nagyobb, mint 2V (nem 0V).
  39.    idozit();  // a pontos időzítésért felel
  40.   }
  41. }
  42.  
  43. /****************OK*/
  44. void idozit()
  45. {
  46.    while(millis()<((elozoido+idotartam)*1000))  { }
  47.    elozoido=elozoido+idotartam;
  48. }
  49. /****************OK*/
  50. void csipog(){
  51.   for (long i=0;i<2;i++)
  52.   {
  53.         digitalWrite(csipogo,HIGH);
  54.         delay(50);
  55.         digitalWrite(csipogo,LOW);
  56.         delay(50);
  57.   }
  58. }
  59. /****************OK*/
  60. void konvert()
  61. {
  62.   for (i=0;i<cellaszam;i++)
  63.   {
  64.   cellafeszmost[i] = (cellasensor[i]  * reffesz * (R2+R1))/(1023.0*R2);
  65.   }
  66. }
  67. /****************OK*/
  68. void kiirsoros()
  69. {
  70.   Serial.println();
  71.   Serial.print(millis());
  72.   Serial.print("\t");
  73.   Serial.print(millis()/60000);
  74.   Serial.print("\t");
  75.   k=0;
  76.   for (i=0;i<cellaszam;i++)        //cella feszültsége
  77.   {
  78.     Serial.print(cellafeszmost[i]);
  79.     Serial.print("\t");
  80.   }
  81.   Serial.print("\t");
  82. }
  83. /****************OK*/
  84. void kivonas()
  85. {
  86.    k=i=cellaszam-1;
  87.    while(1)  //összes cella feszültsége kivonva egymásból, fentről lefelé
  88.   {
  89.     if (i>=k) {k=i;k--;}
  90.     if (cellafeszmost[i]<1)     //le van csatolva, nincs sorosan kötve
  91.       {                         //átugorni!
  92.         i--;
  93.       }
  94.     while (1)
  95.     {
  96.       if (cellafeszmost[i]-cellafeszmost[k]>4.3) k--;  //megkeresi a következő cellát, ami nem 0V
  97.                                       else break;
  98.     }
  99.     cellafeszmost[i]=cellafeszmost[i]-cellafeszmost[k];
  100.     i=k;
  101.    if (i==0) break;            //végeztünk, ha elértük a 0. elemet.
  102.    if ((i<0)||(k<0)) break;    //néha i és k minusz is tud lenni, ha overflow valamelyik feszültség.
  103.   }
  104. }
  105. /****************OK*/
  106. void feszbeolvasas()
  107. {
  108. for (i=0;i<cellaszam;i++)
  109.   {
  110.     cellasensor[i]=analogRead(analogbemenetek[i]);
  111.   }
  112. }
  113. /****************OK*/
  114. void vedelem()
  115. {
  116.   for (i=0;i<cellaszam;i++)
  117.     {
  118.       if ((cellafeszmost[i]<3.2)&&(cellafeszmost[i]>2.5)) csipog();
  119.     }
  120. }
  121. /******************/
A hozzászólás módosítva: Aug 16, 2014
(#) szikorapéter hozzászólása Aug 16, 2014 /
 
Üdv ismét. Ennek a kódja és kapcsolása megfelelne az én segédmotoromhoz?
(#) enree hozzászólása Aug 16, 2014 /
 
Sziasztok!
Van olyan köztetek, akinek van Arduinohoz USB Shield és valamilyen újabb generációs Canon DSLR fényképezőgépe /na meg öt szabad perce, hogy kipróbáljon nekem valamit/. Előre is köszönöm.
(#) erdeidominik1999 válasza szikorapéter hozzászólására (») Aug 16, 2014 /
 
És még arra gondoltam, hogy ha esetleg beteszek egy 9v-os stabilizátort, az nem jobb? De nem értek a stabilizátorokhoz, hogy milyen típusú kéne.
(#) mikrokapcsolo válasza erdeidominik1999 hozzászólására (») Aug 16, 2014 /
 
Ha rátekintesz az adatlapjára, Bővebben: Link, akkor látod, hogy a külön tápcsatin 7-12V az ajánlott, és 20V a maximum. Ha stabilizátort használsz, egy 7809 pl, akkor az a bemeneti feszültségtől és az átfolyó áramtól függően melegedni fog.
(#) TavIR-AVR válasza mikrokapcsolo hozzászólására (») Aug 16, 2014 /
 
A hutoterulettol es a terhelestol fugg.
7.5...12V az ajanlott, 35V a max. De a hutes miatt 15V felett ne legyel, 200mA terheles eseten.
(#) szikorapéter válasza szikorapéter hozzászólására (») Aug 16, 2014 /
 
Ennek a programnak a leírás szerint tudnia kéne a Km-t is számolni. Na ha ezt a programot felnyomom a 328p-pu chipbe. Ott kezdődik a probléma hogy itt a kijelző I2C buszon kommunikál,viszont nekem csak 2x16 karakteres kijelzőm van. Ezt hogyan tudnám megváltoztatni a programban? Valaki jártasabb segítségét kérném mivel én még tanulom az Arduino-t,de szeretném elkészíteni ezt a kilométerórát.
  1. // Matthew McMillan
  2. // @matthewmcmillan
  3. //
  4. // Digital speedometer
  5. //
  6. // VSS on car connects to pin 5
  7. // CLK on display to Analog pin 5
  8. // DAT on display to Analog pin 4
  9. //
  10. // Requires two Adafruit libraries:
  11. // Adafruit_GFX
  12. // Adafruit_LEDBackpack
  13.  
  14. #include "Adafruit_GFX.h" // Adafruit Core graphics library
  15. #include "Adafruit_LEDBackpack.h" // Seven Segment display library
  16. #include <SPI.h>
  17. #include <Wire.h>
  18.  
  19. void setBrightness(uint8_t b, byte segment_address) {
  20. if (b > 15) b = 15; //Max brightness on this display is 15.
  21. if (b < 1) b = 1; // Brightness of 0 is too dim so make 1 the min.
  22. Wire.beginTransmission(segment_address);
  23. Wire.write(0xE0 | b); // write the brightness value to the hex address.
  24. Wire.endTransmission();
  25. }
  26.  
  27. const int lightPin = 0;
  28. const int hardwareCounterPin = 5;
  29. const int samplePeriod = 1000; //in milliseconds
  30. const float pulsesPerMile = 4000; // this is pulses per mile for Toyota. Other cars are different.
  31. const float convertMph = pulsesPerMile/3600;
  32. unsigned int count;
  33. float mph;
  34. unsigned int imph;
  35. int roundedMph;
  36. int previousMph;
  37. int prevCount;
  38.  
  39. const int numReadings = 30; // the number of readings for average brightness
  40. int readings[numReadings]; // the readings array for the analog input
  41. int index = 0; // the index of the current reading
  42. int total = 0; // the running total
  43. int average = 3;
  44.  
  45. Adafruit_7segment matrix = Adafruit_7segment();
  46. byte segment_address = 0x70; //This is hex address of the 7 segment display
  47. boolean drawDots = true;
  48.  
  49. void setup(void) {
  50. Serial.begin(9600);
  51. // initialize all the brightness readings to 3:
  52. for (int thisReading = 0; thisReading < numReadings; thisReading++)
  53. readings[thisReading] = 3;
  54. // Start up the 7 segment display and set initial vaules
  55. matrix.begin(segment_address);
  56. setBrightness(3, segment_address);
  57. matrix.println(0);
  58. matrix.writeDisplay();
  59.  
  60. TCCR1A = 0; //Configure hardware counter
  61. TCNT1 = 0; // Reset hardware counter to zero
  62. }
  63.  
  64. void loop() {
  65. /////////////////////////////////////////////////////////////
  66. // Set the LCD brightness using a running average of
  67. // values to help smooth out changes in brightness.
  68. //
  69. // read from the sensor:
  70. int reading = analogRead(lightPin);
  71. int brightness = (reading / 2) / 15;
  72. if(brightness > 15){
  73. brightness = 15;
  74. }
  75. if(brightness < 1){
  76. brightness = 1;
  77. }
  78.  
  79. readings[index] = brightness;
  80. // add the reading to the total:
  81. total = total + readings[index];
  82. // advance to the next position in the array:
  83. index = index + 1;
  84. // if we're at the end of the array...
  85. if (index >= numReadings)
  86. // ...wrap around to the beginning:
  87. index = 0;
  88. // calculate the average:
  89. total = 0;
  90. for (int thisReading = 0; thisReading < numReadings; thisReading++){
  91. total = total + readings[thisReading];
  92. }
  93. average = total / numReadings;
  94. setBrightness(average, segment_address); //Set the brightness using the average
  95. /////////////////////////////////////////////////////////////
  96. // This uses the hardware pulse counter on the Arduino.
  97. // Currently it collects samples for one second.
  98. //
  99. bitSet(TCCR1B, CS12); // start counting pulses
  100. bitSet(TCCR1B, CS11); // Clock on rising edge
  101. delay(samplePeriod); // Allow pulse counter to collect for samplePeriod
  102. TCCR1B = 0; // stop counting
  103. count = TCNT1; // Store the hardware counter in a variable
  104. TCNT1 = 0; // Reset hardware counter to zero
  105. mph = (count/convertMph)*10; // Convert pulse count into mph.
  106. imph = (unsigned int) mph; // Cast to integer. 10x allows retaining 10th of mph resolution.
  107.  
  108. int x = imph / 10;
  109. int y = imph % 10;
  110. // Round to whole mile per hour
  111. if(y >= 5){
  112. roundedMph = x + 1;
  113. }else{
  114. roundedMph = x;
  115. }
  116. //If mph is less than 1mph just show 0mph.
  117. //Readings of 0.9mph or lower are some what erratic and can
  118. //occasionally be triggered by electrical noise.
  119. if(x == 0){
  120. roundedMph = 0;
  121. }
  122. // Don't display mph readings that are more than 50 mph higher than the
  123. // previous reading because it is probably a spurious reading.
  124. // Accelerating 50mph in one second is rocketship fast so it is probably
  125. // not real.
  126. if((roundedMph - previousMph) > 50){
  127. matrix.println(previousMph);
  128. }else{
  129. matrix.println(roundedMph);
  130. }
  131. matrix.writeDisplay(); // Write the value to the 7 segment display.
  132. previousMph = roundedMph; // Set previousMph for use in next loop.
  133. }


Ha miden igaz a beütések száma alapján mondja meg hogy mennyivel fut a motor. A beütéseket előállító kügyüt el tudom készíteni,csak majd még meg kell néznem hogy mennyi beütés nálam 1Km.
(#) reloop válasza szikorapéter hozzászólására (») Aug 16, 2014 /
 
Szia! Ezt rendbe hoztam, most már jól működik.

LCD I2C.JPG
    
(#) szikorapéter válasza reloop hozzászólására (») Aug 16, 2014 /
 
PCF8574-es chipet kell beleültetni és jó is lessz? Ha igen akkor megrendelem a hozzá való chipet és elkezdem készíteni a kütyüt.
(#) icserny válasza szikorapéter hozzászólására (») Aug 16, 2014 /
 
Nem lesz jó, mert a te programod, amit lentebb belinkeltél más IC-t és más kijelzőt (7 szegmens) használ.
(#) erdeidominik1999 hozzászólása Aug 16, 2014 /
 
Sziasztok! Azt szertném megcsinálni, hogy tmrpcm lib segítségével gsm egységen keresztül bejátszik egy hangot az arduino, össze is kötöttem egy jack dugóval a shield mikrofon bemenetét az arduinoval, ha egy hangszórót kötök rá tökéletes, de ha a shieldbe dugom, a telefon túloldalán szakadozva megy át a hang, ha jack kábellel egy zenét játszok be, az jól átmegy. Mi lehet a probléma?
(#) szikorapéter válasza icserny hozzászólására (») Aug 16, 2014 /
 
Kicsit problémás így elsőre nekiugorni de nagyon meg szeretném csinálni.
A hozzászólás módosítva: Aug 16, 2014
(#) Kovidivi hozzászólása Aug 16, 2014 /
 
Sziasztok! Van 6 változóm, ami még most is aktív az Arduinoban, a soros porton csak az ezred részét küldtem át saját hibámból, így nem kiértékelhető a szám. Le lehetne valahogy ennek a változónak kérdezni az értékét soros porton keresztül? Most csak "1"-et látok, de ha már a következő 3 tizedesjegyet láthatnám, mint "1.541", már szuper lenne. Köszönöm!
(#) TavIR-AVR válasza szikorapéter hozzászólására (») Aug 17, 2014 /
 
Nem. Teljeen mas kijelzot hasznal a program.
(#) arduinoforever hozzászólása Aug 17, 2014 /
 
Sziasztok!
Van itthon egy pár szétszedett autórádióm, és találtam az egyikben egy BU1924f RDS Decoder IC-t.
Ezt szeretném összekötni egy TEA5767 FM rádió modullal. Az IC adatlapjából nem igazán derül ki számomra, hogyan lehet az IC-t Arduinoval összekötni (I2C / SPI / egyéb) és működésre bírni! Ha valaki próbálkozott már ilyennel, akkor a segítségét kérném!
(#) varttina válasza arduinoforever hozzászólására (») Aug 17, 2014 /
 
Szia!
Ha jól értelmezem az adatlapot, a BU1924f-nek csak tápfeszültség kell, valamint bemenő jel, és már működik is. A RCLK jele az órajel, RDATA pedig az adat, szerintem shiftIn utasítással be tudod olvasni a dekóder jelét.
(#) Proci_85 válasza icserny hozzászólására (») Aug 17, 2014 /
 
Tévedés. A kódot megnézve, az Arduino egy linket hív meg, ami egy php-ra mutat, a linkben paraméterekben adja át a változók értékét a php-nak.
A php egy távoli szerveren fut, az arduino pedig mint egy kliens (=böngésződ otthon) meghívja a linket.
A php egyébként is szerveroldali nyelv, nem tud kliensen futni.
A linkelt kód arra jó, hogy ha pl. van egy adatgyűjtő arduino-d, akkor folyamatosan meghívva azt a paraméterezett linket, a szerver oldali php a kapott paramétereket elmenti. Így megvalósítod az adatok távoli szerverre való eljuttatását, ottani későbbi kiértékelését.

Tehát az arduino-n nem tudsz php-t futtatni, ahhoz php értelmező kellene, piszok messze áll ahhoz az arduino.
A hozzászólás módosítva: Aug 17, 2014
(#) arduinoforever válasza varttina hozzászólására (») Aug 17, 2014 /
 
Szia!
Köszönöm a válaszodat! Ez a ShiftIn utasítás Nekem még új, de utánna nézek!
(#) icserny válasza Proci_85 hozzászólására (») Aug 18, 2014 /
 
Ezen már rég túl vagyunk, ráadásul nem nekem kellett volna címezni.
(#) Proci_85 válasza icserny hozzászólására (») Aug 18, 2014 /
 
Időben igen, de jó választ nem találtam a felvetésre, így az archiv kedvéért helyesbítettem. A címzést lehet, h benéztem, elnézést
(#) Chipmunk1960 hozzászólása Aug 18, 2014 /
 
Sziasztok! Vén fejjel, most sikerült becseppennem, ebbe a témakörbe. Most próbálok újra tanulni programozni, 30-év után... Gyorsan elszállt az idő. Segítséget szeretnék kérni, tapasztaltabb kollégáktól, TFT_320QVT LCD/touch, ITDB02 shield 2.1 for Arduino Mega 2560. Nem nagyon találtam működő sketch file-t amivel gyakorolhatnék. Ha valaki tudna, működő linket küldeni, amin gyakorlatozhatnék, megérthetném a lényegét, azt megköszönném. Eddig az összes letöltött .pde és .ino file-ok compiller után egy sor hibát ír. Egyedül egy működik, amelyik vízszintesen feltölti a képernyőt 4 színnel egymás után, tehát a kütyü jó.
Köszi: Mike
A hozzászólás módosítva: Aug 18, 2014
(#) TavIR-AVR válasza Chipmunk1960 hozzászólására (») Aug 19, 2014 /
 
A library-k hiányoznak a kód mellől valószínűleg.
A pde-k Arduino 0023, az ino-k Arduino 1.0.x verziókhoz jók. Az Arduino 1.5.x verziók beta kiadások, ne azon tanulj!
(#) Dániel X hozzászólása Aug 20, 2014 /
 
Üdv!

Egy analóg értéktartományon belül szeretném, ha egy kimenetem aktív, magas szintű lenne.
10 K-s potméterrel leosztott feszültséget nézek az A0-s lábon, és ha az érték 100 vagy ennél kisebb akkor a 7-es lábon lévő lednek világítania kellene.
Azért hogy ne csak úgy állítgassam a potmétert, az analóg értéket kiküldöm a pc-re.
A pc-n megjelenik a beolvasott érték, viszont a led egyfolytában a potméter állásától függetlenül világít.
Én nem jöttem még rá a megoldásra, van valakinek ötlete a megoldásra?

  1. int led = 7;
  2. int pot = 0;
  3. int val = 0;
  4.  
  5.  
  6. void setup(){
  7.   pinMode(led,OUTPUT);
  8.   Serial.begin(9600);   // 9600 baud-os soros port beallitasa
  9. }
  10.  
  11. void loop(){
  12.   val = analogRead (pot); // ADC érték beolvasása
  13.   if(val <= 100);         // Ha pot változó értéke egyenlő vagy kisebb mint 100
  14. {digitalWrite (led, HIGH);} // akkor a led magas állapotba kerül
  15.  
  16. Serial.println(val, DEC);  // a mert ADC ertek PC-re kuldese
  17.  
  18. }
(#) szikorapéter válasza Dániel X hozzászólására (») Aug 20, 2014 /
 
Nincs megadva low érték szerintem bár én még laikus vagyok a témában.
Következő: »»   43 / 850
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