W tym artykule pokaże jak możemy zrobić własny odtwarzacz muzyki Bluetooth. Wyposażony on będzie w wyświetlacz informujący nas o obecnym stanie urządzenia. Natomiast za zmianę jego stanu będzie odpowiadał enkoder.

Spis treści
- Krótki opis
- Specyfikacja
- Przykład
- Pliki do pobrania
Krótki opis
Moduł wyposażony jest w wejście typu JACK oraz micro USB. Zapewnia on możliwość komunikacji telefonicznej przez Bluetooth-a oraz odtwarzanie muzyki dzięki Bluetooth.
Specyfikacja
- Napięcie zasilania: 3,7 – 5V
- Złącze zasilania w formie micro USB lub pady lutownicze
- Zasięg: max 15 m
- Wymiary płytki: 30 x 30 x 7 mm
Przykład
Elementy
- MODUŁ ODTWARZACZ MUZYKI MINI – MP3 – BLUETOOTH HW-770
- Arduino Mega/Uno/Nano
- Moduł enkodera obrotowego KY-040
- Wyświetlacz graficzny OLED 128×64 pikseli 0,96`
- * Płytka stykowa (jeżeli korzystamy z płytek Uno lub Nano)
Połączenie
Arduino – Moduł
pin 2 – „+”
GND/ *(wpinamy do płytki stykowej w wejście z „- ” i podłączamy wszystkie urządzenia z wejściem GND równolegle) – „-”
Arduino – Oled
SDA/A4 – SDA
SCL/A5 – SCL
GND – GND
5V(wpinamy w płytkę do pinu z „+” i podłączamy wszystkie urządzenia z wejściem VCC równolegle) – VCC
Arduino – Enkoder
pin 11 – CLK
pin 10 – DT
pin 9 – SW
GND – GND
5 V – VCC
Program
Na początku nazwę 2 piny (9 i 2) jako BTN (skrót button) i Blt (skrót Bluetooth)
#define BTN 9 #define BlT 2
Potem musimy załączyć wszystkie biblioteki oraz zmienne które będziemy wykorzystywać w przykładzie. Musimy stworzyć również obiekt biblioteki enkodera ( nazwałem go rotary) i przypisać do niego 2 piny (DT, CLK).
Potem tworzę 2 zmienne count odpowiadającą za ilość wciśnięcia przycisku oraz verify której na ten moment wartość jest równa false.
#include <Wire.h> #include <SPI.h> #include <SoftwareSerial.h> #include <TEA5767.h> #include <Encoder.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) #define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); Encoder rotary(10,11); int count = 0; bool verify = false;
Kolejno w funkcji void setup(). Aktywujemy komunikację na porcie szeregowym. Potem ustawiamy stany na 2 pin-ach OUTPUT – stan wyjściowy dla Bluetooth-a oraz INPUT_PULL – wewnętrznej rezystancji dla buttona. Ostatnim krokiem w funkcji jest podstawowa procedura dla Oled-u w razie niepoprawnego działania i wyczyszczenie wyświetlacza.
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(BTN, INPUT_PULLUP);
pinMode(BlT, OUTPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.clearDisplay();
}Na koniec została nam funkcji void loop(). Zaczynamy od if który będzie sczytywał ile razy wcisnęliśmy przycisk. Potem jeżeli został on wciśnięty 2 razy aktywuje się tryb Bluetooth. Póki zmienna verify będzie równa true pętla będzie się wykonywać i sprawdzać czy nasz moduł jest włączony czy wyłączony. Jego stan możemy zmienić dzięki obróceniu enkodera. Po ponownym wciśnięciu przycisku na enkoderze wychodzimy z trybu Bluetooth. Zapomniałem wcześniej dodać że wszystkie informacje dotyczące stanu Bluetooth-a będą wyświetlane na oled-zie.
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(BTN) == LOW) {
Serial.print("Count +1");
count = count + 1;
delay(1000);
Serial.print(count);
}
if(count == 2) {
Serial.println(enc);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(5,5);
display.print("WEJSCIE");
display.print("TRYB BLUETOOTH");
display.display();
verify = true;
delay(2000);
}
while(verify == true) {
int enc = rotary.read();
Serial.println(enc);
if(enc >= 0){
enc = 0;
rotary.write(enc);
digitalWrite(BlT, HIGH);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(8,16);
display.print("BLUETOOTH ON");
display.display();
}
if(enc < 0){
enc = -1;
rotary.write(enc);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(8,16);
display.print("BLUETOOTH OFF");
display.display();
digitalWrite(BlT, LOW);
}
if(digitalRead(BTN) == LOW){
display.clearDisplay();
count = 0;
verify = false;
digitalWrite(BlT, LOW);
}
}
}Pliki do pobrania
Jak pobrać bibliotekę dla oled – WYŚWIETLACZE OLED 0.91, 0.96 – AJmaker







