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   16 / 850
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 /
 
Az Atmega adatlapján nem találom a kvarc bekötését, azt is mérjem vissza az AVRről? 16MHz kavics jó hozzá? Vagy mi a legjobb?
A hozzászólás módosítva: Dec 27, 2013
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Azt kell használni amit ők is beletettek oda. Ha 16MHz akkor neked is olyan kell!

De nincs kedved keresni a googlin.

Tessék:

ATMEGA328 bekötése az ARUINO-ban!

Amúgy 16MHz-es kvarc 22pF kondikkal.
Nézelődj!
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 27, 2013 / 1
 
Köszönöm szépen a fáradozásod, segítséged. Szép estét.
(#) Koncsar válasza (Felhasználó 15355) hozzászólására (») Dec 27, 2013 /
 
Szia Tibor! De, egy évvel ezelőtt sokat foglalkoztam vele, de félre tettem mert nagyon szeretem az erősítőket és elkezdtem építeni őket, párat, így szegény Arduinom feledésbe merült. De majd megpróbálom újrakezdeni, mert ezt is imádtam csinálni.
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 27, 2013 /
 
Én befejeztem a pro erősítőmet. Ahhoz meg az Arduino-val készítek okosságokat. Jó cucc ez.

Viszont azt nekem is elárulhatná valaki, miért reseteli magát az Arduino Mega ADK rev.3 amikor csatlakozok soros porton?! Ez csak ennek a verziónak a hibája? Szándékos lehet?
(#) icserny válasza pepe1125 hozzászólására (») Dec 28, 2013 / 1
 
Idézet:
„Viszont azt nekem is elárulhatná valaki, miért reseteli magát az Arduino Mega ADK rev.3 amikor csatlakozok soros porton?! Ez csak ennek a verziónak a hibája? Szándékos lehet?”
Szerintem nem csak ez a típus. Igen, szándékos.

A DTR vonal össze van kötve egy 100 nF-os kondenzátoron keresztül a RESET bemenettel. Ennek segítségével oldották meg azt, hogy a programletöltéskor automatikusan újrainduljon a mikrovezérlő, hogy bootloader módba kapcsoljon. Mellékhatás, hogy minden kapcsolódáskor aktiválódik a DTR jel, ezért a mikrovezérlő újraindul.
(#) Koncsar hozzászólása Dec 28, 2013 /
 
Sziasztok! Kérdésem a következő, hogy ha a Pepe féle időzítőt összetettem Atmega328P-PU val, kvarccal, működik is. Olyan kivezetést nem vihettem volna ki az IC ből, hogy STK500 al egy Atmegára feltőltsem a progit és ne kelljen hozzá az Arduino. Megoldható?
A hozzászólás módosítva: Dec 28, 2013
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 28, 2013 /
 
Igen meg, mert a generált hex kódot lementve bármikor beégethető másik kontroller be is.
(#) pepe1125 válasza icserny hozzászólására (») Dec 28, 2013 /
 
Ahha. Valóban. Látom. Viszont nem egészen értem ennek a működését.
Bővebben: Mega ADK kapcsolási rajz.

Van egy összeforrasztható forrszem. Ha azt szétszedem mi lesz?

Nem értem ezt a bootloader dolgot. Minek van benne egy atmega8? Csak a soros PORT-ot csatolják be usb-n keresztül? De miért nem csak az atmega8-ban fut a bootloader és a 2560-at tudnák icsp módban bootloader nélkül programozni. Vagy nem? Hogy van ez?
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 28, 2013 /
 
Szia! Kösz. Az STK-t bekötöttem a gépre, az STK rámegy ICSP az Arduino2009-re. A bootloadert azt feltudtam tőlteni, de progit már nem enged. Olyan mint ha nem látná a gépem az STK-t. Az AVR Studió sem látja az STK500 -at.
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 28, 2013 /
 
Nade az hogy lehet? Akkor csak nincs jól telepítve valami. Mert stk500-al és avrdude biztos fel tudja tölteni. Arduino nélkül is, bármilyen nyákra szereled rá az icsp kivezetéssel.
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 28, 2013 /
 
Az Arduino 1.0.4 el akkor a bootloader miért megy fel akár mennyi 328P teszek az Arduinoba. STK500 nélkül feltudom tenni a progit, de utána jön a hiba.
Sketch mérete: 3 654 byte (maximálisan lehetséges: 30 720 byte)
Sketch mérete: 3 654 byte (maximálisan lehetséges: 30 720 byte)
avrdude: stk500_getsync(): not in sync: resp=0x00

Azt írja ki, hogy feltöltve, de igazából nem ment fel a progi.
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 28, 2013 /
 
Az Arduinoban az eszközöknél az alappanel Arduino2009 van beállítva, programozónál az STK500. Nem értem. Az nem lehet, hogy valamelyik COM port az STK-n keresztül az Arduinót látja? Egyszer még régebben mint ha mondott volna valamit erre a Tavír-os Robi, de elfelejtettem.
A hozzászólás módosítva: Dec 28, 2013
(#) TavIR-AVR válasza Koncsar hozzászólására (») Dec 28, 2013 /
 
Programozónál STK500-at be kell rakni a programmers.txt-be. csak utána jelenik meg. Soprosport: az STK500 portja. Programmer: STK500
File- Upload via programmer. Így a programozó tölti fel a kódot....


A hibás notsync a bootloader feltöltés után: nem a bootloadernek megfelelő alappanelt választottad ki és/vagy hibás a paneled.
(#) Koncsar válasza TavIR-AVR hozzászólására (») Dec 28, 2013 /
 
Benne van a txt ben. Már melyik alappanelre gondolsz, hogy hibás? De kijelöltem az Arduino 2009 et.
A hozzászólás módosítva: Dec 28, 2013
(#) Koncsar válasza TavIR-AVR hozzászólására (») Dec 28, 2013 /
 
Az avrdude.conf ot át kénr írni. Emiatt nem lehet rossz? Az STK-t miért nem látja az AVR studió sem? Robi simán USB -n keresztűl felmennek rá a progik az Arduinó 2009 re. STK-n keresztül is fellehet így tőlteni a progit?
A hozzászólás módosítva: Dec 28, 2013
(#) Koncsar válasza TavIR-AVR hozzászólására (») Dec 28, 2013 /
 
Mindjárt kukába dobom ezt azSTK500-at. Robi az STK -n keresztűl feltudom tölteni a megírt progit az arduinoban lévő 328P re?
A hozzászólás módosítva: Dec 28, 2013
(#) pepe1125 válasza Koncsar hozzászólására (») Dec 28, 2013 /
 
Mondom hogy elvileg fellehet. De a COM portot az ARDUINO programjában kiválasztottad az STK500-al megegyezőre?
(#) Koncsar válasza pepe1125 hozzászólására (») Dec 28, 2013 /
 
Az arduino 1.0.4 progibam a programozóban benne van az STK500 és ki is választottam. Alappanelnek meg kiválasztotta, az arduimo duemilanove -t. Az AVRstudióban is szerepel az STK500, de autókiválasztásnál sem találja meg.
(#) TavIR-AVR válasza Koncsar hozzászólására (») Dec 28, 2013 /
 
STK500 AVRStudio alatt COM1...4 közé essen.
(#) Koncsar válasza TavIR-AVR hozzászólására (») Dec 28, 2013 /
 
Köszönöm szépen Robi a segítséged, hogy mekkora béna vagyok.
(#) Panhard hozzászólása Dec 29, 2013 /
 
Sziasztok!
Egy teszt projektben használni szeretnék egy switch elágazást, string típusú változóval. Ellenőrzéskor hibát ír. Vagy csak egész számokat lehet ott használni?

switch.jpg
    
(#) Panhard válasza Panhard hozzászólására (») Dec 29, 2013 /
 
Közben rájöttem, hogy igen, egész számokat.
(#) pepe1125 válasza Panhard hozzászólására (») Dec 29, 2013 /
 
  1. case 'a'


Így próbáld?!

values for 'case' must be integer or character constants
A hozzászólás módosítva: Dec 29, 2013
(#) Panhard válasza pepe1125 hozzászólására (») Dec 30, 2013 / 1
 
Ez így miért lenne jó? Ha string típusú a változóm és abban 4db "a" betűt keresek?
Egyébként már működik, megoldottam If feltételekkel. De a projektnek még messze van a vége, úgyhogy még lehet kérdezek.
(#) icserny válasza Panhard hozzászólására (») Dec 30, 2013 /
 
Idézet:
„Ez így miért lenne jó?”
Senk sem mondta, hogy neked így jó, csupán azt, hogy szintaktikailag így helyes a switch() használata.
Idézet:
„Egyébként már működik, megoldottam If feltételekkel.”
Igen, azzal lehetséges.
(#) melorin hozzászólása Dec 31, 2013 /
 
Sziasztok!
Infrán vezérlem az Arduino-t egy távirányítóval. Az már megy, hogy bizonyos gombok megnyomásához különféle feladatokat tudok rendelni.
Szeretnék vezérelni egy PGA2310 digitális hangerőszabályzót ilyen módon.
A neten találtam néhány kódot, csak nem igazán értem, hogy melyik értéket kell csökkenteni/növelni a hangerő változásához, és hogy tudnám ezt megvalósítani.
Rá vetnétek egy pillantást? Nagyon fontos lenne. Köszi!
  1. #include <stdio.h>
  2. #include "Messenger.h"
  3.  
  4.  
  5. #define MUTE_L_LED      13
  6. #define MUTE_R_LED      14
  7.  
  8. #define PGA_ZCEN_PIN     3
  9. #define PGA_MUTE_PIN     2
  10.  
  11. #define PGA_CS_PIN      12
  12. #define PGA_SDATA_PIN   11
  13. #define PGA_SCK_PIN     10
  14.  
  15. // Gain (dB) = 31.5 − 0.5 * (255 − N)
  16. #define UNITY_GAIN     192 //   0.0db
  17. #define MIN_GAIN         1 // -95.5dB
  18.  
  19. #define BAUD_RATE   115200
  20.  
  21. Messenger message = Messenger();
  22.  
  23. int volume_left, old_l;
  24. int volume_right, old_r;
  25.  
  26. void pga2311_init(void)
  27. {
  28.   pinMode(PGA_CS_PIN,    OUTPUT);    // pga-chipselect pin
  29.   pinMode(PGA_SDATA_PIN, OUTPUT);    // pga-data-out (our data out to it) pin
  30.   pinMode(PGA_SCK_PIN,   OUTPUT);    // pga-clock pin
  31.  
  32.   pinMode(PGA_ZCEN_PIN, OUTPUT);
  33. }
  34.  
  35. void pga2311_enable_zero_crossing_detection()
  36. {
  37.   digitalWrite(PGA_ZCEN_PIN, HIGH);
  38. }
  39.  
  40. void pga2311_disable_zero_crossing_detection()
  41. {
  42.   digitalWrite(PGA_ZCEN_PIN, LOW);
  43. }
  44.  
  45. void SPI_write(uint8_t out_spi_byte )
  46. {
  47.   uint8_t  i;
  48.  
  49.   // loop thru each of the 8-bits in the byte, MSB first
  50.   for (i=0; i < 8; i++) {
  51.  
  52.     // strobe clock
  53.     digitalWrite(PGA_SCK_PIN, LOW);
  54.  
  55.     // send the bit (we look at the high order bit and 'print' that to the remote device)
  56.     if (0x80 & out_spi_byte) {  // MSB is set
  57.       digitalWrite(PGA_SDATA_PIN, HIGH);
  58.     }
  59.     else {
  60.       digitalWrite(PGA_SDATA_PIN, LOW);
  61.     }
  62.  
  63.     // unstrobe the clock via local SPI
  64.     digitalWrite(PGA_SCK_PIN, HIGH);
  65.  
  66.     // get the next bit  
  67.     out_spi_byte <<= 1;   // left-shift the byte by 1 bit
  68.   }
  69. }
  70.  
  71. void pga2311_mute()
  72. {
  73.   pga2311_set_volume(0, 0);  
  74. }
  75.  
  76.  
  77. void pga2311_set_volume( uint8_t left, uint8_t right )
  78. {
  79.   digitalWrite(PGA_CS_PIN, LOW);     // assert CS
  80.   SPI_write(right);   // right value (0..255)
  81.   SPI_write(left);    // left value (0..255)
  82.   digitalWrite(PGA_CS_PIN, HIGH);    // deassert CS
  83.  
  84.   // activate mute indicator leds
  85.   digitalWrite(MUTE_L_LED, LOW);
  86.   digitalWrite(MUTE_R_LED, LOW);
  87.  
  88.   if (left  == 0) digitalWrite(MUTE_L_LED, HIGH);
  89.   if (right == 0) digitalWrite(MUTE_R_LED, HIGH);
  90.  
  91.   // debugging output
  92.   /*
  93.   Serial.print(left, DEC);
  94.   Serial.print(",");
  95.   Serial.println(right, DEC);
  96.   */
  97. }
  98.  
  99.  
  100. void messageReady() {
  101.   bool left_selected = false;
  102.   bool right_selected = false;
  103.  
  104.  
  105.   char cmd=message.readChar();
  106.   switch(cmd) {
  107.   case 'l':
  108.     left_selected = true;
  109.     break;
  110.  
  111.   case 'r':
  112.     right_selected = true;
  113.     break;
  114.  
  115.   case 'b':
  116.     left_selected = true;
  117.     right_selected = true;
  118.     break;
  119.   }
  120.  
  121.   if (message.available()) {
  122.     int volume = message.readInt();
  123.     if (left_selected) {
  124.       volume_left = volume;
  125.     }
  126.     if (right_selected) {
  127.       volume_right = volume;
  128.     }
  129.   }
  130.   else {
  131.     // flush message when there's no match
  132.     message.readChar();
  133.   }
  134.  
  135. }
  136.  
  137.  
  138. void setup()
  139. {
  140.   Serial.begin(BAUD_RATE);
  141.   Serial.println("AUDIOVOLUME $Revision$, Ready!");
  142.  
  143.   pinMode(MUTE_L_LED, OUTPUT);
  144.   pinMode(MUTE_R_LED, OUTPUT);
  145.  
  146.   // set muting
  147.   pinMode(PGA_MUTE_PIN, OUTPUT);
  148.   digitalWrite(PGA_MUTE_PIN, HIGH); // high -> not muted, low -> muted
  149.  
  150.   pga2311_init();
  151.  
  152.   // set zero crossing detection
  153.   pga2311_enable_zero_crossing_detection();
  154.  
  155.   // make sure the volume is set to 0dB at startup
  156.   volume_left = volume_right = UNITY_GAIN;
  157.   old_l = old_r = 0;
  158.  
  159.   // Attach the callback function to the Messenger
  160.   message.attach(messageReady);
  161. }
  162.  
  163.  
  164. void loop()                    
  165. {
  166.   while ( Serial.available() )  message.process(Serial.read () );
  167.  
  168.   if (volume_left != old_l || volume_right != old_r) {
  169.     // set volume
  170.     pga2311_set_volume(volume_left, volume_right);
  171.  
  172.     old_l = volume_left;
  173.     old_r = volume_right;
  174.   }
  175. }
A hozzászólás módosítva: Dec 31, 2013
(#) icserny válasza melorin hozzászólására (») Dec 31, 2013 /
 
A loop() függvényben az áll, hogy a message objektum process metódusa a soros vonalon vett parancsokat értelmezi és beállítja a volume_left, volume_right változókat. Ha jól értelek, akkor a message.process hívást kell lecserélned olyan utasításokra, ami a távirányítódat kezeli. s a gombnyomások hatására a fenti változókat 1 - 192 közötti értékre állítja (a program elején vannak definiálva ezek a hívások).

A hangerő tényleges beállítását a pga2311_set_volume(volume_left, volume_right); függvényhívás végzi el.
(#) melorin válasza icserny hozzászólására (») Dec 31, 2013 /
 
Tehát akkor nekem utasításokat kell küldenem a soros portra, és ezeknek az utasításoknak a hatására fogja valami valahogy állítgatni 1-192 között a gaint?
Ezt egyáltalán nem értem. Miért kell ilyen bonyolultra készíteni a mai kütyüket?
Tudnál benne segíteni?
Ha segít, beillesztem az IR kódját is. Vagy látom a PIC-ekben jártas vagy. Ha keresek egy működőképes PIC kódot (mert arra már készült ilyesmi), át tudod fejteni Arduino nyelvre?
A hozzászólás módosítva: Dec 31, 2013
(#) icserny válasza melorin hozzászólására (») Dec 31, 2013 /
 
Idézet:
„Tehát akkor nekem utasításokat kell küldenem a soros portra, és ezeknek az utasításoknak a hatására fogja valami valahogy állítgatni 1-192 között a gaint?”
Nem, dehogy! Felejtsd el a soros portot, ahelyett kell neked az IR távirányítót használni. Gondolom, az egyik gomb megnyomása adott értékkel (mondjuk öttel) növeli, a másik megnyomása ugyanannyival csökkenti a változó értékét.
Idézet:
„Ha keresek egy működőképes PIC kódot (mert arra már készült ilyesmi), át tudod fejteni Arduino nyelvre?”
Nem. Meghalni sincs időm...
Következő: »»   16 / 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