Интернет-магазин «Неглупый Дом»
RDA5807M принимает FM-станции и настраивается по I2C, частота выводится крупными цифрами на TM1637 — цифровой приёмник без аналоговой ручки настройки.
RDA5807M — полностью цифровой FM-тюнер: вся аналоговая часть приёма уже внутри чипа, а настройкой станции и громкостью Arduino управляет отправкой чисел по I2C. Частота задаётся целым числом с шагом 10 кГц — в коде это учтено множителем.
TM1637 просто показывает число. Чтобы вывести "101.5", частота умножается на 10, а точка зажигается программно на нужном разряде через режим вывода с маской точки.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.
// Названия методов библиотеки радио могут отличаться — сверьтесь с примерами
// из Менеджера библиотек, если что-то не компилируется.
#include <Wire.h>
#include <radio.h>
#include <RDA5807M.h>
#include <TM1637Display.h>
RDA5807M radio;
TM1637Display display(9, 10);
int freqTimes10 = 1015; // 101.5 МГц
const int BTN_UP = 2;
const int BTN_DOWN = 3;
void showFrequency() {
display.showNumberDecEx(freqTimes10, 0b01000000, false);
}
void setup() {
Serial.begin(9600);
pinMode(BTN_UP, INPUT_PULLUP);
pinMode(BTN_DOWN, INPUT_PULLUP);
radio.init();
radio.setBand(RADIO_BAND_FM);
radio.setVolume(10);
radio.setMono(false);
radio.setFrequency(freqTimes10 * 10);
display.setBrightness(5);
showFrequency();
}
void loop() {
bool changed = false;
if (digitalRead(BTN_UP) == LOW) {
freqTimes10 += 1;
changed = true;
delay(200);
}
if (digitalRead(BTN_DOWN) == LOW) {
freqTimes10 -= 1;
changed = true;
delay(200);
}
if (changed) {
radio.setFrequency(freqTimes10 * 10);
showFrequency();
Serial.println(freqTimes10 / 10.0);
}
}
Библиотеку "Radio" (mathertel) и TM1637Display ставьте через Менеджер библиотек. Если радио молчит — проверьте антенну и что частота совпадает с реальной станцией.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 171 ₽ 154 ₽ (экономия 17 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.