Système de rotation d'écran un peu d'aide :)

Bonjour à tous,

Je viens vers vous car je suis sur un petit projets de système de rotation d'écran en ce moment et fatalement je me retrouve à me mettre à la programmation sous arduino (je suis débutant sur ce point).

Le projet consiste à faire tourner l’écran (90°) via moteur jusqu’à une butée d’un coté où de l’autre (écran en verticale ou horizontal) une fois en position un vérin électrique (dont je n’ai pas encore le pont en H pour les essais , et que je suppose necessiter 2 pins, simulé par des leds) vient verouiller la position. Le programme prend en compte la position initiale de l’écran lors de l’impulsion sur le bouton qui vient choisir la bonne possibilité de IF ;

Je suis sur la première partie de mon programme de rotation dans un sens. Je rencontre malheureusement des petits problème avec le programme dans lequel je me perds un peu… (je l'ai fais de A à Z , et je n'ai visiblement pas la bonne façon de m'y prendre.

/*
Présentation programme:
 
*/
int boutonOn = 2; // Bouton de depart de programme sur la pin 2
 
int LedVerte = 3; // Led verte sur la pin 3
int LedOrange = 4; // Led orange sur la pin 4
int LedRouge = 5; // Led rouge sur la pin 5
   
int capteurHori = 6; // Capteur de fin de course (rotation) horyzontale sur la pin 6
int capteurVerti = 7; // Capteur de fin de course (rotation) verticale sur la pin 7
int capteurVr = 8; // Capteur de tige de verin rentrée sur pin 8
int capteurVs = 9; // Capteur de tige de verin sortie sur pin 9
 
int stpM = 10; // Commande de rotation moteur sur la pin 10
int dirM = 11; // Commande de sens de moteur sur la pin 11
int delayHigh = 2; // temps d'attente en high
int delayLow = 2;  // temps d'attente en low
 
int verinR = 12; // Commande de rentrée de tige verin
int verinS = 13; // Commande de sortie de tige verin
 
void setup() {
 
pinMode(boutonOn,INPUT_PULLUP); digitalWrite(boutonOn,LOW); 
 
pinMode(LedVerte, OUTPUT); digitalWrite(LedVerte,LOW);   
pinMode(LedOrange, OUTPUT); digitalWrite(LedOrange,LOW);
pinMode(LedRouge, OUTPUT); digitalWrite(LedRouge,LOW);
 
pinMode(capteurHori,INPUT_PULLUP);
pinMode(capteurVerti,INPUT_PULLUP);
pinMode(capteurVr,INPUT_PULLUP);
pinMode(capteurVs,INPUT_PULLUP);
 
pinMode(stpM, OUTPUT);
pinMode(dirM, OUTPUT);
 
pinMode(verinR, OUTPUT);
pinMode(verinS, OUTPUT);
}
 
void loop() {
   
 
if (digitalRead(boutonOn)== HIGH)
 {                                                                          // Debut de programme
    if(digitalRead(capteurHori)== LOW && digitalRead(capteurVerti)== HIGH)  // Si ecran en position verticale (selon capteur)
     {  
         digitalWrite(LedVerte, HIGH);                                      // Allumage de la led verte
         if(digitalRead(capteurVs)== HIGH)                                  // Alors si tige verin sortie (selon capteur)
            { 
                while(digitalRead(capteurVr)== LOW)                         // Alors tant que capteur de rentrée de tige verin non actif
                digitalWrite(verinR, HIGH);                                 // Activer rentré tige verin
            }                                         
         while(digitalRead(capteurHori)== LOW)                              // Tant que le capteur horizontal est non actif
            { 
                digitalWrite(dirM, LOW);                                    // Activation du sens de rotation antihoraire
                digitalWrite(stpM, HIGH);                                   // Envoie impulsion moteur
                delay(delayHigh);                                           // Delais de maintient            
                digitalWrite(stpM, LOW);                                    // Arret impulsion moteur
                delay(delayLow);                                            // Delais de relachement
            }     
         while(digitalRead(capteurVs)== LOW)                                // Tant que la tige verin n'est pas sortie
            {
                 digitalWrite(verinS, HIGH);                                // Actionner sortie verin
            }
         digitalWrite(LedVerte, LOW);                                       // Extinction de la led verte  
     }
 
 
 
 }
        else
     {
         digitalWrite(LedRouge, HIGH);
     }
} // Fin de programme

A la place de l’allumage led rouge à la fin j’ai 3 autre else du même type (d'oû les variable INT non utilisées) que le premier donc une fois bien compris le premier je me dépatouillerais sans trop de soucis.

Pourriez-vous me guider un peu pour la réalisation de la première partie ?
à l'heure actuel le mouvement du proto marche bien (pour le moteur) mis à part le fait qu'il me laisse actif les 2 whiles (autre que le moteur), en gros "digitalWrite(verinR, HIGH)" et "digitalWrite(verinR, LOW)" reste actif y compris à la fin du programme.
pourtant litéralement, il me semble que cela reviens à faire "tant que" la valeur est LOW (exemple) alors mettre la variable définie en HIGH (seulement elle ne devrait par rester en high?)...

Petite question en parallèle :

J’ai vu la possibilité de faire des INPUT_PULLUP, j’ai essaie en enlevant la résistance et ça ne marche pas du tout :confused: (du coup j'ai remis les resistances, le PULLUP est peut être de trop du coup).

Matériel du projet :

-Arduino UNO
-Moteur d’essai 12V ST35
-Driver moteur POLOLU A4988
-Leds avec résistance
-Switch avec resistance 10K
-Un paquet de fils
-Un petit proto maison

merci par avance je passe beaucoup ja galère un peu.

bonne journée

Bon et bien problème réglé (comme quoi un peu de sucre quelque heures à se changer les idées et on revient en se disant, "mais oui que je suis bête ^^) pour le programme tout marche du feu de dieu :slight_smile: (dans les 2 sens :)).
Par contre toujours la petite question sur le PULLUP :).