Bonjour,
Tout d'abord, merci à ceux qui prendront le temps d'étudier mon problème car j'ai quelques difficultés dans la compréhension d'un programme arduino malgré ma pratique de nombreux autres langages informatiques.
Je dispose d'un appareil mécanique qui est un rotateur : on fixe sur le rotateur un appareil photo, puis grâce à la motorisation du rotateur, on peut faire tourner la caméra jusqu'à atteindre une position désirée, le rotateur lui est fixe. Ca permet de choisir l'angle de l'appareil photo pour un cadrage parfait.
Le rotateur possède un moteur dont l'arbre de sortie tourne lentement car il dispose d'un étage micro-réducteur ainsi que son capteur. C'est un moteur DC alimenté en 12V, au même titre que le capteur. Le capteur possède son câble pour pouvoir compter les impulsions quand il est connecté à une entrée analogique.
Le rapport de réduction du rotateur, de sorte que :
-> pour faire tourner la caméra de 360°, je dois compter 112000 impulsions du capteur.
Mon souhait : renseigner un angle (positif ou négatif) dans la console arduino qui surveille mon port COM, et faire tourner le rotateur de cet angle (donc dans un sens ou dans un autre) et s'arrêter, puis attendre un autre angle pour bouger de nouveau.
=> J'aimerais voir affichés en live le nombre d'impulsions comptées ainsi que la correspondance angulaire.
Merci.
Pour l'instant je n'arrive pas à afficher ni à compter en direct (quand le moteur tourne) le nombre d'impulsions renvoyées par le capteur.
Voici pour l'instant mon code :
//Moteur connecté sur la carte L298N du fait du voltage 12V nécessaire à son fonctionnement
int L298N_IN1=1; //contrôle un sens de rotation, relié sur le shield moteur pin 1
int L298N_IN2=2; //contrôle l'autre sens de rotation, relié sur le shield moteur pin 2
int L298N_enA=3; //contrôle la vitesse de rotation, relié sur le shield moteur pin 3
//Alimentation du capteur aussi en 12V, donc aussi sur le L298N
int L298N_IN4=4; //relié sur le shield moteur pin 4
int sensorPin = A1; //relié sur le shield moteur pin analogique A1
int sensorValue = 0; //valeur initiale du nombre d'impulsions = 0
void setup() {
pinMode(L298N_IN1,OUTPUT);
pinMode(L298N_IN2,OUTPUT);
pinMode(L298N_enA,OUTPUT);
pinMode(L298N_IN4,OUTPUT);
Serial.begin(115200); //initialise le port serie à 115200 bauds //grâce à l'observation du port je tente de voir le nombre d'impulsions
delay(1);
Serial.println("");
}
void loop() {
StopRotator();
delay(2000);
leftTurn();
delay(1000);
StopRotator();
delay(2000);
rightTurn();
delay(1000);
}
void StopRotator()
{
digitalWrite(L298N_IN1,LOW);
digitalWrite(L298N_IN2,LOW);
sensorValue = analogRead(sensorPin);
Serial.print(sensorValue);
}
void leftTurn()
{
digitalWrite(L298N_IN1,HIGH);
digitalWrite(L298N_IN2,LOW);
analogWrite(L298N_enA,200);
sensorValue = analogRead(sensorPin);
Serial.print(sensorValue);
}
void rightTurn()
{
digitalWrite(L298N_IN1,LOW);
digitalWrite(L298N_IN2,HIGH);
analogWrite(L298N_enA,200);
sensorValue = analogRead(sensorPin);
Serial.print(sensorValue);
}