Capteur a02yyuw et arduino UNO

Bonjour à tous,
Nouveau membre de ce forum et débutant dans l'utilisation de l'Arduino, je viens vous demander conseil.
je veux réaliser un contrôleur de niveau d’eau de mon récupérateur d'eau de pluie.
voici le schema:
schema

et le code:

// C++ code
//
#include <Adafruit_LiquidCrystal.h>

int ultrasonic = 0;
long duree;
int distanceCm;
byte hniveaumaxi=21;                            //niveau haut (distance entre le haut de la cuve et l'eau) en cm
byte hniveaumini=141;                          //niveau bas (distance entre le haut de la cuve et l'eau)
float pourcent;
long Litres;

long readUltrasonicDistance(int triggerPin, int echoPin)
{
  pinMode(triggerPin, OUTPUT);  // Clear the trigger
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  // Sets the trigger pin to HIGH state for 10 microseconds
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);
  pinMode(echoPin, INPUT);
  // Reads the echo pin, and returns the sound wave travel time in microseconds
  return pulseIn(echoPin, HIGH);
}

Adafruit_LiquidCrystal lcd_1_1(0);

void setup()
{
  Serial.begin(9600);
  lcd_1_1.begin(16, 2);
}
void loop()
{
ultrasonic = 0.01723 * readUltrasonicDistance(10, 11);
pourcent= (ultrasonic*100-hniveaumaxi)/hniveaumini;
lcd_1_1.setCursor(0,0); 
lcd_1_1.print("Niveau ");
lcd_1_1.print(pourcent);
lcd_1_1.print("%");
Litres= 3*pourcent;                                 // la cuve fait 300l 
lcd_1_1.setCursor(0,1); 
lcd_1_1.print("environ ");
lcd_1_1.print(Litres);
lcd_1_1.print(" L");
delay(10);
}


ca fonctionne pas !! pas d'affichage
je pense que le code n'est pas adapté au capteur.
Pouvez vous m'aider
Merci
Phil

Bonjour plaf33140

Pas du tout d'affichage ou pas de valeur mesurée ?

Tu as peut être croisé les fils 10 (Trigger) et 11 (Echo)?
J'ai essayé ton programme, hormis l'affichage que je n'ai pas et il fonctionne bien.

Dans ton programme tu écris,:
ultrasonic = 0.01723 * readUltrasonicDistance(10, 11);

Ce n'est pas très "parlant" c'est mieux d'écrire:
ultrasonic = 0.01723 * readUltrasonicDistance(radarTriggerPin, radarEchoPin);

Pour ce faire il faut, dans les déclarations globales (tout en haut):

const int radarTriggerPin = 10;
const int radarEchoPin = 11;

Ca rend léa lecture du programme plus aisée :wink:

Cordialement
jpbbricole

A+
Cordialement
jpbbricole

hello
1er point, un exemple de la librairie fonctionne t'il?

teste ce code:

saisissez ou  The circuit:
 * 5V to Arduino 5V pin
 * GND to Arduino GND pin
 * CLK to Analog #5
 * DAT to Analog #4
*/

// include the library code:
#include "Adafruit_LiquidCrystal.h"

// Connect via i2c, default address #0 (A0-A2 not jumpered)
Adafruit_LiquidCrystal lcd(0);

void setup() {
  Serial.begin(115200);
  // while(!Serial);
  Serial.println("LCD Character Backpack I2C Test.");

  // set up the LCD's number of rows and columns:
  if (!lcd.begin(16, 2)) {
    Serial.println("Could not init backpack. Check wiring.");
    while(1);
  }
  Serial.println("Backpack init'd.");

  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);

  lcd.setBacklight(HIGH);
  delay(500);
  lcd.setBacklight(LOW);
  delay(500);
} collez du code ici

Merci jpbbricole de t’intéresser à mon problème.
Voici l'affichage obtenu:

As tu essayé de bouger le potentiomètre de contrast?
image
Y as t il un ou des ponts soudés sur une de ces 3 pistes?
image

Merci dfgh
j’ai testé avec le code toujours rien:

