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   618 / 850
(#) Kovidivi válasza bbalazs_ hozzászólására (») Ápr 16, 2020 /
 
Ki hogyan nevezi, adatlapban konkrétan megnevezik. A lényeg, hogy tudjuk, miről van szó. Ezért használom inkább a program memória kifejezést, de ha google-lel rákereses, bizony már flash-nek nevezik.
(#) benjami válasza bbalazs_ hozzászólására (») Ápr 16, 2020 / 4
 
A flash alapú kontrollerek (ma már ugye szinte mind ilyen) program memóriája írás szempontjából NAND flash jellegű (nem törölhető bájtonként, hanem csak nagyobb blokkok törölhetőek egyszerre), az adat EEPROM meg NOR flash (azaz bájtonként törölhető és írható). Valószínűleg ezért tér el az az újraírhatósági ciklusszáma is. Amúgy erről itt egy kis iromány.
(#) usane válasza benjami hozzászólására (») Ápr 17, 2020 /
 
Már amelyikben van. Nagyon soknál csak lecsípnek egy kicsit a progmemből és kész.
(#) Jonni hozzászólása Ápr 17, 2020 /
 
Azt olvastam, hogy amikor egy arduinót külső tápról hajtunk akkor 7V-tól 12V-ig ajánlott a táplálás. Igaz az, hogy 5V-tól 7V-ig bizonytalan az arduinó működése ha külső tápot használunk?
A hozzászólás módosítva: Ápr 17, 2020
(#) benjami válasza Jonni hozzászólására (») Ápr 17, 2020 /
 
Az AMS1117 adatlapja azt írja, hogy az 5V-os változatnak 6.5..12V bemenő feszültség kell a stabil 5V kimeneti feszültség előállításához. Ha még ezzel sorba kapcsolódik egy dióda ami a megakadályozza, hogy fordított polaritás rákapcsolása esetén kijöjjön a panelból a működtető füst, akkor pont kijön a 7V minimum.
(#) Jonni válasza benjami hozzászólására (») Ápr 17, 2020 /
 
Köszi. Így már érthető.
(#) sargarigo válasza Jonni hozzászólására (») Ápr 17, 2020 /
 
És nagyon tessék betartani a 12V-ot is, mert kijön a működtető füst mindenhonnan. Mint ma nekem.
(#) dokidoki válasza sargarigo hozzászólására (») Ápr 17, 2020 /
 
Le se merem írni, de én pár nano mini pro-t kifüstöltem, liion 3s2p 11éves akkupakkal. Valahogy az a pici stabmorzsa ezt sem szereti. Azóta a raw bemenetet félve használom, ha muszáj akkor 10-33 Ohm ellenállással sorba, úgy kibírja.
(#) vargham válasza dokidoki hozzászólására (») Ápr 18, 2020 /
 
Csak DC-DC konverterrel használom. Eddig nem füstöltek el.
(#) dokidoki válasza vargham hozzászólására (») Ápr 18, 2020 /
 
Igen, más tápegységmegoldással nem volt bajom még. Az a gyanúm maradt, hogy a tápfeszültség felfutási ideje és indulási keménysége és a panelig vezető vezeték hossza (nálam 1 méter az akkun) illetve az induktivitása okoz valami feszültség túllövést...
A hozzászólás módosítva: Ápr 18, 2020
(#) mateatek válasza dokidoki hozzászólására (») Ápr 18, 2020 /
 
Van olyan készülékem, amiben Ardu van. 2 db li-ion celláról üzemelnek, és a 1117-es stabilizálja. Ha fordítva teszem rá a tápot, akkor elfüstöl a 1117. Persze ezután gyorsan ráteszem helyes polaritással, hátha visszajavul. Ilyenkor általában a 1117 rövidzárban van már és a két li-ion cella 7.4 voltos feszültségét direktbe kapja a z MCU. Meg a 1602-es LCD is. De a túlfeszre nem panaszkodnak, azt eddig mindig kibírták.
(#) Jonni válasza sargarigo hozzászólására (») Ápr 18, 2020 /
 
Ajaj!!! Én 12V-os ledtáppal használom . Ezzel elvileg nem lehet gond ,de a jövőhéten jön meg a dc-dc step down konverterem.
A hozzászólás módosítva: Ápr 18, 2020
(#) Massawa válasza Jonni hozzászólására (») Ápr 18, 2020 /
 
Az a táp nem fönyeremény, az igazi LED tápok áramgenerátorosak, igy a feszültségük változhat. Igaz igy látatlanban nem tudjuk milyen is az a LED táp.
(#) Jonni válasza Massawa hozzászólására (») Ápr 18, 2020 /
 
optonica 36w DC 12V 3A . Stabilizált táp led-ekhez
(#) Kovidivi válasza Massawa hozzászólására (») Ápr 18, 2020 /
 
Nem minden "LED-táp-nak" nevezett táp áramgenerátoros. Ne keverjük a dolgokat! Ő 12V-os tápról ír (feszültség generátor), nem pedig egy 350mA-es áramgenerátorról!
A hozzászólás módosítva: Ápr 18, 2020
(#) Massawa válasza Kovidivi hozzászólására (») Ápr 18, 2020 /
 
Nem is állitottam, de nem mindegyik 12 V-s LED táp ad stabil 12 V-t ( pl a butorokba épitett LED tápok többsége áramgenerátoros és 12 V van ráirva.)
(#) Rober_4 hozzászólása Ápr 19, 2020 / 4
 
Bocs feltenném megint ide az eddigi Arduino Due-val megvalósított fmszint munkám legújabb verzióját.
Kezeli a szabványos i2c-n meghajtott 2x16-os lcd-t. (ahol ugye egyszerre csak 1 karaktert ír). Illetve 8 gombbal mászkálni lehet a menüben, és paramétereket állítani, opto csatolóval serial portról veszi a Midi jelet. 1fajta, de nagyon finoman állítható reverb motor, illetve 10 hangszín elmenthető a DueFlashStorage.h függvénytár segítségével, bár itt még tesztelésre szorul, pár paramétert nem ment el, amit nem nagyon értettem miért... Most már tényleg kezd aranyos lenni, bár vannak bagok, remélem lesz módom befejezni, ha nem hátha ráakad valaki egyszer...
(#) lacika1 hozzászólása Ápr 19, 2020 /
 
Sziasztok valaki meg tudná mondani hogy ezen a videón a iletö milyen programit használ? hogy a telefon gps ét joystick al tudja irányítani vagy esetleg valaki tudna ilyen firmware készíteni ardiunora úgy hogy a pokemon go va működjön? https://www.youtube.com/watch?v=PYIEex4NIyI
(#) nightlife hozzászólása Ápr 19, 2020 /
 
Sziasztok,
valami nem kerek a programomban. A Setupban lévő Serial.printig úgy érzem el sem jut.
Valamelyik konstruktorban történhet valami, ahonnan nem lép tovább (I2C működik, azt teszteltem).
Első gondolatom az volt, hogy csurig van a stack, de hogy tudom ezt ellenőrizni?
Rá tudna pillantani valaki? (Egy 4WD robot lesz, mind a négy hajtáson PID. 2db PCA9685 ad PWM-et, az encodereket pedig 4db Mini Pro számolja.)
Előre is nagyon szépen köszönöm!
  1. #include <Wire.h>
  2. //#include <Arduino.h>
  3.  
  4.  
  5. class Hajtomu
  6. {
  7. public:
  8.     double KP, KI, KD;
  9.     boolean engedely;
  10.     word PWM_min;
  11.     word encoder_ertek, U, Y, hiba, elozo_hiba, derivativ_hiba, integral_hiba, tickPerSec;
  12.     uint8_t i2c_encoder_cim, pwm_board, PWM_EN_pin, PWM_PWM_pin, PWM_INA_pin, PWM_INB_pin;
  13.     uint8_t T = 200;
  14.     boolean forgasirany, iranyvaltas = false;
  15.    
  16.  
  17. public:
  18.     Hajtomu ( uint8_t pwm_board, uint8_t i2c_encoder_cim, uint8_t PWM_EN_pin, uint8_t PWM_PWM_pin, uint8_t PWM_INA_pin, uint8_t PWM_INB_pin, boolean forgasirany ) :
  19.         pwm_board ( pwm_board ),
  20.         i2c_encoder_cim( i2c_encoder_cim ),
  21.         PWM_EN_pin( 6 + 4 * PWM_EN_pin ),
  22.         PWM_PWM_pin( 6 + 4 * PWM_PWM_pin ),
  23.         PWM_INA_pin( 6 + 4 * PWM_INA_pin ),
  24.         PWM_INB_pin( 6 + 4 * PWM_INB_pin ),
  25.         forgasirany( forgasirany )
  26.     {
  27.         Reset ();
  28.     }
  29.  
  30.  
  31.     void Encoder_beolvasas ( void )                  
  32.     {
  33.         Wire.requestFrom ( i2c_encoder_cim, ( uint8_t ) 2 );
  34.         char x = Wire.read (); char y = Wire.read ();      
  35.         encoder_ertek = word ( x, y );                    
  36.         if ( encoder_ertek > ( 65535 / 2 ) )
  37.             encoder_ertek = 65535 - encoder_ertek;
  38.     }
  39.  
  40.     void Ws ( word U )
  41.     {
  42.         derivativ_hiba = U - encoder_ertek;
  43.         hiba = derivativ_hiba + elozo_hiba;
  44.         Y = ( ( KP * hiba ) + ( KD * derivativ_hiba ) + ( KI * integral_hiba ) );
  45.         elozo_hiba = hiba;
  46.         integral_hiba += hiba;
  47.     }
  48.  
  49.     void Kimenet ( void )
  50.     {
  51.         iranyvaltas = ( Y < 0 ) ^ forgasirany;
  52.         Y = abs ( Y );
  53.         if ( Y > 4095 )
  54.             Y = 4095;
  55.         else
  56.             Y = Y * ( ( 4095 - PWM_min ) / ( 4095 + PWM_min ) );
  57.  
  58.         Wire.beginTransmission ( pwm_board );
  59.         Wire.write ( PWM_INA_pin );
  60.         if ( iranyvaltas )
  61.         {
  62.             Wire.write ( 0 ); Wire.write ( 0 ); Wire.write ( 4095 ); Wire.write ( 4095 >> 8 );
  63.         }
  64.         else
  65.         {
  66.             Wire.write ( 4095 ); Wire.write ( 4095 >> 8 ); Wire.write ( 0 ); Wire.write ( 0 );
  67.         }
  68.         Wire.endTransmission ();
  69.         Wire.beginTransmission ( pwm_board );
  70.         Wire.write ( PWM_INB_pin );
  71.         if ( !iranyvaltas )
  72.         {
  73.             Wire.write ( 0 ); Wire.write ( 0 ); Wire.write ( 4095 ); Wire.write ( 4095 >> 8 );
  74.         }
  75.         else
  76.         {
  77.             Wire.write ( 4095 ); Wire.write ( 4095 >> 8 ); Wire.write ( 0 ); Wire.write ( 0 );
  78.         }
  79.         Wire.endTransmission ();
  80.         Wire.beginTransmission ( pwm_board );
  81.         Wire.write ( PWM_PWM_pin );
  82.         Wire.write ( 0 ); Wire.write ( 0 ); Wire.write ( Y ); Wire.write ( Y >> 8 );
  83.         Wire.endTransmission ();
  84.         Wire.beginTransmission ( pwm_board );
  85.         Wire.write ( PWM_EN_pin );
  86.         if ( !engedely )
  87.         {
  88.             Wire.write ( 4095 ); Wire.write ( 4095 >> 8 ); Wire.write ( 0 ); Wire.write ( 0 );
  89.         }
  90.         else
  91.         {
  92.             Wire.write ( 0 ); Wire.write ( 0 ); Wire.write ( 4095 ); Wire.write ( 4095 >> 8 );
  93.         }
  94.         Wire.endTransmission ();    
  95.     }
  96.  
  97. public:
  98.     void Start ( word U )
  99.     {
  100.         Enable ( true );
  101.         Encoder_beolvasas ();
  102.         Ws ( U );
  103.         Kimenet ();
  104.     }
  105.  
  106.     void SetKP ( double Kp ) { KP = Kp; }            
  107.     void SetKI ( double Ki ) { KI = Ki; }            
  108.     void SetKD ( double Kd ) { KD = Kd; }            
  109.     void SetPWM_min ( word PWM_min ) { PWM_min = PWM_min; }      
  110.     void Enable ( boolean En ) { engedely = En; }                
  111.     void Stop ( void )                                            
  112.     {
  113.         Enable ( false );
  114.         Wire.beginTransmission ( pwm_board );
  115.         Wire.write ( 6 + 4 * PWM_EN_pin );
  116.         Wire.write ( 0 ); Wire.write ( 0 ); Wire.write ( 4095 ); Wire.write ( 4095 >> 8 );
  117.         Wire.endTransmission ();
  118.     }
  119.     void Reset ( void )                                                 // Eldobja minden számláló minden értékét
  120.     {
  121.         Stop ();
  122.         Encoder_beolvasas ();
  123.         encoder_ertek, U, hiba, elozo_hiba, integral_hiba, derivativ_hiba = 0;
  124.     }
  125. };
  126.  
  127. void PWM_board_setup ( uint8_t cim1, uint8_t cim2 )
  128. {
  129.     Wire.beginTransmission ( cim1 );
  130.     Wire.write ( ( uint8_t ) 0 );
  131.     Wire.write ( ( uint8_t ) 128 );                      // Újraindítás
  132.     Wire.endTransmission ();
  133.     Wire.beginTransmission ( cim2 );
  134.     Wire.write ( ( uint8_t ) 0 );
  135.     Wire.write ( ( uint8_t ) 0x80 );                      // Újraindítás
  136.     Wire.endTransmission ();
  137.     delay ( 10 );                                         // Ébredésre várakozás
  138.     Wire.beginTransmission ( cim1 );
  139.     Wire.write ( ( uint8_t ) 0 );
  140.     Wire.write ( ( uint8_t ) 16 );                        // Tente
  141.     Wire.endTransmission ();
  142.     Wire.beginTransmission ( cim1 );
  143.     Wire.write ( ( uint8_t ) 254 );
  144.     Wire.write ( ( uint8_t ) 101 );                       // prescaler beállítása
  145.     Wire.endTransmission ();
  146.     Wire.beginTransmission ( cim1 );
  147.     Wire.write ( ( uint8_t ) 0 );
  148.     Wire.write ( ( uint8_t ) 0 );                         // nullás módba állunk (ébresztés)
  149.     Wire.endTransmission ();
  150.     Wire.beginTransmission ( cim1 );
  151.     Wire.write ( ( uint8_t ) 0 );
  152.     Wire.write ( ( uint8_t ) 160 );                       // auto increment bekapcsolása (128 | 32)  
  153.     Wire.endTransmission ();
  154.     Wire.beginTransmission ( cim2 );
  155.     Wire.write ( ( uint8_t ) 0 );
  156.     Wire.write ( ( uint8_t ) 16 );
  157.     Wire.endTransmission ();
  158.     Wire.beginTransmission ( cim2 );
  159.     Wire.write ( ( uint8_t ) 254 );
  160.     Wire.write ( ( uint8_t ) 101 );
  161.     Wire.endTransmission ();
  162.     Wire.beginTransmission ( cim2 );
  163.     Wire.write ( ( uint8_t ) 0 );
  164.     Wire.write ( ( uint8_t ) 0 );
  165.     Wire.endTransmission ();
  166.     Wire.beginTransmission ( cim2 );
  167.     Wire.write ( ( uint8_t ) 0 );
  168.     Wire.write ( ( uint8_t ) 160 );
  169.     Wire.endTransmission ();
  170.     delay ( 5 );                                       // megvárjuk
  171.  
  172.     uint8_t totempole;                                 // Kimenet totempole-ra állítása
  173.     Wire.beginTransmission ( ( uint8_t ) 64 );
  174.     Wire.write ( ( uint8_t ) 1 );
  175.     Wire.endTransmission ();
  176.     Wire.requestFrom ( ( uint8_t ) 64, ( uint8_t ) 1 );
  177.     totempole = ( 1, Wire.read () | 4);
  178.     Wire.beginTransmission ( ( uint8_t ) 64 );
  179.     Wire.write ( ( uint8_t ) 1 );
  180.     Wire.write ( totempole );
  181.     Wire.endTransmission ();
  182.     Wire.beginTransmission ( ( uint8_t ) 65 );
  183.     Wire.write ( ( uint8_t ) 1 );
  184.     Wire.endTransmission ();
  185.     Wire.requestFrom ( ( uint8_t ) 65, ( uint8_t ) 1 );
  186.     totempole = ( 1, Wire.read () | 4 );
  187.     Wire.beginTransmission ( ( uint8_t ) 65 );
  188.     Wire.write ( ( uint8_t ) 1 );
  189.     Wire.write ( totempole );
  190.     Wire.endTransmission ();
  191.     delay ( 5 );                                        // megvárjuk
  192. }
  193. // A pilóta osztály végzi a számítógéptől érkező parancsok feldolgozását, ezen utasítások alapján végzi a jármű mozgásának irányítását.
  194. class Pilota
  195. {
  196.  
  197.     Hajtomu* mot[4] = {
  198.     new Hajtomu ( ( uint8_t ) 64, ( uint8_t ) 6, ( uint8_t ) 0, ( uint8_t ) 1, ( uint8_t ) 2, ( uint8_t ) 3, false ),
  199.     new Hajtomu ( ( uint8_t ) 64, ( uint8_t ) 7, ( uint8_t ) 4, ( uint8_t ) 5, ( uint8_t ) 6, ( uint8_t ) 7, true ),
  200.     new Hajtomu ( ( uint8_t ) 65, ( uint8_t ) 4, ( uint8_t ) 0, ( uint8_t ) 1, ( uint8_t ) 2, ( uint8_t ) 3, true ),
  201.     new Hajtomu ( ( uint8_t ) 65, ( uint8_t ) 5, ( uint8_t ) 4, ( uint8_t ) 5, ( uint8_t ) 6, ( uint8_t ) 7, false )
  202.     };
  203.  
  204. public:
  205.     Pilota ()
  206.     {
  207.         for ( uint8_t i = 0; i < 4; i++ )
  208.         {
  209.             mot[i]->SetKP ( 6.0 );
  210.             mot[i]->SetKI ( 4.0 );
  211.             mot[i]->SetKD ( 6.0 );
  212.             mot[i]->SetPWM_min ( 300 );
  213.             mot[i]->Enable ( false );
  214.         }
  215.     }
  216.  
  217.     void Megy ( uint8_t ertek )
  218.     {
  219.         for ( uint8_t i = 0; i < 4; i++ )
  220.             mot[i]->Start ( ertek );
  221.     }
  222.     void Enable () { for ( uint8_t i = 0; i < 4; i++ ) mot[i]->Enable ( true ); }
  223.     void Stop ( void ) { for ( uint8_t i = 0; i < 4; i++ ) mot[i]->Stop (); }
  224.     void SetKp ( float K ) { for ( uint8_t i = 0; i < 4; i++ ) mot[i]->KP = K; }
  225.     void SetKi ( float K ) { for ( uint8_t i = 0; i < 4; i++ ) mot[i]->KI = K; }
  226.     void SetKd ( float K ) { for ( uint8_t i = 0; i < 4; i++ ) mot[i]->KD = K; }
  227. };
  228.  
  229.  
  230. String mySt = "";
  231. char myChar;
  232. boolean stringComplete;
  233.  
  234. void setup()
  235. {
  236.     Wire.begin ();
  237.     Wire.setClock ( 100000 );
  238.     Serial.begin ( 115200 );
  239.     delay ( 1000 );
  240.     Serial.println ( "0" );
  241.     PWM_board_setup ( ( uint8_t ) 64, ( uint8_t ) 65 );
  242. }
  243.  
  244. Pilota* Miska = new Pilota();
  245.  
  246. void loop()
  247. {
  248.     Serial.println ("0");
  249.     if ( stringComplete )
  250.     {
  251.         if ( mySt.substring ( 0, 2 ) == "En" )
  252.         Serial.println ("ENABLED");
  253.         Miska->Enable ();
  254.         if ( mySt.substring ( 0, 2 ) == "St" )
  255.         Miska->Stop ();
  256.         if ( mySt.substring ( 0, 3 ) == "Seb" )
  257.         Miska->Megy ( mySt.substring ( 3, mySt.length () ).toInt () );
  258.         if ( mySt.substring ( 0, 2 ) == "KP" )
  259.         Miska->SetKp ( mySt.substring ( 2, mySt.length () ).toFloat () );
  260.         if ( mySt.substring ( 0, 2 ) == "KI" )
  261.         Miska->SetKi ( mySt.substring ( 2, mySt.length () ).toFloat () );
  262.         if ( mySt.substring ( 0, 2 ) == "KD" )
  263.         Miska->SetKd ( mySt.substring ( 2, mySt.length () ).toFloat () );
  264.         mySt = "";
  265.         stringComplete = false;
  266.     }
  267.  
  268. }
  269.  
  270. void serialEvent ()
  271. {
  272.     while ( Serial.available () )
  273.     {
  274.         char inChar = ( char ) Serial.read ();
  275.         if ( inChar != '\n' )
  276.             mySt += inChar;
  277.         if ( inChar == '\n' )
  278.             stringComplete = true;
  279.     }
  280. }
(#) KoblogPerGyok válasza nightlife hozzászólására (») Ápr 20, 2020 / 1
 
Szia!

Ezekkel a classokkal nem vagyok tisztában teljesen, de a 29. sorban nem kell lezárni azt? }; -?
Vagy ha az egész egy class akkor a legvégén? Látom nem, mert a 125. sorban mintha lezárnád.
A hozzászólás módosítva: Ápr 20, 2020
(#) nightlife válasza KoblogPerGyok hozzászólására (») Ápr 20, 2020 /
 
Megtaláltam, a problémát az okozta, hogy a Miska pilótát kint hoztam létre, tehát rögtön a futás első ciklusaiban ő csinált négy hajtómű osztályt, amik használni akarták már a konstruktorból az I2C-t. Az viszont még nem állt készen, hiszen azt a setupban indítom. Ugyan nem az volt a baj, amire gondoltál, de azért köszönöm szépen!
Így már működik(bár nem igazán tetszik):
  1. String mySt = "";
  2. char myChar;
  3. boolean stringComplete, set;
  4.  
  5. void setup()
  6. {
  7.     Wire.begin ();
  8.     Wire.setClock ( 100000 );
  9.     Serial.begin ( 115200 );
  10.     delay ( 1000 );
  11.     Serial.println ( "Setup" );
  12.     PWM_board_setup ( ( uint8_t ) 64, ( uint8_t ) 65 );
  13.     set = false;
  14.  
  15. }
  16.  
  17. Pilota* Miska = nullptr;
  18.  
  19. void loop()
  20. {
  21.     if ( !set )
  22.     {
  23.  
  24.        Serial.println ("Miska generalodik");
  25.        Pilota* Miska = new Pilota();
  26.        Serial.println ( "Miska kesz" );
  27.        set = true;
  28.     }
(#) djusee válasza nightlife hozzászólására (») Ápr 20, 2020 / 1
 
Nem néztem át, csak szemet szúrt hogy a Hajtomu osztályban 2 deklarálsz public ként.7. sor, 17. sor
(#) nightlife válasza djusee hozzászólására (») Ápr 20, 2020 /
 
Ha az emlékeim nem csalnak, ez nem okozhat gondot, akár minden tag elé beírható. A nagyja amúgy private lesz, csak a fenti hiba miatt mindent átírtam publicra, nehogy belezavarodjak.
(#) nightlife válasza lacika1 hozzászólására (») Ápr 20, 2020 /
 
Szia, a videó leírásában megtalálható a szoftverre mutató githubos link. De a kommentek alapján úgy néz ki, hogy fake/kamu/átejtés.
(#) asch válasza lacika1 hozzászólására (») Ápr 20, 2020 /
 
Custom ROM-mal szerintem meg lehet csinálni úgy, hogy a GPS device-ot helyettesíted egy programmal, ami kiadja a tetszőleges koordinátákat. Tehát nem a GPS működik, hanem egy program, ami kiadja a GPS adatfolyamot magából.

Gondolom, hogy valódi GPS jelet is létre lehetne valahogy hozni, de úgy tippelném, hogy illegális, mivel azokon a csatornákon mi nem adhatunk, nem zavarhatjuk a szolgáltatást.
(#) sargarigo válasza asch hozzászólására (») Ápr 20, 2020 /
 
Egyszerűbb szerintem tiltani a beépített GPS-t, és emulálni egy vezetékes usb-s gps vevőt. Nem tudom a mostani telók tudnak-e még ilyet fogadni, pár éve még csak így ment az igo például. Pár munkaórát bele lehet tolni az biztos
(#) Rober_4 hozzászólása Ápr 21, 2020 /
 
Sziaztok!

A következő programmal egy magas vágó szűrőt tudok csinálni:
  1. long y; //globális változó
  2. cikus {
  3. ....
  4. bufferbe =kiszamolthangertek;
  5. ....
  6. y = (freq1 * y + freq2 * bufferbe) / 10000;
  7. audio buffer[ bufferindex] = y;
  8. ....
  9. }

A kérdésem az lenne:
1. Hogyan tudom a vágás meredekségét (jóságát) jobbá tenni?
2. Hogyan tudok mély vágó szűrőt csinálni? (Elgondolásom az volt, hogy az eredeti jelből kivonom a magas vágás értéknek kiszámolt y-t, majd korrigálom a hangerőt, de ez nem nagyon jött be nekem....
Fontos lenne az egésszámos megvalósítás...
(#) Rober_4 válasza Rober_4 hozzászólására (») Ápr 21, 2020 /
 
A freq1 és a freq2 viszonya egy 1-127-ig állítható eqvalue értékhez:
  1. freq1 = (eqvalue / 123) * 100;
  2. freq2 = (127 - eqvalue / 99) * 100;
(#) benjami válasza Rober_4 hozzászólására (») Ápr 21, 2020 / 1
 
Én ezt az oldalt használtam szűrő tervezéshez (FIR szűrő). Kész kódot is generál, beraktam a mellékletbe amit én generáltattam vele, és a legegyszerűbb 72MHz-es stm32f103-on teljesen jól működik 76000Hz mintavételi frekvencián.
A hozzászólás módosítva: Ápr 21, 2020
(#) Rober_4 válasza benjami hozzászólására (») Ápr 21, 2020 /
 
Hú ez nagy segítség, remélem sikerül beimplementálni!
Köszönöm!
Következő: »»   618 / 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