Capteur de distance bouton actif ou inactif

Bonjour,
Alors je vous explique je suis en train de faire un distributeur de boisson et je voudrais mettre un capteur de distance pour que quand le capteur capte le verre alors les boutons sont actifs sinon les boutons sont désactivé si quelqu’un peut m’aider à faire ça ça serait très gentil
Les boutons sont des boutons poussoir de pin.
Merci.

#include<Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);
void setup(){
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);

}

void loop(){
int a;
int b;
int c;
int d;
int e;

a = digitalRead(2); // petit verre sirop grenadine 5500 eau 7500
b = 1;
c = digitalRead(3);
d = digitalRead(4);
e = digitalRead(5);

if(a==b)// c = digitalRead(2) // bouton #1
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“texte 1er ligne”); //texte 1er ligne
lcd.setCursor(0,1);
lcd.print(“texte 2eme ligne”); //texte 2eme ligne
digitalWrite(13,HIGH);
delay(0); //Temps boutton #2 pin 13
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
delay(0); //Temps boutton #2 pin 12
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
delay(0); //Temps boutton #2 pin 11
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
delay(0); //Temps boutton #2 pin 10
digitalWrite(10,LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(4,0);
lcd.print(“Boisson”); //message fin de service 1er ligne
lcd.setCursor(4,1);
lcd.print(“Terminee”); //message fin de service 2eme ligne
delay(2000);
lcd.init();
lcd.backlight();
lcd.setCursor(5,0);
lcd.print(“Choix”); //message initial 1er ligne
lcd.setCursor(2,1);
lcd.print(“de la boisson”); //message initial 2er ligne
}
if(c==b)// c = digitalRead(2) // bouton #2
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“texte 1er ligne”); //texte 1er ligne
lcd.setCursor(0,1);
lcd.print(“texte 2eme ligne”); //texte 2eme ligne
digitalWrite(13,HIGH);
delay(0); //Temps boutton #2 pin 13
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
delay(0); //Temps boutton #2 pin 12
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
delay(0); //Temps boutton #2 pin 11
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
delay(0); //Temps boutton #2 pin 10
digitalWrite(10,LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(4,0);
lcd.print(“Boisson”); //message fin de service 1er ligne
lcd.setCursor(4,1);
lcd.print(“Terminee”); //message fin de service 2eme ligne
delay(2000);
lcd.init();
lcd.backlight();
lcd.setCursor(5,0);
lcd.print(“Choix”); //message initial 1er ligne
lcd.setCursor(2,1);
lcd.print(“de la boisson”); //message initial 2er ligne
}
if(d==b)// c = digitalRead(2) // bouton #3
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“texte 1er ligne”); //texte 1er ligne
lcd.setCursor(0,1);
lcd.print(“texte 2eme ligne”); //texte 2eme ligne
digitalWrite(13,HIGH);
delay(0); //Temps boutton #2 pin 13
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
delay(0); //Temps boutton #2 pin 12
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
delay(0); //Temps boutton #2 pin 11
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
delay(0); //Temps boutton #2 pin 10
digitalWrite(10,LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(4,0);
lcd.print(“Boisson”); //message fin de service 1er ligne
lcd.setCursor(4,1);
lcd.print(“Terminee”); //message fin de service 2eme ligne
delay(2000);
lcd.init();
lcd.backlight();
lcd.setCursor(5,0);
lcd.print(“Choix”); //message initial 1er ligne
lcd.setCursor(2,1);
lcd.print(“de la boisson”); //message initial 2er ligne
}
if(e==b)// c = digitalRead(2) // bouton #4
{
lcd.init();
lcd.backlight();
lcd.setCursor(6,0);
lcd.print(“EAU”); //texte 1er ligne
lcd.setCursor(3,1);
lcd.print(“Grenadine”); //texte 2eme ligne
digitalWrite(13,HIGH);
delay(0); //Temps boutton #2 pin 13
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
delay(0); //Temps boutton #2 pin 12
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
delay(0); //Temps boutton #2 pin 11
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
delay(0); //Temps boutton #2 pin 10
digitalWrite(10,LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(4,0);
lcd.print(“Boisson”); //message fin de service 1er ligne
lcd.setCursor(4,1);
lcd.print(“Terminee”); //message fin de service 2eme ligne
delay(2000);
lcd.init();
lcd.backlight();
lcd.setCursor(5,0);
lcd.print(“Choix”); //message initial 1er ligne
lcd.setCursor(2,1);
lcd.print(“de la boisson”); //message initial 2er ligne
}

}

Your post was MOVED to a more suitable location.

