Разное о выращивании табака на Алтае
Вы не вошли.
Страницы 1
Блютуз приёмник на базе библиотеки BluetoothA2DPSink.h
https://github.com/pschatzmann/ESP32-A2DP
https://www.pschatzmann.ch/home/2020/03/27/1255/
Не в сети
Самый простой вариант блютузприёмника ESP32+PCM5102.
Код.
#include "BluetoothA2DPSink.h"
BluetoothA2DPSink a2dp_sink;
void setup() {
i2s_pin_config_t my_pin_config = {
.bck_io_num = 27,//BCK
.ws_io_num = 26,//LCK
.data_out_num = 25,//DIN
.data_in_num = I2S_PIN_NO_CHANGE };
a2dp_sink.set_pin_config(my_pin_config);
a2dp_sink.start("MyMusic");
}
void loop() {
}
Не в сети
Esp32 такой(тот что имеет 30 ног). Памяти для обработки мультимедиа у него мало, но пока будет такой.
https://aliexpress.ru/item/32802431728. … 4aa6zqRg8u
ЦАП PCM5102 такой.
https://aliexpress.ru/item/32828177686. … 4aa6zqRg8u
Не в сети
Не в сети
Не в сети
Не в сети
Не в сети
Код для esp32+pcm5102+st7735+vs1838
#include "Arduino.h"
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>
const uint16_t kRecvPin = 33;
IRrecv irrecv(kRecvPin);
decode_results results;
///////////////////////////////////////
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#define TFT_CS 14
#define TFT_RST 15
#define TFT_DC 32
#define TFT_SCLK 4
#define TFT_MOSI 2
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
//////////////////////////////////////////////////////////////////////////////////
#include "Audio.h"
#include "BluetoothA2DPSink.h"
BluetoothA2DPSink a2dp_sink;
bool is_active = true;
char str1[50]="";
String str2[50]="";
void avrc_metadata_callback(uint8_t data1, const uint8_t *data2) {
Serial.printf("AVRC metadata rsp: attribute id 0x%x, %s\n", data1, data2);
}
void DisplayInfo(){
tft.setTextSize(2);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.print(str1);
}
// Начало функции обработки кириллических символов
String ru(String source)
{ int i,j,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); i = j = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 127) {
switch (n) {
case 208: {
n = source[i]; i++;
if (n == 129) { n = 192; break; } // перекодируем букву Ё
break;
}
case 209: {
n = source[i]; i++;
if (n == 145) { n = 193; break; } // перекодируем букву ё
break;
}
}
}
m[0] = n;target = target + String(m);
j++;
}
return target;
}
// Конец функции обработки кириллических символов
void setup() {
irrecv.enableIRIn(); // Start the receiver
////////////////////////////////
tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
tft.setRotation(1);
tft.setTextSize(3);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Дисплей."));
///////////////
Serial.begin(115200);
i2s_pin_config_t my_pin_config = {
.bck_io_num = 27,
.ws_io_num = 26,
.data_out_num = 25,
.data_in_num = I2S_PIN_NO_CHANGE
};
a2dp_sink.set_pin_config(my_pin_config);
a2dp_sink.set_avrc_metadata_callback(avrc_metadata_callback);
a2dp_sink.start("BT32bit");
}
void loop() {
if (irrecv.decode(&results)) {
serialPrintUint64(results.value, HEX);
// play();pause();stop();next();previous();
if (results.value==0x5FA807F){//жёлтый
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Предыдущий"));
a2dp_sink.previous();}
if (results.value==0x5FA00FF){//синий
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Следующий"));
a2dp_sink.next();}
if (results.value==0x5FA827D){//ЗЕЛЁНЫЙ
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Воспроизведение"));
a2dp_sink.play();}
if (results.value==0x5FA42BD){//КРАСНЫЙ
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Пауза"));
a2dp_sink.pause();}
Serial.println("");
irrecv.resume(); // Receive the next value
}
}
Не в сети
Код для esp32+pcm5102+st7735+vs1838. Обновление. Теперь метаданные воспроизводимого трека отображаются на дисплее.
#include "Arduino.h"
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>
const uint16_t kRecvPin = 33;//Порт ИК приёмника
IRrecv irrecv(kRecvPin);
decode_results results;
///////////////////////////////////////
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#define TFT_CS 14
#define TFT_RST 15
#define TFT_DC 32
#define TFT_SCLK 4
#define TFT_MOSI 2
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
//////////////////////////////////////////////////////////////////////////////////
#include "Audio.h"
#include "WiFiMulti.h"
#include "SPI.h"
#include "SD.h"
#include "FS.h"
// ==> Example to use external 32 bit DAC - the 16 bit A2DP ouptut will be expanded to the indicated bits
#include "BluetoothA2DPSink.h"
BluetoothA2DPSink a2dp_sink;
bool is_active = true;
char str1[50]="";
char str2[100]="";
void avrc_metadata_callback(uint8_t data1, const uint8_t *data2) {
Serial.printf("AVRC metadata rsp: attribute id 0x%x, %s\n", data1, data2);
if (data1==1){
sprintf(str2, "%s", data2);
}
if (data1==4) DisplayInfo();
}
void DisplayInfo(){//Отображаем метаданные воспроизводимого трека
tft.setTextSize(2);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.print(ru(str2));
}
// Начало функции обработки кириллических символов
String ru(String source)
{ int i,j,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); i = j = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 127) {
switch (n) {
case 208: {
n = source[i]; i++;
if (n == 129) { n = 192; break; } // перекодируем букву Ё
break;
}
case 209: {
n = source[i]; i++;
if (n == 145) { n = 193; break; } // перекодируем букву ё
break;
}
}
}
m[0] = n;target = target + String(m);
j++;
}
return target;
}// Конец функции обработки кириллических символов
void setup() {
irrecv.enableIRIn(); // Start the receiver
////////////////////////////////
tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
tft.setRotation(1);
tft.setTextSize(3);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Дисплей."));
///////////////
Serial.begin(115200);
i2s_pin_config_t my_pin_config = {
.bck_io_num = 27,
.ws_io_num = 26,
.data_out_num = 25,
.data_in_num = I2S_PIN_NO_CHANGE
};
a2dp_sink.set_pin_config(my_pin_config);
a2dp_sink.set_avrc_metadata_callback(avrc_metadata_callback);
a2dp_sink.start("ESP32_BTreceiver");
}
void loop() {
if (irrecv.decode(&results)) {
// print() & println() can't handle printing long longs. (uint64_t)
serialPrintUint64(results.value, HEX);
if (results.value==0x1FE58A7)//Mode
{
DisplayInfo();
}
if (results.value==0x5FA807F or results.value==0x1FE40BF){//жёлтый
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Предыдущий"));
a2dp_sink.previous();
}
if (results.value==0x5FA00FF or results.value==0x1FEC03F){//синий
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Следующий"));
a2dp_sink.next();
}
if (results.value==0x5FA827D){//ЗЕЛЁНЫЙ
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Воспроизведение"));
a2dp_sink.play();
}
if (results.value==0x5FA42BD){//КРАСНЫЙ
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ST77XX_GREEN);
tft.setTextWrap(true);
tft.print(ru("Пауза"));
a2dp_sink.pause();
}
Serial.println("");
irrecv.resume(); // Receive the next value
}
}
Не в сети
Не в сети
Не в сети
Страницы 1