09.06.2017, 22:07
meine erstes Radio welches über einen Arduino gesteuert wird. Ein I2C-Bus verbindet TEA5767-Baustein, Display und Arduino.
[attachment=39345]
[attachment=39346]
[attachment=39347]
[attachment=39348]
[attachment=39349]
Der aktuelle Sketch ist aus dem Netz, ich hab lediglich das Display angepasst.
[attachment=39345]
[attachment=39346]
[attachment=39347]
[attachment=39348]
[attachment=39349]
Der aktuelle Sketch ist aus dem Netz, ich hab lediglich das Display angepasst.
Code:
/* Arduino Digital FM Radio with build in speakers
libraries & schematic: http://www.ardumotive.com/project-corner/arduino-digital-fm-radio
dev: Michalis Vasilakis // Date 24/2/2015 // Version 1.0
Many thanks to nicuflorica.blogspot.ro */
//Libraries:
#include <SPI.h>
//#include <Adafruit_GFX.h>
//#include <Adafruit_PCD8544.h>
#include <TEA5767.h>
#include <Wire.h>
#include <Button.h>
#include <LiquidCrystal_I2C.h>
//Constants:
TEA5767 radio; //Pinout SLC and SDA - Arduino pins A5 and A4
Button btn_forward(11, PULLUP); //Search station up button
Button btn_backward(12, PULLUP);//Search station down button
//Variables:
LiquidCrystal_I2C lcd(0x3F,16,2);
double old_frequency;
double frequency;
int search_mode = 0;
int search_direction;
unsigned long last_pressed;
unsigned char buf[5];
int stereo;
int signal_level;
double current_freq;
unsigned long current_millis = millis();
void setup () {
//Init
Wire.begin();
radio.init();
radio.set_frequency(88.0); //On power on go to station 88.0
Serial.begin(9600);
lcd.begin();
lcd.clear();
}
void loop () {
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("Jupp "); lcd.print(current_freq); lcd.print(" ");
lcd.setCursor(0,1);
if (stereo) lcd.print("STEREO "); else lcd.print("MONO ");
lcd.print("S: ");
lcd.print(signal_level);
lcd.print(" ");
}
delay (500);
//When button pressed, search for new station
if (search_mode == 1) {
if (radio.process_search (buf, search_direction) == 1) {
search_mode = 0;
}
}
//If forward button is pressed, go up to next station
if (btn_forward.isPressed()) {
last_pressed = current_millis;
search_mode = 1;
search_direction = TEA5767_SEARCH_DIR_UP;
radio.search_up(buf);
delay(200);
}
//If backward button is pressed, go down to next station
if (btn_backward.isPressed()) {
last_pressed = current_millis;
search_mode = 1;
search_direction = TEA5767_SEARCH_DIR_DOWN;
radio.search_down(buf);
delay(200);
}
delay(100);
}