Bonjour, je suis nouveau sur ce forum, et j'aurais besoin d'aide, j'ai commencé à code en arduino mais la je suis bloque, si quelqu'un pourrait m'aider sa serait super sympa de votre part,
je m'explique, donc ici j'ai un moteur qui fait tourner un portail, et des que le capteur fin de course détecte que le portail est entièrement ouvert, le moteur doit s'arrêter mais je ne sais pas trop comment m'y prendre avec le bouton (capteur)
MERCI de votre aide
int Bhaut;
void setup() {
// Initialize Serial Port
Serial.begin(57600);
// Let uPanel start
delay(3000);
// Discharge old partial messages
Serial.println("");
// Send The Panel (A LED and a Switch)
Serial.println("$P:D!88Fg26;{%100,y10^!69F,T*20#FFFFF:Portail Automatique;}///Tfb*16:Ouverture du Portail;/{!00C,06C^%90,20r30-5*12B1:Ouvrir;|L1B:0;}///Tfb*16:Fermeture du Portail;/{!06C,36F^%90,20r30-5*12B2:Fermer;|L2B:0;}///Tfb*16:Eclairage Exterieur;/{!36F,39C^%90,20r30-5*12B3:Eclairer;|L3B:0;}");
digitalWrite(9, 1);
pinMode(9,OUTPUT);
pinMode(10,INPUT);
}
String Msg;
void loop() {
int c;
while ((c = Serial.read()) > '\n') Msg += (char) c; // Read incoming chars, if any, until new line
if (c == '\n') // is the message complete?
{
if (Msg.equals("#B1P") && digitalRead(10) == LOW )
{
digitalWrite(9,0);
Serial.println("#L11");
}
if (digitalRead(10) == HIGH )
{
digitalWrite(9,1);
Serial.println("#L10");
}
Msg = "";
}
}
Juste pour le cou de pouce.
Déclaration de variables de broches = const int variable = 2; //Déclaration de variable à la broche 2.
A placer avant le setup.
Et puis dans le setup tu configure en entrée.
avec la fonction pinMode(variable, INPUT);
Pour info n'utilise pas les broches 0 et 1. surtout pas!!.
Il y a une chose simple a faire avant de faire ton programme c'est d’écrire sur un calepin ce que tu veux faire de ton projet.
Ça aides a repérer les conditions et actions a y mettre sans tout changer continuellement.
Mécaniquement : le contact fin de course coupe l'alimentation du moteur.
Dans le sens du mouvement uniquement car il faut continuer à autoriser le mouvement inverse.
Prévoir des relais et un micro-controleur n'est pas forcément utile.
Electroniquement : le contact fin de course n'est plus qu'un simple "capteur". C'est au micro-controleur a faire la gestion.
C'est bien la deuxième solution que tu as choisi de réaliser ?
Bonjour, j'ai bien fais le changer de constant int, mais j'ai encore un probleme, je m'explique:
donc j'appuie sur le bouton du smartphone pour ouvrir le moteur, mais le capteur fin de course ne s'active seulement si je r'appuie sur le bouton pour ouvrir le portail.
Ce que je voudrais, c'est que des que j'appuie sur le bouton pour ouvrir le portail, le portail s'ouvre jusqu'a l'appui du capteur fin de course, ou le moteur s’éteint, pouvez vous m'aidez sur la modification de mon programme
MERCI
Pour repondre à votre question, c'est bien la deuxieme solution que j'ai choisi
J'irai dans le même sens que manumanu: déclarer correctement les constantes et variables pour éviter les erreurs, mais j'irai encore plus loin: leur donner des noms représentatifs par exemple const int cdeMoteur=10;.
Enuite indenter correctement le programme. Si tu l'avais fait tu verrais que le test de fin de course est fait uniquement au moment ou tu reçois la commande ce qui est d'un intérêt limité car le moteur n'a même pas encore démarré.
Ce qu'il faut faire (par exemple) c'est gérer un indicateur 'moteur en marche'. Quand le moteur est en marche tu ne fais pas la réception du message qui est bloquante (telle que fait actuellement), mais tu fais le test de fin de course.
Par la suite tu pourras améliorer ton programme pour gérer en même temps la réception (arrêt commandé?) et le test de fin de course.
Pour pousser plus loin je reprends Kamil tu pourrais effectivement crée se qui s' appel un retour contacteur.La détection qui confirme que le moteur est en service.
Tu pourrais même si tes du genre a faire des usines a gaz -comme moi- crée un "TIME-OUT" c'est à dire une temporisation qui contrôle que le portail s'est ouvert par l'action du fin de course dans une moyenne de temps prés définis et préalablement chronométré sur sont temps de fonctionnement.
A défaut d'un problème mécanique d'entrainement.
Mais d'abord gère ton ouverture. Envoi ton programme corrigé.
STP Utilise contrôle "T" pour le mettre en forme. .
Commence déjà par "J'appuie sur le bouton" => fait déjà un bout de code pour gérer l'appuie du bouton de commande.
Et suis les conseils de Kamil pour les déclaration des variables.