Мне нужно подключить DFPlayer к ATmega8. Про подключение DFPlayer к Arduino нашёл много статей и примеров, а вот как подключить его к микроконтроллеру что-то не нахожу информации. Сразу хочу сказать что работаю в Programmers Notepad [WinAVR], через Khazama AVR Programmer, загружаю с помощью USBASP совсем недавно. Поэтому боюсь сжечь как сам микроконтроллер, так и модуль.
Проанализировав то, что нашёл, составил схему подключения и переписал код с нескольких источников. В итоге получилось так
// Set Volume And Send it's Serial Command void set_volume( int volume ) { buffer_data[3] = 0x06; buffer_data[6] = volume; send_buffer(); }
// Set a Track (1-3000) to Play void play_track(int track_id) { buffer_data[3] = 0x03; if(track_id < 256) { buffer_data[6] = track_id; } else { buffer_data[5] = track_id / 256; buffer_data[6] = track_id - 256 * buffer_data[6]; } send_buffer(); }
// Set a Track to Play Continuous void play_current_track_continuous(void) { buffer_data[3] = 0x08; buffer_data[6] = current_track_number; send_buffer(); }
// Pause Current Playing Track void pause_current_track(void) { buffer_data[3] = 0x0E; send_buffer(); }
int main(void) { // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33;
// set_volume(10); // play_track(0); }
Правильно ли я сделал подключение, и дописал код?
Добавлено after 31 minute 25 seconds: На схеме не стал дополнительно отображать подтяжку RESET к плюсу питания через резистор, чтобы не перегружать её соединениями.
Добавлено after 2 minutes 37 seconds: Динамик рекомендую высокоомный. У меня при 8-омном динамике часто модуль уходит в защиту, начинает щелкать. Можно, конечно, уменьшить громкость или соответственно обработать звуковые файлы...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
ARV согласен, было с динамиком такое у меня на каком-то файле, когда к Arduino подключал для проверки.
Ну резисторы, вроде хуже не сделают, или могут? Просто хочу перестраховаться...
А про код сказать можете, будет работать? По моему не хватает настроек UART, слишком просто что-то. В других статьях, значительно больше инструкций по UART, разбираюсь пока медленно. Как считаете, можно попробовать записать этот код? Или нужно ещё поискать какие то исходники, чтобы проверить.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
ну да, я ошибся: компилироваться будет, работать не будет
Код:
#define putchar(__c) \ fputc(__c, stdout)
вот так определена эта "функция" в avr-libc поскольку у вас нет сопоставления stdout с USART, соответственно, в результате ничего не выйдет.
что там должно бытть с настройками USART я не очень знаю, потому как магические числа расшифровывать по памяти не умею, и желания ковыряться в даташитах тоже нет. могу рекомендовать мой модуль com_io, добавив который в свой проект вы автоматически получите работоспособный вывод в stdout, то есть вместо всей этой вашей самодеятльности сможете просто применять printf для вывода в ваш mp3-плейер (если, конечно, не с attiny2313 работаете - printf память жрет).
/** Автоматическая инициализация модуля. * Вызывать из основного модуля эту функцию не нужно. */ /// Функция настройки параметров USART и инициализации ввода-вывода. static void __attribute__((naked, used, section(".init7"))) stdio_init(void){
в com_io.h настраиваете требуемые параметры, ориентируясь по комментам com_io.h инклюдите в любой модуль, где нужен ввод-вывод. com_io.c добавляете в список компилируемых файлов проекта. компилируете, наслаждаетесь.
Код:
#include "com_io.h"
int main(void){ printf("\nHello, world!"); }
если вы подключили к своему МК терминал, то в нем увидите результат.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Module's serial port is 3.3V TTL level, so the default interface level is 3.3V. If the MCU system is 5V. It is recommended connect a 1K resistor in series.
Правильно ли я понимаю что USART у меня от 2 батареек не будет работать, значит напряжение нужно уже 4.5 вольт, я не видел настроек для понижения регистром, получается я могу только подключить резистор на 1 кОм?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения