merci pour ton intérêt a mon souci .
j ai regarder le message épingler mais je n est trouver les balises ni les smilles j espéré que sa ne va rien faire de mal .
donc voici le code :
// ---------- Initialisation des variables ---------------------
#include <OneWire.h> // bibliotheque sond
#include <LiquidCrystal.h> // bibliotheque lcd
#include <FreqCounter.h> //Inclure la librairie de fréquence
// Variable leds
const int led_rouge = 3;
const int led_bleu = 7;
const int led_vert = 8;
const int led_jaune = 2;
const int ventilateur = 13;
// Variables utilisées
unsigned long frq; //fréquence mesurée
int cnt; //nombre de mesures réalisées
int encoches=1; //16; //nombre d encoches de la roue codeuse (1 ou plus)
float trmin; //vitesse de rotation en tour/
// variable lcd
LiquidCrystal lcd(12,11,10,9,1,0); //affectation des broche digital
// ton de l alarme
int note = 1000;
// Variables propres au DS18B20
const int DS18B20_PIN=4;
const int DS18B20_ID=0x28;
// Déclaration de l'objet ds
OneWire ds(DS18B20_PIN); // on pin DS18B20_PIN (a 4.7K resistor is necessary)
// Variables générales
float DS18B20_temperature;
const int SERIAL_PORT=9600;
void setup() {
//mode sortie led
pinMode(led_rouge, OUTPUT);
pinMode(led_bleu, OUTPUT);
pinMode(led_vert, OUTPUT);
pinMode(led_jaune, OUTPUT);
pinMode(ventilateur, OUTPUT);
{
Serial.begin(9600); //connection au port série
Serial.println("Frequencemetre");
}
// fonction lcd
{
lcd.begin(16,4); //taille de lecran en nombre de caractere et ligne
lcd.setCursor(0,0); //position du message 1er colonne de 0a15
lcd.print("temp:"); //inscrire le message 1er ligne
lcd.print(DS18B20_temperature);
lcd.setCursor(0,1); //position du message 2eme colonne de 0a15
lcd.print("rpm:"); //inscrire le message 2eme lignes
lcd.setCursor(0,2); //position du message 3eme colonne de 0a15
lcd.print("N tours"); //inscrire le message 3eme lignes
lcd.setCursor(0,3); //position du message 4eme colonne de 0a15
lcd.print(" ;)
"); //inscrire le message 4eme lignes
}
// Initialisation du port de communication avec le PC
Serial.begin(SERIAL_PORT);
Serial.println("Initialisation du programme");
}
void loop()
// === Boucle de mesures
{
// Attendre le signal
//compensation (étalonnage)
FreqCounter::f_comp=10; // Cal Value / Calibrate with professional Freq Counter
// 10, 100 ou 1000 ms pour une résolution de 100, 10 et 1 Hz
FreqCounter::start(100); // 100 ms Gate Time
// Attendre jusqu'à avoir un comptage terminé
while (FreqCounter::f_ready == 0)
// Afficher la mesure de fréquence (et de rotation)
frq=FreqCounter::f_freq;
Serial.print(cnt++);
Serial.print(" Freq (Hz): ");
Serial.print(frq);
trmin = frq/encoches*60; //Vitesse de rotation en tour/min
Serial.print(" tour/min ");
Serial.println(trmin);
delay(500);
DS18B20_temperature = getTemperatureDS18b20(); // On lance la fonction d'acquisition de T°
// on affiche la T°
Serial.print(" temperature moteur: "); // message moniteur pc
Serial.println(DS18B20_temperature);
// encodage leds , alarme et ventilateur
if( DS18B20_temperature < 25){
digitalWrite(7,HIGH); //led bleu allumer
digitalWrite(8,LOW); //led vert eteinte
digitalWrite(2,LOW); //led jaune eteinte
digitalWrite(3,LOW); //led rouge eteinte
digitalWrite(13,HIGH); //ventilateur eteint
noTone (6);
}
if( DS18B20_temperature > 25){
digitalWrite(7,LOW); //led bleu eteinte
digitalWrite(8,HIGH); //led verte allumer
digitalWrite(2,LOW); //led jaune eteinte
digitalWrite(3,LOW); //led rouge eteinte
digitalWrite(13,HIGH); //ventilateur eteint
noTone (6);
}
if( DS18B20_temperature > 30){
digitalWrite(7,LOW); //led bleu eteinte
digitalWrite(8,LOW); //led verte allumer
digitalWrite(2,HIGH); //led jaune allumer
digitalWrite(3,LOW); //led rouge eteinte
digitalWrite(13,LOW); //ventilateur allumer
noTone (6);
}
if( DS18B20_temperature > 35){
digitalWrite(7,LOW); //led bleu eteinte
digitalWrite(8,LOW); //led verte eteinte
digitalWrite(2,LOW); //led jaune eteinte
digitalWrite(3,HIGH); //led rouge allumer
digitalWrite(13,LOW); //ventilateur allumer
tone (6, note);
}}
/* --------------- Acquisition de la température ----------------------------------- */
float getTemperatureDS18b20(){
byte i;
byte data[12];
byte addr[8];
float temp =0.0;
//Il n'y a qu'un seul capteur, donc on charge l'unique adresse.
ds.search(addr);
// Cette fonction sert à surveiller si la transmission s'est bien passée
if (OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("getTemperatureDS18b20 : <!> CRC is not valid! <!>");
return false;
}
// On vérifie que l'élément trouvé est bien un DS18B20
if (addr[0] != DS18B20_ID) {
Serial.println("L'équipement trouvé n'est pas un DS18B20");
return false;
}
// Demander au capteur de mémoriser la température et lui laisser 850ms pour le faire (voir datasheet)
ds.reset();
ds.select(addr);
ds.write(0x44);
delay(850);
// Demander au capteur de nous envoyer la température mémorisé
ds.reset();
ds.select(addr);
ds.write(0xBE);
// Le MOT reçu du capteur fait 9 octets, on les charge donc un par un dans le tableau data[]
for ( i = 0; i < 9; i++) {
data = ds.read();
}
// Puis on converti la température (*0.0625 car la température est stockée sur 12 bits)
temp = ( (data[1] << 8) + data[0] )*0.0625;
return temp;
}
et voici le message d erreur :
Tone.cpp.o (symbol from plugin): In function timer0_pin_port':* *(.text+0x0): multiple definition of
__vector_7'
libraries\FreqCounter\FreqCounter.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno
donc il y a plusieurs code assembler un grand qui fonctionne seul ( la sonde de température ,les 4 leds , le ventilateur avec le relay et le signal sonore .)
et le deuxième le tachymètre qui fonctionne aussi tous seul .
et les deux assembler forme ce message d erreurs .