Skocz do zawartości

Problemy z jednoczesnym uruchomieniem kilku podzespołów


Pavkov

Pomocna odpowiedź

Cześc chce stworzyć urządzenie które po wbiciu odpowiedniego numeru na klawiaturze zaczyna grać odpowiednią melodie zapisaną na karcie sd. Większość problemów udało mi sie rozwiązać, lecz na obecny nie jestem w stanie znaleźć rozwiązania. Mianowicie jak mam podłączoną klawiature, czytnik kart sd i głośnik któryś z komponentów nie działa (prawdo podobnie czytnik). Arduino zgodnie z programem sprawdza podłączenie wszystkich elementów jednakże nie odgrywa nagrania testowego. Klawiatura działa czytnik teoretycznie też, ale nie da się odtworzyć żadnego dźwięku. Jeśli ktoś jest w stanie mi pomóc to proszę o odpowiedź, poniżej zamieszczam konfiguracje urządzenia i kod.

#include <Arduino.h>
#include <Keypad.h>
#include <SD.h>                      // need to include the SD library
//#define SD_ChipSelectPin 53  //example uses hardware SS pin 53 on Mega2560
#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>


// C++ code

//#define buzer A0;

TMRpcm tmrpcm;
unsigned long time = 0;


const byte ROWS = 5;
const byte COLS = 4;

byte rowPins[ROWS] = {A5, A4, A3, A2, A1};
byte colPins[COLS] = {5, 3, 2, 0};

char keys[ROWS][COLS] ={
  	{'3','2','1'},
  	{'7','6','5'},
    {'*','0','9'},
    {'.','8',','},
    {'e','w','4'}
};

Keypad klawiatura = Keypad(makeKeymap(keys), rowPins,colPins,ROWS,COLS);

String tekst;
const String tel_book[2] = {"123","321"}; // tu wpisujemy numery pod którymi znajdują sie scieżki dźwiękowe
char* track_list[2] = {"test.wav","cos2.wav"}; // tu wpisujemy nazwy ścieżek dźwiekowych
int lokalizator;

void setup()
{
  tmrpcm.speakerPin = 10; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc
  //Complimentary Output or Dual Speakers:
  //pinMode(10,OUTPUT); Pin pairs: 9,10 Mega: 5-2,6-7,11-12,46-45 
  
  Serial.begin(9600);
  pinMode(13,OUTPUT); //LED Connected to analog pin 0 | w sumie to nie wiem ale bez tego nie działa
  if (!SD.begin(SD_ChipSelectPin)) {  // sprawdza czy karta sd jest poprawnie zainstalowana na miejscu
    Serial.println("SD fail");  
    return;   // jeśli nie to wyłącza program

  }
  else{   
    Serial.println("SD ok");
  }
  tmrpcm.play("test.wav"); // odgrywa testowy dźwięk po włączeniu urządzenia
  tmrpcm.volume(4);
}

void loop()
{
  char klawisz = klawiatura.getKey(); // pobiera dane z klawiatury i przypisuje do zmiennej
  if (klawisz)
  {
    tekst += klawisz; //wybieranie numeru
    Serial.println(tekst);
    if (tekst.length()==3) // gdy długość numeru jest odpowiednia zaczyna szukac go w książce telefonicznej
    {
        for (int i = 0; i < sizeof(tel_book); i++)
        {
            if (tel_book[i] == tekst)
            {
                lokalizator = i; // po znaleziemiu odpowiedniego numeru wybiera jego pozycje z listy
                tekst = "";
            }else{
              tmrpcm.play("9999.wav"); // odtworzenie informacji o błednie wybranym numerze
            }
            
        }
             
    }
    
  }
  
// wcześniej odnaleziony numer inicjuje odtworzenie odpowiedniej ścieżki dźwiękowej
  tmrpcm.play(track_list[lokalizator]); // to powinno już działac ale jeszcze nie wiem czy tak jak chce
}

 

1e0a28ab-0280-4b50-b888-65350f9b85de.jpg

Link do komentarza
Share on other sites

Ja tam nie widzę większych błędów...może po kolei sprawdź co działa a co nie... spróbuj wybrać utwór z listy , spróbuj odtworzyć etc...serial monitor się bardzo przydaje w poszukiwaniu takich błędów 

Link do komentarza
Share on other sites

tmrpcm.speakerPin = 10; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc

Jesteś pewny, że to dobry pin dla głośnika, a nie 9?

 

tmrpcm.play("test.wav"); // odgrywa testowy dźwięk po włączeniu urządzenia
  tmrpcm.volume(4);

Najpierw odgrywasz, później ustawiasz głośność? Trochę dziwnie tak.

Żeby nie było, nie używam arduino, tylko esp, ale to rzuciło mi się w oczy.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.