Arduino Forum

International => Français => Topic started by: steven63 on Aug 21, 2017, 11:13 pm

Title: Joystick + arduino + l298N + PAP + LCD (pb de latence)
Post by: steven63 on Aug 21, 2017, 11:13 pm
Bonsoir tous le monde.

Je viens vers vous car je bloque dans mon codage.
Le problème est que mon moteur PAP marque une pose a chaque cycle comme si un Delay était présent hors ce n'est pas le cas. J'ai essayé de nombreuse chose sans trouver de solution.

En gros je veut faire un mode manuel sur ma machine pour pouvoir déplacer mon moteur PAP avec mon joystick.

Voici une partie du codage que j'ai simplifier pour pouvoir vous montrer. (le beug est toujours présent)
Code: [Select]

//Moteurs chariot
#include <Stepper.h>
int stepDelay = 2;
const int NbPasParTour = 200;
Stepper moteur1(NbPasParTour, 9, 8, 7, 6); //Moteur1 doseur
//Fin Moteurs chariot

//Bouton joystick
     int xPin = A1;
     int yPin = A0;
     int buttonPin = 53;      
     int xPosition = 0;
     int yPosition = 0;
     int buttonSelect = 0;
//Fin Bouton joystick

//LCD
     #include <Wire.h>  // Comes with Arduino IDE
     #include <LiquidCrystal_I2C.h>
     LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//Fin LCD
int Chariot; //Menu dans chariot selectionner deplacement
void setup() {Serial.begin(9600);  
             //LCD
                   lcd.begin(20,4);  
                   lcd.home ();
             //Fin LCD
             //Bouton joystick
                   pinMode(xPin, INPUT);
                   pinMode(yPin, INPUT);
                   //activate pull-up resistor on the push-button pin
                   pinMode(buttonPin, INPUT_PULLUP);
             //Fin Bouton joystick
             //Moteurs chariot
                   moteur1.setSpeed(100);
             //Fin Moteurs chariot
 // put your setup code here, to run once:

}

void Chariot1() //Position navigation dans parametres chariot
{
             switch (Chariot)    
            {  
             case 0:
             lcd.setCursor ( 0, 1 );      
             lcd.print ("         Av        !");
             lcd.setCursor ( 0, 2 );      
             lcd.print ("   G  (Retour)  D  !");
             lcd.setCursor ( 0, 3 );      
             lcd.print ("         Ar        !");  
             break;
             case 1:
             lcd.setCursor ( 0, 1 );      
             lcd.print ("         Av        !");
             lcd.setCursor ( 0, 2 );      
             lcd.print ("  (G)  Retour   D  !");
             lcd.setCursor ( 0, 3 );      
             lcd.print ("         Ar        !");
             moteur1.step(-10);  
             break;
             case 2:
             lcd.setCursor ( 0, 1 );      
             lcd.print ("         Av        !");
             lcd.setCursor ( 0, 2 );      
             lcd.print ("   G   Retour  (D) !");
             lcd.setCursor ( 0, 3 );      
             lcd.print ("         Ar        !");
             moteur1.step(10);
             break;
             }
            //Navigation dans navigation dans parametres chariot
             if((xPosition > 950)&&(Chariot == 0))
             {                            
             Chariot = 2;
             }
             else if((xPosition < 21)&&(Chariot == 0))
             {              
             Chariot = 1;
             }
             else if((yPosition > 480)&&(yPosition < 530)&&(xPosition > 480)&&(xPosition < 530))
             { Chariot = 0;
                }
             //Fin Selection dans navigation dans parametres chariot
}

void loop() {
             xPosition = analogRead(xPin);
             yPosition = analogRead(yPin);
             buttonSelect = digitalRead(buttonPin);              
             Chariot1();
}
Title: Re: Joystick + arduino + l298N + PAP + LCD (pb de latence)
Post by: steven63 on Aug 22, 2017, 10:45 am
Re

Bon j'ai résolu le problème du mini Delay pour le moteur en mettant une boucle while:

Code: [Select]

else if  ((analogRead(xPin) <= 21)&&(Chariot == 0)&&(Posnav == 3)) {              
                   while (analogRead(xPin) <= 21) {
                   Chariot = 3;
                   moteur1.step(-10);
             }}


Sauf que la variable "Chariot" ne passe à 3 que 1 micro seconde que quand je relâche le joystick. :o