Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- #include <EEPROMVar.h>
- #include <EEPROMex.h>
- #include <Wire.h>
- #include <TEA5767.h>
- #include <Encoder.h>
- #define INT1 2 //Interrupt 1 encoder rotativo tuning
- #define INT2 3 //Interrupt 2 encoder rotativo tuning
- #define INT3 18 //Interrupt 1 encoder rotativo fine-tuning
- #define INT4 19 //Interrupt 2 encoder rotativo fine-tuning
- #define INT5 20 // Promemoria penultimo
- #define INT6 21 // e ultimo interrup restanti
- #define BUT1 7 // Pulsante del tuning
- #define BUT2 17 // Pulsante del fine tuning
- #define PWM1 6 // Valore 1-255 in uscita pwm per volmetro a 5V
- #define MOLTIPLICATORE 9 // Valore per incrementare da 0v a 5v la frequenza FM su PWM1
- #define FIX_BAND RADIO_BAND_FM
- TEA5767 radio = TEA5767();
- Encoder knobtune(INT1, INT2);
- Encoder knobfine(INT3, INT4);
- float frequenza; // = 10660; //Radio Rock!
- int indiceLettura = 2;
- int indiceScrittura;
- long positiontune;
- long positionfine;
- void setup() {
- delay(1000);
- Serial.begin(115200);
- pinMode(PWM1, OUTPUT);
- Wire.begin();
- radio.init();
- radio.setMono(false);
- radio.setMute(false);
- indiceScrittura = EEPROM.readInt(0);
- leggiEeprom();
- frequenza = constrain(frequenza, 8750, 10850);
- radio.setBandFrequency(FIX_BAND, frequenza);
- mostraFreqenza();
- positiontune = knobtune.read();
- positionfine = knobfine.read();
- }
- void(* Riavvia)(void) = 0;
- void aggiornaFrequenza()
- {
- radio.setBandFrequency(FIX_BAND, frequenza);
- mostraFreqenza();
- memorizzaSuEeprom();
- }
- void memorizzaSuEeprom()
- {
- EEPROM.writeFloat(indiceScrittura, frequenza);
- delay(5);
- }
- void leggiEeprom()
- {
- frequenza = EEPROM.readFloat(indiceLettura);
- delay(5);
- if (frequenza <= 8750 && frequenza >= 10850)
- frequenza = 10660;
- aggiornaFrequenza();
- }
- void cancellaEprom()
- {
- EEPROM.writeInt(0, 2);
- delay(10);
- for (int i = 2; i < 1024; i++)
- {
- EEPROM.writeInt(i, 0);
- delay(5);
- }
- Riavvia();
- }
- void mostraFreqenza(){
- float v_out= frequenza-8750;
- v_out = v_out/MOLTIPLICATORE;
- analogWrite(PWM1,v_out);
- }
- void loop() {
- long tune, fine;
- int sbut1,sbut2;
- sbut1 = digitalRead(BUT1);
- sbut2 = digitalRead(BUT2);
- //if (sbut1 == LOW) radio.seekDown(true);
- //if (sbut2 == LOW) radio.seekUp(true);
- if ((sbut1 == LOW) && (sbut2 == LOW)) cancellaEprom(); //Riavvia();
- //Controllo Tune
- tune = knobtune.read();
- if (tune != positiontune){
- if (tune < positiontune) frequenza=frequenza+25;
- if (tune > positiontune) frequenza=frequenza-25;
- positiontune = tune;
- frequenza = constrain(frequenza, 8750, 10850);
- aggiornaFrequenza();
- }
- //Controllo FineTune
- fine = knobfine.read();
- if (fine != positionfine){
- if (fine < positionfine) frequenza=frequenza+5;
- if (fine > positionfine) frequenza=frequenza-5;
- positionfine = fine;
- frequenza = constrain(frequenza, 8750, 10850);
- aggiornaFrequenza();
- }
- // Spazio per debug information su seriale
- /*
- Serial.print("Tune = ");
- Serial.print(sbut1);
- Serial.print(", Fine = ");
- Serial.print(fine);
- Serial.print("freq = ");
- Serial.print(frequenza);
- Serial.println();
- */
- delay(300);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement