conflit entre bibliotheque

bonjour ,
je cherche depuis plusieurs jour pour quoi mon programme ne veut pas se compiler je suis arriver a une réponse qui serais que mais bibliothèque rentrerez en conflit si quel qu un a une autre réponse ou une réponse a me fournir je suis preneur .
j ai feuilleter le blogue mais avec plus de 125 j ai passer pas mal de temps déjà .
mais bibliothèque son :
#include <OneWire.h> // bibliothèque sons
#include <LiquidCrystal.h> // bibliothèque LCD
#include <FreqCounter.h> //bibliothèque de fréquence

merci pour votre temps
Gabriel.

Poste ton code (entre balises Code, comme expliqué dans les messages épinglés en haut du forum) et donne nous l'ensemble des messages d'erreur que tu obtiens, ça nous aidera à t'aider...

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(" ;):wink: "); //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 .

La balise code, elle est ici :

merci d'éditer ton message, sélectionner le programme et cliquer sur l'icone code

Je vois plusieurs problèmes dans ton code, mais qui n'ont peut être rien à voir avec ton message d'erreur

Il y a plusieurs fois serial.begin
La suite de if sur la valeur de la température n'est pas bonne. Tu dois mettre des else, sinon si la température est par exemple supérieure à 35 les trois dernières conditions sont remplies
Dans ces lignes

for ( i = 0; i < 9; i++) {
data = ds.read();
}

tu dois utiliser data[i]

Pour ton message d'erreur, il s'agit en effet de deux bibliothèques qui veulent utiliser les mêmes interruptions.
As tu vraiment besoin de la bibliothèque Freq Counter ?

Il va falloir faire un choix. Soit tone soit FreqCounter, qui utilisent le même timer.
tone sera plus facilement remplaçable par un PWM par exemple.

bonjour

merci a ceux qui on lui mon post :

bricofoy merci pour ton beau dessin mais j ai lu le poste épingler comment éditer un poste pour les nuls donc j ai bien vue ou se trouve normalement la balise mais comme dit dans mon premier message je n en es pas sur ma page quick reply a la place j ai ce message "With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post."
donc je ne suis pas quelqu un qui veut que l on face sont code a sa place ni quelqu un qui ne reviendra jamais sur le site comme 99.9 % de gens je ne vais pas siter tous le poste bref .
j ai de-couver l arduino il y a un moi donc j ai lu un document fait par eskimon (454 pages ) j ai lui plein de blog et de fasson de fair donc si j en arrive ici c est que je suis au bout de se que j ai pu apprendre en si peut de temps .
donc désole si je n est pas fait se qu il faut mais au moins j ai fait de mon mieux et je ne peut pas fair d imprime écran vue que je ne peut pas poster d image vue que je n est pas cette barre de tache ,
puis sa na pas empêcher d autres membre a comprendre et a essayer de m aider .

lesept :
merci pour ton temps donc j ai bien lui se que tu ma écrie donc pour if sa ne fonctionne que comme sa j ai teste de m être un else des elsif sa bloc a chaque fois j ai eu la même déduction que toi que plusieurs variable serons correcte en même temps mais sa fonctionne correctement comme sa "bizarre mais sa me va du coup ;)"
pour serial.begin je ne c est pas encore bien m en servir donc quand j ai mêlée les différents programme il se sont retrouver ensemble je vais faire se que tu ma dit puis voir se que sa donne .
merci a toi .

hbachetti :
merci je vais essayer de suite c est vrai je peut me passer bien plus fassilement de tone que de FreqCounter et je vais chercher c est quoi PWM .

encore merci je vous tien au courant si vos conseil fonctionne .
bonne journée gabriel .

La syntaxe pour les if et else, c'est

if (condition) {bloc d'instructions}
else if (autre condition) {autres instructions}
...
else {dernières instructions}

Vérifie que c'est ce que tu testes, il n'y a pas de raison que ça ne marche pas.

lesept :

j ai teste de changer les serial.begin en data sa fonctionne dans les deux condition .
hbachetti :
j ai supprimer le tone se compile correctement le seul souci c est que l ecan LCD ne marque plus rien que des signes je vais chercher se qui peut le faire planter si je téléverse que le premier code ( sonde th , led ,et ventilateur il fonctionne quand je remet tous sa plante ).
je me suis documenter sur les pwm c est un composants qui change l analogiques avec des moyens numériques sa imite une fréquence si j ai tous bien comprit je vais en acheter un puis jouer avec pour bien comprendre .
si vous avez d autre conseil je les testerais merci pour votre aide .
gabriel.

gaby0094:
j ai teste de changer les serial.begin en data sa fonctionne dans les deux condition .
[/quote]
Ce n'est pas ce que je disais.
Je disais qu'il ne faut mettre Serial.begin une seule fois et mettre des indices dans ton tableau data.

lesept

ok je vais fair des essai comme tu ma dit c est vrai il n y pas de raison que sa ne fonctionne pas .
.
j ai trouvais pour l ecran comme tu ma dit il y avait trop de serial.begin j en es retirer un sa fonctionne a nouveau .

ARDUINO sait faire du PWM tout seul : analogWrite() - Arduino Reference

Sur l'ATMEGA 328P : pins digitales 3, 5, 6, 9, 10 et 11.

Par défaut le PWM a une fréquence fixe, mais je crois que l'on peut modifier la fréquence.
A tester : Arduino Playground - PwmFrequency

@+

Cool merci pour l info je vais étudier sa puis si j arrive à quelque chose je te dit si sa peut fair avancer les choses.
Bonne soiree Gabriel.

gaby0094:
bricofoy merci pour ton beau dessin mais j ai lu le poste épingler comment éditer un poste pour les nuls donc j ai bien vue ou se trouve normalement la balise mais comme dit dans mon premier message je n en es pas sur ma page quick reply a la place j ai ce message "With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post."

curieux, mais pas insurmontable : il suffit de cliquer sur le bouton "REPLY" en bas à droite du message, juste au dessus de la zone quick reply, et tu aura alors l'éditeur de message complet avec toutes les fonctions.

Et pour ce qui est de ton premier message, tu survoles avec la souris le lien "more..." en bas à droite du message, puis tu cliques sur "modify" dans le menu déroulant qui s'ouvre, et tu aura également l'éditeur complet pour modifier le message

Screenshot_20190111_211935.png