Étape 3: Code
Le code de l’Arduino est comme ci-dessous :Original du récepteur FM Arduino avec TEA5767 http://www.electronicsblog.net
Modifié par Jingfeng Liu
LinkSprite.com
//
#include < Wire.h >
#include < LiquidCrystal.h >
unsigned char search_mode = 0 ;
int b = 0 ;
int c = 0 ;
#define Button_next 6
#define Button_prev 7
unsigned char frequencyH = 0 ;
unsigned char frequencyL = 0 ;
unsigned int frequencyB ;
double fréquence = 0 ;
double freq_available = 0 ;
Innovente lcd (12, 11, 5, 4, 3, 2) ;
void setup() {}
Wire.Begin() ;
LCD.Begin (16, 2) ;
boutons
pinMode (entrée, Button_next) ;
digitalWrite (Button_next, élevé) ; Tirez vers le haut la résistance
pinMode (entrée, Button_prev) ;
digitalWrite (Button_prev, élevé) ; Tirez vers le haut la résistance
fréquence = 87,5 ; à partir de fréquence
frequencyB = 4 *(frequency*1000000+225000)/32768 ; calcul de mot PLL
frequencyH = frequencyB >> 8 ;
frequencyL = frequencyB & 0XFF ;
Delay(100) ;
Wire.beginTransmission(0x60) ; écrire à TEA5767
Wire.Write(frequencyH) ;
Wire.Write(frequencyL) ;
Wire.Write(0xB0) ;
Wire.Write(0x10) ;
Wire.Write(0x00) ;
Wire.endTransmission() ;
Delay(100) ;
}
void loop()
{
tampons d’unsigned char [5] ;
lcd.setCursor (0, 0) ;
Wire.requestFrom(0x60,5) ; lecture TEA5767
Si (Wire.available())
{
pour (int i = 0; i < 5; i ++) {}
tampon [i] = Wire.read() ;
}
freq_available = (((buffer [0] & 0x3F) << 8) + tampon [1]) * 32768/4-225000 ;
LCD.Print ("FM") ;
LCD.Print((freq_available/1000000)) ;
frequencyH = ((buffer [0] & 0x3F)) ;
frequencyL = tampon [1] ;
Si {(search_mode)
Si (buffer [0] & 0 x 80) search_mode = 0 ;
}
Si (search_mode == 1) lcd.print ("SCAN") ;
else {}
LCD.Print("") ;
}
lcd.setCursor (0, 1) ;
LCD.Print ("niveau:") ;
LCD.Print ((tampon [3] >> 4)) ;
LCD.Print ("/ 16") ;
Si (tampon [2] & 0 x 80) lcd.print ("stéréo") ;
else lcd.print ("MONO") ;
}
boutons de lecture
button_next / / /
Si (! digitalRead(Button_next) & &! b) {}
fréquence =(freq_available/1000000) + 0.05 ;
frequencyB = 4 * (fréquence * 1000000 + 225000) / 32768 + 1 ;
frequencyH = frequencyB >> 8 ;
frequencyL = frequencyB & 0XFF ;
Wire.beginTransmission(0x60) ;
Wire.Write(frequencyH) ;
Wire.Write(frequencyL) ;
Wire.Write(0xB0) ;
Wire.Write(0x1F) ;
Wire.Write(0x00) ;
Wire.endTransmission() ;
//////////////////////
b = 100 ;
};
Si (! digitalRead(Button_next) & & b == 1) {}
scannnn UP
search_mode = 1 ;
Wire.beginTransmission(0x60) ;
Wire.Write(frequencyH+0x40) ;
Wire.Write(frequencyL) ;
Wire.Write(0xD0) ;
Wire.Write(0x1F) ;
Wire.Write(0x00) ;
Wire.endTransmission() ;
/////////////////
b = 100 ;
};
Si (! b == 0) b--;
button_prev / / /
Si (! digitalRead(Button_prev) & &! c) {}
fréquence =(freq_available/1000000)-0,05 ;
frequencyB = 4 * (fréquence * 1000000 + 225000) / 32768 + 1 ;
frequencyH = frequencyB >> 8 ;
frequencyL = frequencyB & 0XFF ;
Wire.beginTransmission(0x60) ;
Wire.Write(frequencyH) ;
Wire.Write(frequencyL) ;
Wire.Write(0xB0) ;
Wire.Write(0x1F) ;
Wire.Write(0x00) ;
Wire.endTransmission() ;
c = 100 ;
};
Si (! digitalRead(Button_prev) & & c == 1) {}
scannnn vers le bas
search_mode = 1 ;
Wire.beginTransmission(0x60) ;
Wire.Write(frequencyH+0x40) ;
Wire.Write(frequencyL) ;
Wire.Write(0x50) ;
Wire.Write(0x1F) ;
Wire.Write(0x00) ;
Wire.endTransmission() ;
c = 100 ;
};
Si (! c == 0) c ;
////////////////////
}
Après que nous avons téléchargé le code pour Arduino, nous pouvons Appuyez sur les deux boutons de balayage vers le haut et balayage vers le bas les canaux pour rechercher les stations.