Could you also review How to get the best out of this forum as it will help you find your way around.

Votre message a été déplacé à un emplacement plus approprié.

Pourriez-vous également passer en revue How to get the best out of this forum, car cela vous aidera à trouver votre chemin.

Bonsoir

De plus prendre connaissance des Règles du Forum Francophone

(où et comment poser les questions, comment mettre en forme et publier du code……etc)

et pour les projets scolaires, ici , c’est cartes sur table…

1 Like

Comment ça project scolaire

projet entrant dans le cadre éducatif (Bac TSTI2 , projet encadré…etc)
Dans ce cadre l’aide apportée par le Forum suit cette ligne :
https://forum.arduino.cc/t/projets-examen/314858

PS : le distributeur de boisson est l’un de thèmes abordés régulièrement dans ce type de projets…

Pour ce qui est de la demande les étapes du travail à faire peuvent être :

  1. mettre en oeuvre un capteur de distance ( technologie à sélectionner)
  2. détecter un seuil de distance, (actionner par exemple une led si la distance est inférieure à une valeur donnée)
  3. combiner cette détection de seuil de distance avec le code précedent

Alors aucun rapport avec ma scolarité je suis en seconde et l’année prochaine je vais en stmg donc aucun rapport je voulais faire ça depuis longtemps et je cherche quelqu’un qui peux m’aider donc à titre personnel et pas scolaire merci de ne pas énoncé des fait non justifier et faux bonne soirée

Bonne soirée également

trop souvent içi on a affaire à des personnes qui viennent içi fpour qu’on fasse leurs exercices, leurs devoirs ou leur travail de recherche… d’où parfois des réactions sensibles…

J’ai proposé une démarche en 3 étapes à la fin de mon précédent message
Pour la détection de distance il faut préciser l’ordre de grandeur de celle-ci pour choisir la bonne technologie

Bonne soirée,
J’ai mal pris le message de tout à l’heure car j’ai pris du temps à faire le code et le distributeur grâce à mon imprimante 3d et un logiciel 3d et insinué que je veux tricher sur je ne c’est pas quoi.
Je suis débutant dans le codage et je voulais juste savoir si quelqu’un savais comment régler mon problème mais ce n’est pas grave si vous ne pouvez pas m’aider.

d’autres que moi sauront sans doute mieux aider, mais comme moi ils attendront des réponses aux demandes

pour ma part tout commence par une meilleure définition de cette partie qui n’est pas assez précise:

et je voudrais mettre un capteur de distance pour que quand le capteur capte le verre…

quelle est la valeur approximative de cette distance ?
Selon la réponse le capteur à utiliser ( pour lequel il y aura peut être un code spécifique à faire) le choix de capteur n’est pas le même

Si la réponse est 1cm, on ne peut pas prendre un capteur basique à ultra sons !!

par ailleurs sans mise en forme (indentation puis utilisation du balisage </> le code du message initial n’est pas très lisible

La distance est de 1 à 2 cm cela et trop proche si oui qu’est ce que je peux utiliser comme capteur

  1. un micro-contact à palpeur ? (en ajoutant une pièce au palpeur)

palpeur

  1. une détection de présence de la main et non du verre (détection capacitive ou infra-rouge) ?
    (comme dans les robinets ou distributeurs de savons qui s’actionnent à l’approche de la main)

  2. avec un VL53L0X détecter l’avance du verre et de la main qui le tient vers les 3 ou 4cm pour activer les boutons , puis ensuite le recul vers les 4 ou 5cm pour les désactiver ?

Le désavantage du cateur à ultra son c’est que, selon comment il est positionné, peut avoir des variation un peu inattendu sans parler du faite que quelqu’un peu passer ça main devant. Cela crée de fausse valeurs et dans le cadre d’un distributeur de boisson peut faire couler du liquide de manière involontaire.

Un actionneur physique est à privilégié. Un micro-contact à palpeur marche bien pour ça. Sinon, tu peut tenter de mettre un boutons poussoir sous ton verre et que tu ai juste à le poser ? En faisant un socle imprimé en 3D cela peut être jouable. Il faut juste voir en terme d’ergonomie.

Si jamais du veut garder un détecteur de préséance dans boutons à cliquer tu peut utiliser un capteur infrarouge ce qui sera plus discret ^^

Sinon si tu à des question plus précise n’hésite pas.

C’est capteur peuvent marcher ??

Bonjour,

C’est très sensible à la lumière ambiante. Si tu pars sur ce type de capteur, utilises un capteur avec infra rouge modulé comme le KY-032

ok merci