@68tjs — à qui vous répondez ?
Au terme "absolument" utilisé et cité sans réserves qui me paraissent nécessaires.
Quand on utilise "absolument" ou que l'on cite "absolument" sans faire de réserves et que ce n'est "absolument" pas obligatoire, cela me choque.
Quand on s'adresse à un débutant, c'est "j'impose mes méthodes". C'est de l'enseignement d'avant 68 avec des professeurs surnommés des "mandarins".
Il faut faire la distinction entre ce qui est strictement obligatoire de ce qui est conseillé et fortement conseillé.
Un débutant croît sur parole.
Quand on lui présente comme obligatoire quelque chose qui ne l'est pas, il va croire que s'il ne le fait pas, cela ne fonctionnera pas.
Même si c'est un très bon conseil de donner des noms qui "parlent", du point de vue pure programmation, cela reste un conseil et cela doit être présenté comme un conseil.
Je ferais remarquer à tous que pour les anti-rebonds, je cite les deux méthodes possibles, laissant le choix final au demandeur, alors que 99% des répondeurs ne citent qu'une seule méthode, ne laissant aucun choix. Pire aucune explication n'est donnée sur le principe utilisé, juste un ordre "utilise une bibliothèque".
Et pourtant la méthode matérielle est présente sur les cartes microcontrôleur.
C'est hors sujet, quoique pas tant que cela...., actuellement ce qui m'inquiète est la montée de l'autoritarisme qui fini par se retrouver dans les réactions de la population, insidieusement, sans que l'on s'en rende compte.
Reprenez vos livres d'Histoire et vous constaterez que la situation mondiale actuelle ressemble de plus en plus à celle des années 1911-1914 et 1936-1940 et dans une moindre mesure aux années qui ont précédé 1870, rien de réjouissant.
OK oui ce n'est pas "absolument" nécessaire en effet.
Bonjour;
Doublement d'accord.
Une première fois sur le plan technique.
Une deuxième fois sur le
Merci 66tjs pour défendre la liberté d'expression aujourd'hui tellement bafouer. Mais merci aussi jpbbricole pour m'avoir tant aidé depuis je viens sur ce forum, une maladresse est souvent le fruit d'un bon sentiment. Merci a vous tous qui aide les ignorants que nous sommes et faites la chasse à ceux qui qui nous renvoie à nos chers études ou à Google. J'ai 72 ans et peut apprendre d'autre choses aux gens de bonnes volontés. Les personnes rencontrées ici ne sont pas des donneurs de leçons mais des gens qui ont le volonté d'aider. Merci à tous et continuons dans ce sens.
J'ai rectifié le projet en incluant 3 capteurs, un pour chaque étage . le projet tient maintenant compte de vos multiples observations.
Je n'ai jamais utilisé de capteur dans mes projets antérieurs. J'ai écrit le code selon ma propre vision du fonctionnement; Merci de rectifier mes erreurs.
Ceci est une partie de mon code. Merci de vous intéressé surtout au loop qui contient le cheminement de l'ascenseur du RDC au 1° etage.
define borneENA 10 // On associe la borne "ENA" du L298N à la pin D10 de l'arduino
#define borneIN1 9 // On associe la borne "IN1" du L298N à la pin D9 de l'arduino
#define borneIN2 8 // On associe la borne "IN2" du L298N à la pin D8 de l'arduino
#define borneIN3 7 // On associe la borne "IN3" du L298N à la pin D7 de l'arduino
#define borneIN4 6 // On associe la borne "IN4" du L298N à la pin D6 de l'arduino
#define borneENB 5 // On associe la borne "ENB" du L298N à la pin D5 de l'arduino
const int hall0 = A5; // Déclaration de la broche d'entrée du capteur RDC
const int hall1 = A4; // Déclaration de la broche d'entrée du capteur 1° Etage
const int hall2 = A3; // Déclaration de la broche d'entrée du capteur 2° Etage
int buttonPin2 = 4; // bouton 1°Etage
int value; // Variable temporaire
void setup () {
pinMode(hall0, INPUT); // Initialisation de la broche du capteur RDC
digitalWrite(hall0, HIGH); // Activation de la résistance pull-up interne
pinMode(hall0, INPUT); // Initialisation de la broche du capteur 1° Etage
digitalWrite(hall1, HIGH); // Activation de la résistance pull-up interne
pinMode(hall0, INPUT); // Initialisation de la broche du capteur 2° Etage
digitalWrite(hall2, HIGH); // Activation de la résistance pull-up interne
}
void loop () {
// Bouton Etage 1 appuyé et ascenseur au RDC - cycle 11
// Le signal de courant au niveau RDC du capteur est lu.
value = digitalRead(hall0);
// Si un signal a pu être détecté, le moteur tourne l'ascenseur monte.
if (digitalRead(buttonPin2) == LOW && value == LOW) {
//"marche avant" l'ascenseur monte
digitalWrite(borneIN1, HIGH);
digitalWrite(borneIN2, LOW);
// Et on lance le moteur (branché sur le pont A du L298N)
lancerRotationMoteurPontA();
delay(100); // 100 ms de pause
}
// Le signal de courant au niveau 1° Etage du capteur est lu.
value = digitalRead(hall1);
if ( value == LOW){
digitalWrite(borneENA, LOW); // Désactive l'alimentation du moteur. L'ascenseur est au 1° Etage
}
}
// Fontion faisant tourner le moteur
//__________________________________
void lancerRotationMoteurPontA() {
digitalWrite(borneENA, HIGH); // Active l'alimentation du moteur
delay(2000); // et attend 2 secondes
digitalWrite(borneENA, LOW); // Désactive l'alimentation du moteur
delay(1000); // et attend 1 seconde
}
Quelqu'un peut m'aider ?? Merci
![]()
Bonjour plaf33140
Première question, est ce que tes capteurs fonctionnent, est ce qu'au passage de l'aiment la LED s'allume. Fais attention, ces capteurs sont "polarisé". En effet, si l'aimant est orienté SUD >NORD et que tu "attaques" le capteur du côté NORD/SUD, celui-ci ne réagira pas.
A+
Cordialement
jpbbricole
Rebonjour plaf33140 ![]()
C'est difficile avec un bout de programme, mais j'ai relevé un truc, l'attente delay(2000); qui est la durée supposée du déplacement.
Je t'ai changé ça en une attente du halln de l'étage.
Ainsi, à l'appel de lancerRotationMoteurPontA(int hallEtage), j'y ai ajouté le hall à surveiller et la boucle:
while(digitalRead(hallEtage) == HIGH)
Attend l'arrivée de l'aimant sur hallEtage.
Le programme:
void loop () {
// Bouton Etage 1 appuyé et ascenseur au RDC - cycle 11
// Le signal de courant au niveau RDC du capteur est lu.
value = digitalRead(hall0);
// Si un signal a pu être détecté, le moteur tourne l'ascenseur monte.
if (digitalRead(buttonPin2) == LOW && value == LOW) {
//"marche avant" l'ascenseur monte
digitalWrite(borneIN1, HIGH);
digitalWrite(borneIN2, LOW);
// Et on lance le moteur (branché sur le pont A du L298N)
lancerRotationMoteurPontA(hall1); // Oe envoie l'ascenseur à l'étage halln
delay(100); // 100 ms de pause
}
// Le signal de courant au niveau 1° Etage du capteur est lu.
//value = digitalRead(hall1);
//
//if ( value == LOW){
//digitalWrite(borneENA, LOW); // Désactive l'alimentation du moteur. L'ascenseur est au 1° Etage
//}
}
// Fontion faisant tourner le moteur
//__________________________________
void lancerRotationMoteurPontA(int hallEtage) {
while(digitalRead(hallEtage) == HIGH) // Tant que l'ascenseur n'est pas arrivé
{
digitalWrite(borneENA, HIGH); // Active l'alimentation du moteur
}
//delay(2000); // et attend 2 secondes
digitalWrite(borneENA, LOW); // Désactive l'alimentation du moteur
//delay(1000); // et attend 1 seconde
}
C'est difficile avec qu'un bout du programme, je n'ai pas pu essayer alors prudence ![]()
Cordialement
jpbbricole
C'est toi qui possède le montage.
- Pose les éléments sur une table et fait tourner le code.
- Tu déplaces, à la main, l'aimant devant les capteurs pour voir si le code fonctionne comme attendu.
- Une fois ces premiers essais réalisés tu pourras connecter le moteur à la partie mécanique de l'ascenseur pour tester en situation réelle.
Déjà, à l'examen du code je peux te dire que dans le setup() il manque une vérification de la position de la cabine de l'ascenseur.
Il faudrait vérifier que la cabine est en bas et si ce n'est pas le cas la déplacer jusqu'à ce point ( ou si tu préfères à l'étage le plus proche)
En ce qui concerne la partie mécanique ne pas oublier une limitation du couple car les enfants ont tendances à mettre tout et n'importe quoi dans les cabines et elle pourrait très bien se bloquer. La limitation de couple peut être mécanique une liaison qui patine si la cabine se bloque ou électronique une mesure du courant consommé avec arrêt du moteur au-dessus d'un certain seuil.
Merci a vous deux. J’étudie vos remarques et procède aux modifications. Je vous tiens informé
Encore merci
Question de débutant : comment est alimenté la valeur de hallEtage?
cordialement
Phil
Bonjour plaf33140
Ca représente un de ces capteurs:
D'où l'appel à la fonction:
`lancerRotationMoteurPontA(hall1); // Pour aller au 1er. étage
Petite remarque sur le programme du post#26:
pinMode(hall0, INPUT); // Initialisation de la broche du capteur RDC
digitalWrite(hall0, HIGH); // Activation de la résistance pull-up interne
pinMode(hall0, INPUT); // Initialisation de la broche du capteur 1° Etage
digitalWrite(hall1, HIGH); // Activation de la résistance pull-up interne
pinMode(hall0, INPUT); // Initialisation de la broche du capteur 2° Etage
digitalWrite(hall2, HIGH); // Activation de la résistance pull-up interne
Tu as 3 fois pinMode(hall0, INPUT); ![]()
Bonne journée.
jpbbricole
Bonjour
Tant qu'à faire, pourquoi ne pas utiliser INPUT_PULLUP comme ça :
void setup () {
pinMode(hall0, INPUT_PULLUP); // Initialisation de la broche du capteur RDC en entrée avec pullup interne
pinMode(hall1, INPUT_PULLUP); // Initialisation de la broche du capteur du 1er étage en entrée avec pullup interne
pinMode(hall2, INPUT_PULLUP); // Initialisation de la broche du capteur du 2ème étage en entrée avec pullup interne
}
Bonjour amic
Oui, juste, j'avais oublié ![]()
Cordialement
jpbbricole
La chance du débutant : Je débute totalement dans ce vaste domaine des arduinos et je n'ai encore rien fait, j'essaye juste d'apprendre en lisant vos messages (que j'apprécie beaucoup) et j'essaye de comprendre en recherchant dans la doc.
Cordialement.
Bonjour amic
Peut être pas que ... ![]()
Ta remarque était importante, combien de problèmes ont été résolus par ce simple PULLUP.
Sans PULLUP (ou PULLDOWN) , le câble du bouton fait antenne et le programme peut "partir dans tout les sens".
Bonne après-midi
jpbbricole
Bonsoir,
Tient ben justement, en regardant dans les docs, on voit qu'il y a des capteurs qui ont besoin d'un pull-down, d'autres d'un pull-up, et d'autre de ni l'un ni l'autre
Sur le module KY-003, c'est un capteur dont la référence est 44E et dans lequel est intégré un trigger de schmitt. Le signal de sortie de ce module est sur le collecteur d'un transistor NPN, et dans ce cas, il faudra utiliser une résistance de pull-up pour alimenter ce transistor.
Le capteur 49E (qui est sur le module KY-035) est plutôt utilisé pour faire une mesure analogique alors que le 44E (avec son trigger de schmitt) donnera un signal logique.
Cordialement.
Bonjour,
Exactement.
J'ais mis un exemple "emeteur ouvert" et vous "collecteur ouvert", ça tombe bien.
Mon propos était justement de dire que dans certains montages, c'est indispensables de mettre un "pullup" ou "pulldown", mais l'un ne peut pas remplacer l'autre.
Et si c'est indispensable, ce n'est pas pour une raison d'antiparasitage, mais parce qu'il faut fixer les potentiels "flottants" sinon ils n'ont aucun sens, ils flottent entre LOW et HIGH.



