Skocz do zawartości

Problemy z jednoczesnym uruchomieniem kilku podzespołów


Pomocna odpowiedź

Napisano

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

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 

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.

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...