Exciteur Radio amateur 25 à 1060 MHz

Exciteur HF – UHF

Le projet est commandé par un Arduino UNO ou NANO.

Le schéma synoptique du générateur HF

 

Pour avoir la DATA d'un POS,   ( POS 100 par exemple)

tapez sur Google POS 100 Mini-Circuits





Utilisation

Brancher le câble I2C entre le contrôleur et l’exciteur

Allumer le contrôleur

A la première sous tension l’appareil passe en mode paramétrage

Vous faire le choix du POS par a touche (#) du clavier

Validation par la touche (*)

Note :

Pour des raisons techniques du TSA5511 le pas est de 12.5 KHz du POS 25 au POS 400

et de 25 KHz pour les autres.

Apres validation la fréquence centrale du POS est affichée et l’exciteur émet sur cette fréquence.

Exemple pour un POS 200 la fréquence sera de 100 MHz

Ont peut ajuster la fréquence par les touches ( # ) pour monter d’un pas et ( *)  pour reculer d’un pas

Pour ajuster la fréquence plus vite appuyer sur le bouton noir et entrez la fréquence sans les décimales

Valiser par (#)

Ensuite ajuster la fréquence pas par pas.

Pour changer la Fréquence âpres avoir changé de POS appuyez sur le bouton rouge pour revenir au paramétrage

-------------------------------------------------------------------------------------------

 


Programme

#include
#include
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include /* Clavier est un programme qui affiche la touche activée d'un clavier matriciel dans le moniteur série */
#include                      // appel de la bibliothèque
#define L1 6                                    // affectation des broches
#define L2 7
#define L3 8
#define L4 9
#define C1 10
#define C2 11
#define C3 12
int touche;

const byte lignes = 4;                    // 4 lignes
const byte colonnes = 3;               // 3 colonnes

char code[lignes][colonnes] = {   // code des touches
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};

byte broches_lignes[lignes] = {L1, L2, L3, L4};                   // connexion des lignes
byte broches_colonnes[colonnes] = {C1, C2, C3};              // connexion des colonnes

Keypad clavier = Keypad( makeKeymap(code), broches_lignes, broches_colonnes, lignes, colonnes);              // création de l'objet clavier

#define Plus 13  // Bouton frequence +
#define Moin 3  // Bouton frequence -
#define Led 4  // Led
int msb;
int msb2;
int lsb;
unsigned int freq ;
int pas ;
int r = 0;
float fr ;
float pasfr ;
int pompe = 174;
int adress = 92;
int car;
int para;
int Bmoin; int Bplus; int POS_XX;
float fmaxi; float fmini;
int flagP = 0; int flagM = 0;
unsigned long frx;
int plsb; int pmsb; int pmsb2; int cont;
unsigned long pa_2; int del = 100; int tt = 5;
String FR_clav = "";
String carn = "";String deco;String deco2;
int mul [4] = {1, 10, 100, 1000};
int nb; int FRE2;
float FRx;
float FR;
int a;
int dec = 0;
int FRE;
double multi;
int dec2;
int FQ; // Fréquence du Quartz
int lmsb;
int lmsb2;
int llsb;
int lmsbb;
int lmsbb2;
int llsbb;

//*************************** Fin de déclarations ************************************
void setup()
{
// CONFIGURATIONS /

Serial.begin(9600); //Vitesse du port serie.
Wire.begin();
lcd.begin();
lcd.backlight();
Wire.begin(0x61);
pinMode(Plus, INPUT);
pinMode(Moin, INPUT);
pinMode(Led, OUTPUT);
lcd.clear();
lcd.setCursor(0, 0);
//zero_mem();// Pour debug
lect_mem ();// Pour debug
lecture_EPROM ();
debuge();
}
//*******************************************************************
//                      DEBUT DU PROGRAMME                          *
//*******************************************************************

void loop()
{
rr:
if ( fr == 0) { //Si fr = 0 première mise en service ont va au paramètres

Parametres();
}

calcul(fr);
calculHEX(freq);
imp_fr();       // Imprime résultat
FR_I2c(); //   Envoie de la fréquence au TSA551 en I2C

r = r + 1;
//****************************** Saisie Touche  (#) ************************
encore:
if (r == 1) {
BP();
// ******test si Plus *************
if (Bplus == 1) {
digitalWrite(Led, HIGH);
fr = fr + pasfr;
if (fr <= fmaxi) {
freq = freq + 1; calculHEX(freq); dec = dec + dec2; calcul_dec_plus(); Ecrit_dec();
imp_fr();       // Imprime résultat
FR_I2c(); //   Envoie de la fréquence au TSA551 en I2C
}
else {
fr = fr - pasfr; calcul(fr);
Serial.println("Limite de fréquence haute atteinte");
}
}
//****************************** Saisie Touche (*)********************
sortp:
// ******test si Moin *************
if (Bmoin == 1) {
digitalWrite(Led, HIGH);
fr = fr - pasfr;
if (fr >= fmini) {
//calcul(fr);
freq = freq - 1; calculHEX(freq); dec = dec - dec2; calcul_dec_moin(); Ecrit_dec();
imp_fr();       // Imprime résultat
FR_I2c(); //   Envoie de la fréquence au TSA551 en I2C
flagP = 0;
}
else {
fr = fr + pasfr; calcul(fr);
Serial.println("Limite de fréquence basse atteinte");
}
}
digitalWrite(Led, LOW);

//****************************** Saisie bouton Fréquence **********************
if (digitalRead (Plus) == 0 && digitalRead (Moin) == 1) {
er:
Entrez_FR();
//*********************** Controle si hors limite de fréquence *********************
if (fr < fmini || fr > fmaxi) {
Serial.println("Erreur de saisie " );
goto er;
}
//**********************************************************************************
calcul(fr);
imp_fr();       // Imprime résultat
FR_I2c(); //   Envoie de la fréquence au TSA551 en I2C
}
//****************************** Saisie bouton Parametre *****************************
BPpara();
if ( para == 1) {
Parametres(); // aller aux parametres
imp_fr();       // Imprime résultat
FR_I2c(); //   Envoie de la fréquence au TSA551 en I2C
}
//****************************** ****************************************************
goto encore;
}
digitalWrite(Led, LOW);
}
//*******************************************************
//                 FIN PROGRAMME                        *
//*******************************************************

//************** Emplacement des sous programme*************

//***************************************************************
//*                       FIN Choix POS                         *
//***************************************************************
void Parametres() {

para = 0;
FQ1:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("FQ = 0.8 MHz ");
Serial.println("FQ = 0.8 MHz ");
FQ11:
BP();
if (Bmoin == 1) {
pasfr = 0.0125; FQ = 0; Lect_pasfr(); Ecrit_dec(); EEPROM.write(15, FQ);
dec = 0; Ecrit_dec();deco2="";retenue(); goto par;
}
if (Bplus == 1) {
goto FQ2;
}
goto FQ11;
FQ2:
lcd.setCursor(0, 0); lcd.print("FQ = 1.6 MHz ");
Serial.println("FQ = 1.6 MHz ");
FQ22:
BP();
if (Bmoin == 1) {
pasfr = 0.025; FQ = 100; Lect_pasfr(); Ecrit_dec(); EEPROM.write(15, FQ);
dec = 0; Ecrit_dec();deco2="0";retenue(); goto par;
}
if (Bplus == 1) {
goto FQ1;
}
goto FQ22;
//---------------------------------------------------------------
par:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 25 "); lcd.print("        1");
lcd.setCursor(0, 1); lcd.print("Fr 15 - 25   MHz");
Serial.print("POS 25 "); Serial.println("           1");
Serial.println("Fr 15 - 25 MHz");
pasn:
BP(); {
if (Bplus == 1) {
goto par2;
}
if (Bmoin == 1) {
fr = 20; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 1; EEPROM.write (2, POS_XX);
Ecrit_limit(); calcul(fr);
return;
}
}
goto pasn;

//***********************************************************
par2:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 50 "); lcd.print("        2");
lcd.setCursor(0, 1); lcd.print("Fr 25 - 50   MHz");
Serial.print("POS 25 "); Serial.println("           2");
Serial.println("Fr 25 - 50 MHz");
pasn2:
BP(); {
if (Bplus == 1) {
goto par3;
}
if (Bmoin == 1) {
fr = 37; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 2; EEPROM.write (2, POS_XX);
Ecrit_limit(); calcul(fr);
return;
}
}
goto pasn2;

//***********************************************************
par3:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 75 "); lcd.print("        3");
lcd.setCursor(0, 1); lcd.print("Fr 37 - 75   MHz");

Serial.print("POS 75 "); Serial.println("          3");
Serial.println("Fr 37 - 75 MHz");
pasn3:
BP(); {
if (Bplus == 1) {
goto par33;
}
if (Bmoin == 1) {
fr = 56; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 3; EEPROM.write (2, POS_XX);
Ecrit_limit();   calcul(fr);
return;
}
}
goto pasn3;
//***********************************************************
par33:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 100 "); lcd.print("       4");
lcd.setCursor(0, 1); lcd.print("Fr 50 - 100  MHz");

Serial.print("POS 100 "); Serial.println("          4");
Serial.println("Fr 50 - 100 MHz");
pasn33:
BP(); {
if (Bplus == 1) {
goto par4;
}
if (Bmoin == 1) {
fr = 75; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 4; EEPROM.write (2, POS_XX);
Ecrit_limit();    calcul(fr);
return;
}
}
goto pasn33;
//***********************************************************
par4:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 150 "); lcd.print("       5");
lcd.setCursor(0, 1); lcd.print("Fr 75 - 150  MHz");

Serial.print("POS 150 "); Serial.println("          5");
Serial.println("Fr 75 - 150 MHz");
pasn4:
BP(); {
if (Bplus == 1) {
goto par5;
}
if (Bmoin == 1) {
fr = 112; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 5; EEPROM.write (2, POS_XX);
Ecrit_limit();  calcul(fr);
return;
}
}
goto pasn4;
//***********************************************************
par5:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 200 "); lcd.print("       6");
lcd.setCursor(0, 1); lcd.print("Fr 100 - 200 MHz");

Serial.print("POS 200 "); Serial.println("          6");
Serial.println("Fr 100 - 200 MHz");
pasn5:
BP(); {
if (Bplus == 1) {
goto par6;
}
if (Bmoin == 1) {
fr = 150; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 6; EEPROM.write (2, POS_XX);
Ecrit_limit();  calcul(fr);
return;
}
}
goto pasn5;
//***********************************************************
par6:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 300 "); lcd.print("       7");
lcd.setCursor(0, 1); lcd.print("Fr 150 - 280 MHz");

Serial.print("POS 300 "); Serial.println("          7");
Serial.println("Fr 150 - 280 MHz");


pasn6:
BP(); {
if (Bplus == 1) {
goto par7;
}
if (Bmoin == 1) {
fr = 205; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 7; EEPROM.write (2, POS_XX);
Ecrit_limit();  calcul(fr);
return;
}
}
goto pasn6;
//***********************************************************
par7:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 400 "); lcd.print("       8");
lcd.setCursor(0, 1); lcd.print("Fr 200 - 380 MHz");

Serial.print("POS 400 "); Serial.println("          8");
Serial.println("Fr 200 - 380 MHz");


pasn7:
BP(); {
if (Bplus == 1) {
goto par8;
}
if (Bmoin == 1) {
fr = 280; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 8; EEPROM.write (2, POS_XX);
Ecrit_limit();   calcul(fr);
return;
}
}
goto pasn7;
//***********************************************************
par8:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 535 "); lcd.print("       9");
lcd.setCursor(0, 1); lcd.print("Fr 300 - 525 MHz");

Serial.print("POS 535 "); Serial.println("          9");
Serial.println("Fr 300 - 525 MHz");
if (FQ == 0) {
goto libre;
}

pasn8:
; BP(); {
if (Bplus == 1) {
goto par9;
}
if (Bmoin == 1) {
fr = 375; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 9; EEPROM.write (2, POS_XX);
Ecrit_limit();   calcul(fr);
return;
}
}
goto pasn8;
//***********************************************************
par9:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 765 "); lcd.print("      10");
lcd.setCursor(0, 1); lcd.print("Fr 485 - 765 MHz");

Serial.print("POS 765 "); Serial.println("           10");
Serial.println("Fr 485 - 765 MHz");


pasn9:
BP(); {
if (Bplus == 1) {
goto par91;
}
if (Bmoin == 1) {
fr = 522.00; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 10; EEPROM.write (2, POS_XX);
Ecrit_limit();  calcul(fr);
return;
}
}
goto pasn9;

//***********************************************************
par91:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("POS 1060 "); lcd.print("      11");
lcd.setCursor(0, 1); lcd.print("Fr 750 - 1060 MHz");

Serial.print("POS 1060 "); Serial.println("           11");
Serial.println("Fr 750 - 1060 MHz");


pasn91:
BP(); {
if (Bplus == 1) {
goto libre;
}
if (Bmoin == 1) {
fr = 905.00; FRE = fr; dec = 0;FRE2=0;Ecrit_dec();
POS_XX = 11; EEPROM.write (2, POS_XX);
Ecrit_limit();  calcul(fr);
return;
}
}
goto pasn91;

//***********************************************************
libre:

lcd.clear();
lcd.setCursor(0, 0); lcd.print("Oscillateur OM "); lcd.print("   12");
Serial.print("Oscillateur OM "); Serial.println("      11");
if (FQ == 0){
lcd.setCursor(0, 1); lcd.print("Fr MAXI 819 MHz");
Serial.println("Fréquence MAXI 819 MHz");
}
else {
lcd.setCursor(0, 1); lcd.print("Fr MAXI 1300 MHz");
Serial.println("Fréquence MAXI 1300 MHz");
}
libre1:
BP(); {
if (Bplus == 1) {
goto par;
}
if (Bmoin == 1) {
POS_XX = 12; EEPROM.write (2, POS_XX);Ecrit_limit();Entrez_FR();
return;
}
}
goto libre1;
}
//***************************************************************
//*                            FIN Choix POS                    *
//***************************************************************

//***************************************************************
//*                  Ecrit PAS Decimale en memoire             *
//***************************************************************
void Ecrit_dec()
{ //Serial.print("Ecrit dec   ");Serial.print(dec);
pa_2 = dec ;
pmsb = pa_2 / 256; EEPROM.write(7, pmsb);
pmsb2 = 256 * pmsb;
plsb = pa_2 - pmsb2; EEPROM.write (8, plsb);
EEPROM.write(16,FRE2);
}

//***************************************************************
//*                  Lecture PAS  Décimale en memoire          *
//***************************************************************
void Lect_dec()
{
pmsb = EEPROM.read(7); plsb = EEPROM.read(8);
pmsb = pmsb * 256;
pa_2 = pmsb + plsb;
dec = pa_2;
FRE2 = EEPROM.read(16);
Serial.print("dec **  "); Serial.println(dec);
}

//*******************************************************************
//                lecture_EPROM Recup des données à l'arret
//*******************************************************************
void lecture_EPROM ()
{
POS_XX = EEPROM.read(2); FQ = EEPROM.read(15);
Lect_pasfr();
lect_fr_mem();
Lect_dec();
Lect_limites();
Lect_dec();
FRE2 = EEPROM.read(16);
if (FQ == 0){deco2=""; }
else {deco2="0";}
fr = FRx;
FRE = fr;

}

//***************************************************************
//*                  Lecture PAS  fréquence en memoire          *
//***************************************************************
void Lect_pasfr()
{
if (FQ == 0) {
pasfr = .0125; multi = 10000; dec2 = 125;
}
else {
pasfr = .025; multi = 1000; dec2 =  25;
}
}
//*******************************************************
//                Impression                            *
//*******************************************************

void imp_fr()
{
lcd.setCursor(0, 0);
lcd.print("fr:"); lcd.print(FRE); lcd.print(".");lcd.print(FRE2);lcd.print(deco);lcd.print(dec);lcd.print(deco2);lcd.print("MHz");
lcd.setCursor(0, 1);
lcd.print("HEXA  "); lcd.print(msb, HEX); lcd.print(" ");
lcd.print(lsb, HEX); lcd.print(" ");
Serial.print ("Fréquence  :  "); Serial.print (FRE); Serial.print ("."); Serial.print (FRE2);Serial.print (deco); Serial.print (dec); Serial.print (deco2);Serial.print (" MHz   ");// Serial.print (" freq   "); Serial.print (fr, 4);
Serial.print ("  Code Hexa  "); Serial.print(msb, HEX); Serial.println(lsb, HEX);

}
//****************************************************
void receiveEvent(int bytes)
{
car = Wire.read();    // read one character from the I2C
}
//*******************************************************
//              à zero des memoires DEBUG               *
//*******************************************************
void zero_mem() {
EEPROM.write (0, 0);
EEPROM.write (1, 0);
EEPROM.write (2, 0);
EEPROM.write (3, 0);
EEPROM.write (4, 0);
EEPROM.write (5, 0);
EEPROM.write (6, 0);
EEPROM.write (7, 0);
EEPROM.write (8, 0);
EEPROM.write (9, 0);
EEPROM.write (10, 0);
EEPROM.write (11, 0);
EEPROM.write (12, 0);
EEPROM.write (15, 0);
}
//*********************************************************
//                   Getion des boutons                   *
//*********************************************************
void BP()
{ Bplus = 0; Bmoin = 0; lect_clav();
if (touche == 35) //++++++++Touche (#)+++++++++++
{
Bplus = 1; digitalWrite(Led, HIGH); return;
}

if (touche == 42) //++++++++Touche (*)+++++++++++
{
Bmoin = 1; digitalWrite(Led, HIGH); return;
}
digitalWrite(Led, LOW); return;
}
//**************************************************************
void BPpara()
{

if (digitalRead (Moin) == 0 )
{
para = 1;// return;
}
return;
}
//***********************************************************
void lect_mem ()
{
for ( int i = 0; i < 16; i++) {
Serial.print (i); Serial.print ("    ");
Serial.println( EEPROM.read(i));
}
}


//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void lect_clav() {
touche = clavier.getKey();          // acquisition de la touche

if (touche != NO_KEY)                 // si appui sur une touche
{

}

}
//------------------------------------------------------------------
//             Entré de la fréquence au clavier
//------------------------------------------------------------------
void Entrez_FR()

{ lcd.clear();
Serial.print ("Entrez une fréquence  :  ");
lcd.setCursor(0, 0); lcd.print("Entrez une fr");
er:
nb = 0; carn = ""; fr = 0; int b;
{ //nb = 0; carn = ""; fr = 0; int b;
clav:
touche = clavier.getKey();          // acquisition de la touche

if (touche != NO_KEY)                 // si appui sur une touche
{
if (touche > 47 && touche < 58) {
touche = touche - 47;
}
}
if (touche == 0 || touche == 42)
{
goto clav;
}
if (touche == 35)
{
for (int i = nb - 1; i > -1; i = i - 1)
{
a = carn. charAt (i); a = a - 48;
fr = fr + (a * mul[b]);
b = b + 1;
}
Serial.println();
calcul(fr); FRE = fr; dec = 0;FRE2=0; Lect_pasfr(); Ecrit_dec();retenue();
return;
}
//lcd.setCursor(0, 1);
if (nb < 4) {
carn = carn + (touche - 1 ); Serial.print (touche - 1);
lcd.setCursor(nb, 1);
lcd.print (touche - 1);
nb = nb + 1;
goto clav;
}
goto clav;
}
}
//------------------------------------------------------------------
//           Calcul du code Hexa à partir de la fréquence
//------------------------------------------------------------------
void calcul(float a)
{
float Mixeur;
if (FQ == 0) {
Mixeur = 0.8 / 512;
}
else {
Mixeur = 1.6 / 512;
}

FR = a / 8;
freq = FR / Mixeur;
//Serial.println(freq);
calculHEX(freq);// Serial.print(msb, HEX); Serial.println(lsb, HEX);
EEPROM.write(0, msb); EEPROM.write(1, lsb);
}
//------------------------------------------------------------------
int calculHEX(unsigned int a)// Calcul le fréquence en HEXA msb et lsb
{
int msb2;
msb = freq / 256;
msb2 = msb * 256;
lsb = freq - msb2;
//Serial.print(msb, HEX); Serial.println(lsb, HEX);
EEPROM.write(0, msb); EEPROM.write(1, lsb);
return ;
}
//------------------------------------------------------------------
//    Calcul de la fréquence à partir du code Hexa
//------------------------------------------------------------------
void calcul_fr()
{
float Mixeur;
if (FQ == 0) {
Mixeur = 0.8 / 512;
}
else {
Mixeur = 1.6 / 512;
}
FR = freq * Mixeur;
FRx = FR * 8;
}
//------------------------------------------------------------------
void lect_fr_mem()
{
msb = EEPROM.read(0);  lsb = EEPROM.read(1); dec = EEPROM.read(1);
msb = msb * 256;
freq = msb + lsb;// Serial.println(freq);
calcul_fr();
}
//------------------------------------------------------------------
//   Envoie de la fréquence au TSA551 en I2C
//------------------------------------------------------------------
void FR_I2c()
{
Wire.beginTransmission (0x60); // transmettre au dispositif # 96
Wire.write (msb);
Wire.write (lsb);
Wire.write (pompe);
Wire.onReceive(receiveEvent);
Wire.endTransmission ();
delay(del);
}
//------------------------------------------------------------------
//                             Ecrit_limit
//------------------------------------------------------------------
void Ecrit_limit()
{
if (POS_XX == 1)
{
fmini = 15; fmaxi = 25;
Ecrit_limites();
}
if (POS_XX == 2)
{
fmini = 25; fmaxi = 50;
Ecrit_limites();
}
if (POS_XX == 3)
{
fmini = 37; fmaxi = 75;
Ecrit_limites();
}
if (POS_XX == 4)
{
fmini = 50; fmaxi = 100;
Ecrit_limites();
}
if (POS_XX == 5)
{
fmini = 75; fmaxi = 150;
Ecrit_limites();
}
if (POS_XX == 6)
{
fmini = 100; fmaxi = 200;
Ecrit_limites();
}
if (POS_XX == 7)
{
fmini = 150; fmaxi = 300;
Ecrit_limites();
}
if (POS_XX == 8)
{
fmini = 200; fmaxi = 380;
Ecrit_limites();
}
if (POS_XX == 9)
{
fmini = 300; fmaxi = 525;
Ecrit_limites();
}
if (POS_XX == 10)
{
fmini = 485; fmaxi = 765;
Ecrit_limites();
}
if (POS_XX == 11)
{
fmini = 750; fmaxi = 1060;
Ecrit_limites();
}
if (POS_XX == 12 && FQ == 0)
{
fmini = 0; fmaxi = 819;
Ecrit_limites();
}
if (POS_XX == 12 && FQ == 100) {
fmini = 0; fmaxi = 1300;
Ecrit_limites();    
}
}
//------------------------------------------------------------------
void Ecrit_limites()
{ //Serial.print("Ecrit dec   ");Serial.print(dec);
pa_2 = fmaxi ;
lmsb = pa_2 / 256; EEPROM.write(11, lmsb);
lmsb2 = 256 * lmsb;
llsb = pa_2 - lmsb2; EEPROM.write (12, llsb);

pa_2 = fmini ;
lmsbb = pa_2 / 256; EEPROM.write(13, lmsbb);
lmsbb2 = 256 * lmsbb;
llsbb = pa_2 - lmsbb2; EEPROM.write (14, llsbb);
// Lect_dec();
}

//***************************************************************
//*                  Lecture PAS  Décimale en memoire          *
//***************************************************************
void Lect_limites()
{
lmsb = EEPROM.read(11); llsb = EEPROM.read(12); lmsbb = EEPROM.read(13); llsbb = EEPROM.read(14);
lmsb = lmsb * 256;
pa_2 = lmsb + llsb;
fmaxi = pa_2;

lmsbb = lmsbb * 256;
pa_2 = lmsbb + llsbb;
fmini = pa_2;
}
//***************************************************************
void debuge()
{
Serial.print("limite haute   "); Serial.print(fmaxi); Serial.print("  limite Basse   "); Serial.println(fmini);
Serial.print("dec            "); Serial.println(dec);
Serial.print("Fréquence Quarz   "); Serial.println(FQ);
Serial.print("FRE   "); Serial.println(FRE);
}
//***************************************************************
void calcul_dec_plus()
{deco = "";
if ( dec == 0) {
FRE2 = FRE2 + 1;//deco="00";
}
if ( dec == 100 || dec == 1000) {
dec = 0; FRE2 = FRE2 + 1;retenue();
}
if (FRE2 == 10) {
FRE2 = 0;
FRE = FRE + 1;retenue();
}
if ( dec == 0){
retenue();
}

EEPROM.write(16, FRE2);
//   Serial.print("dec   "); Serial.print(dec); Serial.print("   FRE2   "); Serial.print(FRE2);  Serial.print("   FRE   "); Serial.println(FRE);
}
//***************************************************************
void calcul_dec_moin() {deco = "";
if (dec == -25) {
dec = 75; FRE2 = FRE2 - 1; //retenue();
}
if (dec == -125){
dec = 875; FRE2 = FRE2 - 1;// retenue();
}
if (FRE2 < 0) {
FRE2 = 9; FRE = FRE - 1;//retenue();
}
else {deco = "";}
if ( dec == 0 ){
retenue();
}

EEPROM.write(16, FRE2);
//Serial.print("dec   "); Serial.print(dec); Serial.print("   FRE2   "); Serial.print(FRE2);  Serial.print("   FRE   "); Serial.println(FRE);
}
//***************************************************************
void retenue()
{
// Serial.print(" Deco2" );Serial.println(deco2);
if (deco2 == ""){
deco="00";
}
if (deco2 == "0"){
deco="0";
}

}

Microsoft Word - Matériel.pdf

Vidéo  :  https://youtu.be/twsker0ulk4

CE SITE A ÉTÉ CONSTRUIT EN UTILISANT