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