Ton radar n'est pas branché?
image

Si tu ajoutes ce Serial.print:

void loop()
{
	ultrasonic = 0.01723 * readUltrasonicDistance(10, 11);
	pourcent= (ultrasonic*100-hniveaumaxi)/hniveaumini;
Serial.println(pourcent);

Qu'as tu dans le moniteur (à 9600)?

Je vois que l'imprimante 3D a du travail?

A+
jpbbricole

en ajoutant le Serial.print j'ai une erreur.
le moniteur n'affiche rien du debut à la fin.
Quant à l'imprimante 3D je doit dire qu'elle affectivement beaucoup de travail !! :rofl:

Quelle erreur ?

Pour moi, sans cet outil, il y a beaucoup de bricolage, je suis un manche en mécanique :wink:

Tu n'as pas répondu pour les pins 10 et 11
Pour le test, tu avais bien mis les câbles en 4et5 comme précisé au début du sketch.?


reponse en image le voyant tx de la uno clignote c'est normal?

Pour voir ce que TX envoie, il faut mettre le câble entre la platine et le pc. Moniteur réglé comme dans tons sketch, c'est a dire en9600 bauds

si je traduis :joy: il faut brancher la platine sur le pc ... mais apres je fais quoi?? n’oublie pas je suis un pur débutant et que par moment c’est compliqué !! :sweat_smile:

Bonjour plaf33140

Oui, c'est la ligne
Serial.println(pourcent);
que l'on a ajouté. Cette LED clignote au rythme des caractères envoyés à la console.

Télécharges ce scanner i2C dans ton UNO et dis nous ce qu'il y a dans la console à 9600.

 #include <Wire.h>


 void setup()
 {
	 Wire.begin();

	 Serial.begin(9600);
	 while (!Serial);             // Leonardo: wait for serial monitor
	 Serial.println("\nI2C Scanner");
 }


 void loop()
 {
	 byte error, address;
	 int nDevices;

	 Serial.println("Scanning...");

	 nDevices = 0;
	 for(address = 1; address < 127; address++ )
	 {
		 // The i2c_scanner uses the return value of
		 // the Write.endTransmisstion to see if
		 // a device did acknowledge to the address.
		 Wire.beginTransmission(address);
		 error = Wire.endTransmission();

		 if (error == 0)
		 {
			 Serial.print("I2C device found at address 0x");
			 if (address<16)
			 Serial.print("0");
			 Serial.print(address,HEX);
			 Serial.println("  !");

			 nDevices++;
		 }
		 else if (error==4)
		 {
			 Serial.print("Unknown error at address 0x");
			 if (address<16)
			 Serial.print("0");
			 Serial.println(address,HEX);
		 }
	 }
	 if (nDevices == 0)
	 Serial.println("No I2C devices found\n");
	 else
	 Serial.println("done\n");

	 delay(5000);           // wait 5 seconds for next scan
 }

A+
jpbbricole

il ne se passe toujours rien pas d'affichage l'ecran reste toujours comme sur la photo

Tu parles de l'écran 16x2
Nous te parlons du moniteur, l'écran du PC

Câble de liaison en place.
Tu ouvres le moniteur en cliquant en haut à droite de l'ide Arduino.
Le moniteur ouvert, régle la vitesse en bas à droite

En plus des remarques de @dfgh , pourrais tu faire une photo de l'arrière de ton écran, j'ai un doute que ce soit exactement un Adafruit
image

@dfgh @jpbbricole @plaf33140

A vous lire, on a l'impression que vous êtes dans 3 mondes parralléles!

L'idée de @dfgh de faire tester un truc qui marche est une trés bonne idée aussi, au moins on sait si c'est le code ou l'afficheur qui bug.

Mais il faut lire et répondre aux messages du demandeur qui vous demande, entre autres

Faites vos essais jusqu'au bout, pas à moitié.

Une question de curiosité, quel est le schéma de câblage de la boîte blanche?

Qui alimente l'Arduino?

concernant le reglage:


concernant l'arriere:

C'est une bonne chose, le bus i2C de l'afficheur fonctionne.