Premier projet débutant, pleins de question !

Bonjour,

Je souhaiterais débuter mon tout premier projet sur un arduino uno, mais j’ai plein de question, voilà l’idée :

Je souhaiterais avoir une chasse d’eau automatique (grâce à un sensor à ultrason) et un petit servo lié a la chasse d’eau.

Matériel :

Arduino Uno
Senseur ultrason SR04
Servo
Un petit bout de “breadboard” (circuit en français ?)
Une petit led de statut

Voilà le code

#include <Servo.h> //This line is needed to use the servo library
Servo servo1; //This line create a servo named "servo1"
int buffer; //two more integer variables we will use as buffers
const int pingPin = 3, led = 4; //This is an variable we are setting to 3 and 4 to make it easier to read/write from those pins
 
void setup() {
  servo1.attach(2); //set the servo to pin 2
  pinMode(led, OUTPUT); //set the led pin as an output
  Serial.begin(9600); // initialize serial communication, this will let us read/write data back and forth (this is useful for debugging)
}
 
void loop()
{
  long duration, inches; // establish variables for duration of the ping, and the distance result in inches
 
  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);
 
  pinMode(pingPin, INPUT); //Set the pingPin to an input to read from
  inches = pulseIn(pingPin, HIGH)/ 74 / 2; //read from the pin, divide by 74 to account for the speed of sound, then by 2 to account for the return trip)
 
  if (inches<20) flusher(); //if the reading is less than 20 start the flush function
  else //if the reading is not less than 20
  {
    buffer--; //decrease the buffer
    if (buffer<0) buffer=0; //make sure the buffer cant be less than 0
    servo1.write(360); //put the servo in the far right position
    digitalWrite(led, LOW); //turn off the LED
  }
  delay(100); //wait a 10th of a second before checking again
}
 
void flusher()
{
  buffer++; //increase the buffer counter
  if (buffer>15) //if the buffer counter is over 15 (which would be 1500 or 1.5 seconds)
  {
    servo1.write(41); //put the servo in the far left position
    digitalWrite(led, HIGH); //turn the led on
    delay(1000); //wait one second
    servo1.write(360); //put the servo in the far right position
    delay(3000); //wait 3 second
    buffer=0; //reset the buffer
  }
}

La question maintenant, j’ai trouvé ce code sur la vidéo d’un type sur youtube. Mise à part que l’unité est en inches (pas trop un soucis, je peux faire la conversion et laisser l’unité en inches), le code vous semble-t-il ok ?
Mise à part la distance, ainsi que le temps d’action du servo quelles autres variables dois-je modifier ?
Quelle partie du code dois-je modifier pour le temps d’action du servo ?

Que me conseillez-vous pour alimenter mon arduino ? (Hors secteur) piles 9v ? batteries AA (si oui combien ?), batterie externe (celles utilisée pour les telephones)
L’idéale pour moi serait une batterie externe type téléphone (facilement re-chargeable) mais j’ai vu qu’il fallait un minimum de mA pour ne pas que la batterie se mette en pause. Pensez-vous que mon senseur ultrasonic consomme suffisament ?

Merci d’avance pour vos réponses

ce qui est étrange, il y a une variable duration mais elle n'est pas utilisée...

pour la durée d'action, tu as les delays a changer...

servo1.write(360); //put the servo in the far right position
delay(3000); //wait 3 second

nicolasweber8:
Je souhaiterais avoir une chasse d'eau automatique (grâce à un sensor à ultrason) et un petit servo lié a la chasse d'eau.

Rhoooo, c'est si compliqué d'appuyer sur le bouton avec le doigt ?
M'enfin, pourquoi pas ...

hazerty565:
.

servo1.write(360); //put the servo in the far right position
delay(3000); //wait 3 second

Est-ce que ce délais est vraiment celui pendant lequel le servo "tire" la chasse ? Ou est-ce la partie

" servo1.write(41); //put the servo in the far left position
digitalWrite(led, HIGH); //turn the led on
delay(1000); //wait one second"

biggil:
Rhoooo, c'est si compliqué d'appuyer sur le bouton avec le doigt ?
M'enfin, pourquoi pas ...

Pour nous humain, oui, mais j'ai un chat dressé pour faire ces besoins dans les WC (véridique), malheureusement, impossible de lui apprendre à tirer la chasse (...essayé...), donc pas très agréable les surprises dans les WC :slight_smile: (Mieux tout de même que de devoir rammasser la litière cependant !)

nicolasweber8:
j'ai un chat dressé pour faire ces besoins dans les WC (véridique),

wow ! joli coup :slight_smile:

Pour l’alim, peut être une pile 9volts ? Même s’il faudra la changer souvent, ça prends pas de place et c’est facile à trouver.

Merci pour les réponses,

J'ai également créer un post sur la partie principale en anglais car mon code a du un peu changer, en effet le code originale était avec un sensor 3 pin, alors que celui que je possède est un 4 pin (echo, etc..)

Mon prochain problème, comment empêcher la chasse de fonctionner AVANT que l'objet ne sorte du champ ? quelle fonction utiliser ?