Для этого нам понадобится:
TEA5767: http://ali.ski/5kmDOO
Скетч: https://yadi.sk/d/mpoiVteF33wMEz
Библиотека TEA5767: https://yadi.sk/d/XtjemqVy33wMbj
Библиотека для Button: https://yadi.sk/d/-WspeGopGnshCA
Даташит:https://yadi.sk/i/K7Uh7nW133wMjf
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
В данном примере рассмотрим реализацию FM радио на ардуино с помощью специального датчика TEA5767.
Данный датчик подключается к Arduino по шине i2c.
Сам даташит датчика выложен по ссылке приведенной выше, можете скачать и ознакомиться с возможностями данного датчика.
Схема подключения всех компонентов приведена в начале статьи.
После подключения всех компонентов по схеме необходимо скопировать программный код приведенный ниже и вставить его в программу Arduino IDE и загрузить этот программный код в саму плату Arduino.
#include <TEA5767.h> // from https://github.com/andykarpov/TEA5767 #include <Wire.h> #include <Button.h> // from http://arduino-info.wikispaces.com/HAL-LibrariesUpdates #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // adress is 0x20 for LCD16x2 // adapted sketch by niq_ro from http://nicuflorica.blogspot.ro // version 2.0 TEA5767 Radio; double old_frequency; double frequency; int search_mode = 0; int search_direction; unsigned long last_pressed; Button btn_forward(11, INPUT); Button btn_backward(12, INPUT); void setup() { Wire.begin(); Radio.init(); Radio.set_frequency(101.2); Serial.begin(9600); lcd.init(); lcd.backlight(); //backlight is now ON lcd.begin(16,2); lcd.clear(); } void loop() { unsigned char buf[5]; int stereo; int signal_level; double current_freq; unsigned long current_millis = millis(); if (Radio.read_status(buf) == 1) { current_freq = floor (Radio.frequency_available (buf) / 100000 + .5) / 10; stereo = Radio.stereo(buf); signal_level = Radio.signal_level(buf); lcd.setCursor(0,0); lcd.print("FM: "); lcd.print(current_freq); lcd.print("MHz "); lcd.setCursor(0,1); if (stereo) lcd.print("STEREO "); else lcd.print("MONO "); lcd.print(signal_level); lcd.print("/15 "); } if (search_mode == 1) { if (Radio.process_search (buf, search_direction) == 1) { search_mode = 0; } } if (btn_forward.isPressed()) { last_pressed = current_millis; search_mode = 1; search_direction = TEA5767_SEARCH_DIR_UP; Radio.search_up(buf); delay(500); } if (btn_backward.isPressed()) { last_pressed = current_millis; search_mode = 1; search_direction = TEA5767_SEARCH_DIR_DOWN; Radio.search_down(buf); delay(500); } delay(100); }
Скетч:https://yadi.sk/d/NdwWVh5Hf-P8pw
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.