bonjour , nouveau sur le site car je débute sur arduino et je tente de programmer la marche d'un moteur pas à pas.
j'utilise un easydriver et n'ai besoin que de 2 port de sortie.
les programmes style stepper avec un tour en avant , un tour en arrière fonctionne parfaitement.
j'ai donc voulu faire mon propre programme avec un potentiomètre pour la vitesse, un bouton reset, un capteur de point zero, le tout gérant un disque rotatif.
le but est simple: si j'appuie sur reset , le moteur fait tourner le disque jusqu'à détecter le point zéro (avec variation de la vitesse par potentiomètre)
int vitesse = analogRead(A0); // lecture du potentiometre
if (digitalRead(6)== 1) { reset = 1; } // active le mode reset
if (reset=1) {
digitalWrite(3, HIGH);
delayMicroseconds(100+vitesse);
digitalWrite(3, LOW);
delayMicroseconds(100+vitesse);
delay(5);
if (digitalRead(5)== 1) { reset = 0; }// desactivation du rest si position zéro
}
}
rien ne va plus.....
la lecture du potentiomètre ne fonctionne pas, le reset et le point zéro n'ont pas d'influence, et le moteur tourne tout seul.
si je comprend pourquoi, grace à vous, je peut continuer mon programme et m'en sortir tout seul....le but étant de faire un plateau tournant au 1/10eme de degré, ordre donné par un pc, dans un sens comme dans l'autre.
merci d'avance pour vos réponses XD
Viproz:
On ne met pas le numéro de pin en plein milieu du code, on met soit des préprocesseur soit des variables sinon c'est illisible
Vu la taille du code et la simplicité du code, c'est pas forcement ce qui dérange le plus xD
Viproz:
fabdos28:
if (digitalRead(6)== 1) { reset = 1; } // active le mode reset
En général, on met == HIGH et non 1
[/quote]
Moi je le fais tout le temps, au moins ça veut dire qu'il a compris que HIGH = 1 = True
Viproz:
fabdos28:
int reset=0; // bouton reset
Dans ton code, reset prend toujours la valeur 0 ou 1, pourquoi utiliser deux octets avec un int (2 octets) alors qu'un boolean (1 octet) suffirait ?
[/quote]
1 octet = byte boolean = 1 bit
Sinon avec la remarques sur les "==" de Viproz je pense que ça marchera, avec un simple "=", même dans une condition, tu forces reset à 1 en permanence
Oh flûte j'en apprend une ! Je viens de faire le tour de différents langage que je pratique et j'avais jamais noté ce genre de blague, la palme au VB.NET : 1 byte = 1 byte 1 boolean = 2 bytes :s