Bonjour,
Dans mon apprentissage avec Arduino, pour mieux dessiner, je viens de découvrir Tinkercard et j’ai découvert qu’on pouvait stimuler des programmation virtuellement.
Je travaille actuellement sur l’écriture de mon premier programme qui se téléverse bien sur ma UNO. Avec, 1 LCD I2C, une sonde DS18b20, une led, un buzzer et deux boutons pour régler l’incrémentation des températures hautes et basses qui déclenchent les alarmes (led et buzzer).
J’ai collé ce programme qui fonctionne bien dans la réalité sur Tinkercard mais lorsque j’essaye de réaliser une stimulation sur ce logiciel, le message d’erreur suivant apparait :” 1:10: fatal error: OneWire.h: No such file or directory avre[0m 1.8.6 e[90m/home/tcad/.arduino15/packages/arduino/hardware/avr/1.8.6e[0m exit status 1”
voici mon programme de débutant :
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h> // inclure la bibliothèque pour l'écran I2C
// Précisions données aux bibliothèques
OneWire capteur1(7); // Création d'un objet One Wire sur la broche 7 => température T1
DallasTemperature sensors1(&capteur1); // Indiquer la référence OneWire à la bibliothèque Dallas Temperature pour 1 capteur
LiquidCrystal_I2C lcd(0x27, 16, 2); // adresse du LCD i2c , nombre de colonnes, nombre de lignes de l'écran
// installation du bouton poussoir
const int btn1 = 8, btn2 = 4, led = 2, buzzer = 3 ; // le bouton est relié en broche 8 (voir // plus haut), la led est reliée en 9 const int => variable qui ne peut être modifiée, juste en lecture seule, int=> variable modifiable par la suite dans le code
bool etat1 ; // déclare l'état du bouton 1 (bleu)pour connaître l'état du bouton s'il est à 0 ou à 1 ... est-ce que j'établis le contact ou non... 0 contact non ; 1 contact oui.
bool etat2 ; // déclare l'état du bouton 2 (rouge) pour connaître l'état du bouton s'il est à 0 ou à 1 ... est-ce que j'établis le contact ou non... 0 contact non ; 1 contact oui.
int deg1 = 21; // 21° c'est la température Basse de base que l'on fixe lors de la réinitialisation,
int deg2 = 23; // 23° c'est la température Haute de base que l'on fixe lors de la réinitialisation,
void setup() {
// Activation des appareils branchés
lcd.init(); // initialisation du LCD
lcd.backlight(); // active le rétroéclairage
sensors1.begin(); // active la sonde
pinMode (btn1, INPUT_PULLUP) ; // active l'entrée du signal envoyé par le bouton poussoir 1 (bleu) avec un mode pullup qui ajoute une résistance sur le circuit afin de le stabiliser.
pinMode (btn2, INPUT_PULLUP) ; // active l'entrée du signal envoyé par le bouton poussoir 2 (rouge) avec un mode pullup qui ajoute une résistance sur le circuit afin de le stabiliser.
pinMode (led, OUTPUT) ; // active la sortie 9 de la led
pinMode (buzzer, OUTPUT) ; // active la sortie 13 du buzzer
Beep(300) ; // à la mise en route j'aurais un beep de 300 ms.
}
void loop() {
sensors1.requestTemperatures(); //Demande la température aux capteurs
float temperature_1 = sensors1.getTempCByIndex(0); // obtenir la température 1 en degré
// Programmation des boutons
etat1 = digitalRead(btn1) ; // lire l'état de mon bouton 1 bleu
if (etat1 == 0) // si j'appuies sur le bouton bleu, je baisse de 1°C
{
deg1--; // deg-- est équivalent à deg = deg -1 ;
}
if (deg1 < 15) // si j'atteinds 15° en appuyant sur le bouton 1 bleu, la configuration revient à 21°
{
deg1 = 21; //
}
if (temperature_1 <= deg1) // si la température de la sonde est inférieur à deg 1
{
digitalWrite (led, HIGH) ; // la pin 9 de la led va envoyer 5V.
Beep (100); // la pin 13 va envoyer un signal au buzzer.......... détermine le temps du dTime.
}
else // sinon
{
digitalWrite (led, LOW) ; // la pin 9 de la led n'envoie rien.
}
delay (100) ;
etat2 = digitalRead(btn2) ; // lire l'état de mon bouton 2 - rouge
if (etat2 == 0) // si j'appuies sur le bouton rouge, j'augmente de 1°C
{
deg2++; // deg++ est équivalent à deg = deg +1 ;
}
if (deg2 > 30) // si j'atteinds 30° en appuyant sur le bouton 2 - rouge, la configuration revient à 23°
{
deg2 = 23; //
}
delay (100) ;
if (temperature_1 >= deg2) // si la température de la sonde est supérieur à deg 2
{
digitalWrite (led, HIGH) ; // la pin 9 de la led va envoyer 5V. et allumer la led
Beep (100); // la pin 13 va envoyer un signal au buzzer.......... détermine le temps du dTime.
}
else // sinon
{
digitalWrite (led, LOW) ; // la pin 9 de la led n'envoie rien.
}
delay (100) ;
// programmation du lecteur LCD I2C
lcd.setCursor(2, 0); // mettre le curseur à la troisième colonne, première ligne
lcd.print("T = ");
lcd.print(temperature_1, 1); // imprime la température donnée par la sonde et le deuxième chiffre après la virgule indique le nombre de chiffre après la virgule ,2 pour une précision au centième.
lcd.print((char)223); // symbole °
lcd.print("C");
lcd.setCursor(2, 1); // mettre le curseur sur la première conlone, deuxième ligne
// lcd.print ("alarme = ");
lcd.print (deg1); // le LCD imprime la valeur à laquelle l'alarme Froide a été programmée.
lcd.print((char)223); // symbole °
lcd.print("C");
lcd.setCursor(9, 1); // mettre le curseur sur la première conlone, deuxième ligne
// lcd.print ("alarme = ");
lcd.print (deg2); // le LCD imprime la valeur à laquelle l'alarme Chaude a été programmée.
lcd.print((char)223); // symbole °
lcd.print("C");
// Etablissement d'un délais avant que la boucle ne reprenne.
delay (100) ; // le buzzer va sonner toutes les centièmes de secondes.
}
// Pour configurer le temps d'activité du buzzer et sa fréquence. Sur la UNO, le voyant L clignotte à chaque impulsion du buzzer.
void Beep(int dTime) { // dTime = délai du temps initialise la durée du Beep déterminée plus haut à (1000)et met les conditions mais le délai fixé plus bas est le temps de vibration.
tone(buzzer, 500) ; // pour envoyer, à partir de la broche 13, une fréquence de 500 méga-hertz. La fonction "tone" dans Arduino est utilisée pour générer un signal PWM (modulation de largeur d'impulsion)
delay (dTime) ; // c'est le temps durant lequel le buzzer va vibrer avant de s'arrêter
noTone (buzzer) ; // pour ne plus avoir le son du buzzer en continue
}
à priori, il y a un problème avec OneWire, Pouvez-vous me donner des pistes de recherche.