Arduino sound system.
- Sławek
- Site Admin
- Posty: 14530
- Rejestracja: 21 gru 2011, 22:12
- Has thanked: 15 times
- Been thanked: 21 times
Re: Arduino sound system.
Dobra, przyszedł wzmacniacz wiec zrobiłem testy :
1. soft jest przygotowany pod apkę lotniczą gdzie jest jeden kierunek obrotów - 0 jest na dole a u góry maks obrotów - u nas 0 jest w środku a na dole maks do tyłu, góra maks do przodu - ale to nie problem
2. ściągnąłem pliki wav z wątku twórcy i wgrałem na kartę - efekt jest taki, że po zmianie wychylenia drążka trzeba odczekać aż zakończy się odtwarzanie dotychczasowego pliku i dopiero odtwarzany jest kolejny co powoduje brak proporcjonalności dźwięku w stosunku do wychylenia drążka - wynika to z tego, że pliki są za długie, trzeba robić krótkie pliki jak to jest w TBS
3. aby dźwięk był płynny trzeba zastosować więcej plików przejściowych lub wygładzić przejścia poprzez wyciszenie - to jeszcze do potestowania i popracowania nad tym
4. przy wzmacniaczu na TDA2030 (18W) jest stosunkowo cicho, ale prawdopodobnie wynika to z niskiego napiecia (zasiliłem z 5V z adruino) - potem zrobię próbę na 12V - ew. za mały głośnik, bo użyłem Visaton BF 32 - podepnę większy i sprawdzę
5. generalnie wymaga to dużej przeróbki i optymalizacji ale baza jakaś jest do dalszych prac
Pozdr
1. soft jest przygotowany pod apkę lotniczą gdzie jest jeden kierunek obrotów - 0 jest na dole a u góry maks obrotów - u nas 0 jest w środku a na dole maks do tyłu, góra maks do przodu - ale to nie problem
2. ściągnąłem pliki wav z wątku twórcy i wgrałem na kartę - efekt jest taki, że po zmianie wychylenia drążka trzeba odczekać aż zakończy się odtwarzanie dotychczasowego pliku i dopiero odtwarzany jest kolejny co powoduje brak proporcjonalności dźwięku w stosunku do wychylenia drążka - wynika to z tego, że pliki są za długie, trzeba robić krótkie pliki jak to jest w TBS
3. aby dźwięk był płynny trzeba zastosować więcej plików przejściowych lub wygładzić przejścia poprzez wyciszenie - to jeszcze do potestowania i popracowania nad tym
4. przy wzmacniaczu na TDA2030 (18W) jest stosunkowo cicho, ale prawdopodobnie wynika to z niskiego napiecia (zasiliłem z 5V z adruino) - potem zrobię próbę na 12V - ew. za mały głośnik, bo użyłem Visaton BF 32 - podepnę większy i sprawdzę
5. generalnie wymaga to dużej przeróbki i optymalizacji ale baza jakaś jest do dalszych prac
Pozdr
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
- luki
- Kierowca
- Posty: 1630
- Rejestracja: 03 lip 2012, 15:18
Re: Arduino sound system.
Mi dziś pat nie dostarczył wzmacniacza wiec dopiero powalczę w niedzielę .Powiedz Sławku jak przerobiłeś scratch pod apkę przód ,tył i 0. Super ,że wyszło coś z tego i postaram się podszlifować pliki wav i zobaczymy co z tego wyjdzie w realu .Dzięki Sławku.
- Sławek
- Site Admin
- Posty: 14530
- Rejestracja: 21 gru 2011, 22:12
- Has thanked: 15 times
- Been thanked: 21 times
Re: Arduino sound system.
Sorry, zapomniałem wczoraj wrzucićluki pisze:Mi dziś pat nie dostarczył wzmacniacza wiec dopiero powalczę w niedzielę .Powiedz Sławku jak przerobiłeś scratch pod apkę przód ,tył i 0. Super ,że wyszło coś z tego i postaram się podszlifować pliki wav i zobaczymy co z tego wyjdzie w realu .Dzięki Sławku.
Kod: Zaznacz cały
#include <SD.h> // need to include the SD library
#define SD_ChipSelectPin 4 //using digital pin 4 on arduino nano 328, can use other pins
#include <TMRpcm.h> // also need to include this library...
#include <SPI.h>
TMRpcm tmrpcm; // create an object for use in this sketch
unsigned long time = 0;
int numLoop = 0;
int throttle = 0;
int prevThrottle = 0;
int currThrottle = 0;
int playingSound = 0;
//RC scale
int rc_pin = 2;
unsigned long duration;
unsigned long prevDuration;
void setup(){
tmrpcm.speakerPin = 9; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) { // see if the card is present and can be initialized:
Serial.println("SD fail");
return; // don't do anything more if not
}
else{
Serial.println("SD ok");
}
}
void loop(){
//Read throttel value
++numLoop;
if (numLoop == 30000){
noInterrupts();
duration = pulseIn(rc_pin, HIGH);
interrupts();
numLoop = 0;
Serial.println(duration);
Serial.println(currThrottle);
//Set new throttle value
/*
if(duration <= 990){
currThrottle = 0;
};
*/
if((duration > 1500) && (duration <= 1549)){
currThrottle = 1;
};
if((duration > 1550) && (duration <= 1599)){
currThrottle = 2;
};
if((duration > 1600) && (duration <= 1649)){
currThrottle = 3;
};
if((duration > 1650) && (duration <= 1699)){
currThrottle = 4;
};
if((duration > 1700) && (duration <= 1749)){
currThrottle = 5;
};
if((duration > 1750) && (duration <= 1799)){
currThrottle = 6;
};
if(duration > 1800){
currThrottle = 7;
};
//If currThrottle != prevThrottle set start playing new file
if(currThrottle != prevThrottle){
if((currThrottle == 0) && (prevThrottle > 0)){
tmrpcm.play("shut.wav");
Serial.println("shut.wav)");
while(tmrpcm.isPlaying()){}
prevThrottle = currThrottle;
}
if(currThrottle == 1){
if(currThrottle > prevThrottle){
tmrpcm.play("start.wav");
Serial.println("start.wav");
while(tmrpcm.isPlaying()){}
}
playingSound = 1;
prevThrottle = currThrottle;
}
if(currThrottle == 2){
tmrpcm.play("1.wav");
Serial.println("1.wav");
prevThrottle = currThrottle;
playingSound = 1;
}
if(currThrottle == 3){
tmrpcm.play("2.wav");
Serial.println("2.wav");
prevThrottle = currThrottle;
playingSound = 2;
}
if(currThrottle == 4){
tmrpcm.play("3.wav");
Serial.println("3.wav");
prevThrottle = currThrottle;
playingSound = 3;
}
if(currThrottle == 5){
tmrpcm.play("4.wav");
Serial.println("4.wav");
prevThrottle = currThrottle;
playingSound = 4;
}
if(currThrottle == 6){
tmrpcm.play("5.wav");
Serial.println("5.wav");
prevThrottle = currThrottle;
playingSound = 5;
}
if(currThrottle == 7){
tmrpcm.play("6.wav");
Serial.println("6.wav");
prevThrottle = currThrottle;
playingSound = 6;
}
}
// Serial.println(tmrpcm.isPlaying());
if((currThrottle = prevThrottle) && (tmrpcm.isPlaying() == 0)){
if(playingSound == 1){
tmrpcm.play("1.wav");
Serial.println("again 1.wav");
prevThrottle = currThrottle;
}
if(playingSound == 2){
tmrpcm.stopPlayback();
tmrpcm.play("2.wav");
Serial.println("again 2.wav");
prevThrottle = currThrottle;
}
if(playingSound == 3){
tmrpcm.stopPlayback();
tmrpcm.play("3.wav");
Serial.println("again 3.wav");
prevThrottle = currThrottle;
}
if(playingSound == 4){
tmrpcm.stopPlayback();
tmrpcm.play("4.wav");
Serial.println("again 4.wav");
prevThrottle = currThrottle;
}
if(playingSound == 5){
tmrpcm.stopPlayback();
tmrpcm.play("5.wav");
Serial.println("again 5.wav");
prevThrottle = currThrottle;
}
if(playingSound == 6){
tmrpcm.stopPlayback();
tmrpcm.play("6.wav");
Serial.println("again 6.wav");
prevThrottle = currThrottle;
}
}
}
}
- luki
- Kierowca
- Posty: 1630
- Rejestracja: 03 lip 2012, 15:18
Re: Arduino sound system.
System działa po niżej link z pracy ,pliki nie są przygotowane więc trzeba popracować nad płynnymi przejściami i dodać z 3-4 pliki wav (przejściowe). Problemy jakie napotkałem to konieczność zastosowania filtra przed wzmacniaczem a wyjściem z Arduino ,lipny wzmacniacz klasa D chyba największa bolączka tego układu to brak modulacji plików wav (przyspieszania) ale to wszystko mamy jak to w moim przypadku było tylko za 7 funtów więc czy warto coś takiego zbudować wybierzcie sobie sami ,jak wspomniał Sławek baza jest znakomita,a jak wiadomo to tylko drogi dodatek .
- luki
- Kierowca
- Posty: 1630
- Rejestracja: 03 lip 2012, 15:18
Re: Arduino sound system.
Powrócę do tematu jak ogarnę samodzielne pisanie scratchów ,w którym jestem właśnie w trakcie ,platforma Arduino to ciekawe pole do popisu ,o które można oprzeć całą elektronikę Rc.