Tinkercard problème pour démarrer la simulation

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.

Salut!
Humm, ça fait longtemps que je n'ai pas utilisé Tinkercad - je l'ai lancé et dans les bibliothèques je ne trouve ni OneWire ni DallasTemperature...

➜ Tinkercad est pas mal pour débuter en 3D mais pour la simulation Arduino c'est très incomplet - tu trouveras certainement ton bonheur du côté de Wokwi, il y a normalement tous tes composants et les bibliothèques qui vont avec.

Même pas besoin de créer de compte :+1:

Bon développement!
Amitiés,
Pandaroux007

Un grand merci, je viens de réaliser mon dessin sur Wokwi et de téléverser mon programme, tout fonctionne à merveille. Contrairement à Tinkercad, je n’ai pas eu de blocage.

Son fonctionnement assez similaire à Tinkercad m’a permis de le prendre en main rapidement et d’ajouter des boutons pour mieux incrémenter mes alarmes.

Je souhaite remercier tous les bénévoles de ce site qui m’aident à reprendre confiance, à trouver des solutions lorsque je galère dans mon apprentissage et qui me donnent envie d’aller plus loin.