#include #include /* Pins utilisés : * Si4703 : 2, A4, A5, GND, 3,3 V * Capacimètre : 5 */ // Entrée et sortie pour mesure du CV int input = 5; // Pin d'entrée du fréquencemetre #define VAL_F_MIN 252 // Valeur mini de l'oscillateur #define VAL_F_MAX 933 // Valeur maxi de l'oscillateur #define F_MIN 875.0 // Fréquence basse de la bande FM #define F_MAX 1085.0 // Fréquence haute de la bande FM Si4703_Breakout radio(2, A4, A5); // Déclaration du module FM : resetPin,sdioPin,sclkPin int channel; // Canal écouté void Oscillateur(); float lastfrequency, frequency; void setup() { // Communication sur port série pour calibrage Serial.begin(9600); // Mise en route du module FM, volume 15 radio.powerOn(); radio.setVolume(15); pinMode(input,INPUT); lastfrequency=0; } void loop(){ Oscillateur(); commandeCV(); lastfrequency=frequency; } void Oscillateur(){ FreqCounter::f_comp= 8; // Set compensation to 12 FreqCounter::start(100); // Start counting with gatetime of 100ms while (FreqCounter::f_ready == 0) ; // wait until counter ready frequency=FreqCounter::f_freq; // read result delay(20); } void commandeCV(){ if(fabs(lastfrequency-frequency)>1){ channel=map((int)frequency,VAL_F_MIN,VAL_F_MAX,F_MIN,F_MAX); radio.setChannel(channel); } /* Lignes de code pour calibrage*/ /* Serial.print(channel/10.0); Serial.println(" MHz"); Serial.print((int)frequency); Serial.println(F(" Hz "));*/ }