Bonjour à toutes et à tous,
après deux soirées passées à chercher sans trouver je vous expose mon problème qui pourtant ne me semblait pas si compliqué que cela, mais cela doit être dû à mon niveau de grand débutant ![]()
Je suis en train de réaliser une "sculpture musicale" on pourrait dire, où des moteurs pas à pas frottent des cordes à l'aide de médiators. J'ai trouvé un code que j'ai un peu modifié pour mes besoins et cela fonctionne, je peux actionner simultanément 3 moteurs PAP mais je ne parviens pas à modifier les cycles. Je voudrais dans un premier temps simplement faire en sorte que les moteurs ne fasse pas une révolution complète mais un 180° (afin d'aller plus vite). Voici le code (je pense que cela se situe au niveau du void loop) d'avance merci pour vos lumières et votre aide ! (et surtout je vais essayer de comprendre pour aménager d'autres configurations par la suite)
`
Texte préformaté`//declare variables for the motor pins
int motorPin1 = 10; // Blue
int motorPin2 = 11; // Pink
int motorPin3 = 12; // Yellow
int motorPin4 = 13; // Orange
// Red (VCC)
int motorPin5 = 9; // Blue
int motorPin6 = 8; // Pink
int motorPin7 = 7; // Yellow
int motorPin8 = 6; // Orange
// Red (VCC)
int motorPin9 = 5; // Blue
int motorPin10 = 4; // Pink
int motorPin11 = 3; // Yellow
int motorPin12 = 2; // Orange
// Red (VCC)
int motorSpeed = 300; // stepper speed
int count = 0; // count steps
int countsperrev = 4096; // steps per revolution
int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};
unsigned long currentMillis = millis();
void setup() {
Serial.begin(9600);
//declare the motor pins as outputs
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
pinMode(motorPin5, OUTPUT);
pinMode(motorPin6, OUTPUT);
pinMode(motorPin7, OUTPUT);
pinMode(motorPin8, OUTPUT);
Serial.begin(9600);
pinMode(motorPin9, OUTPUT);
pinMode(motorPin10, OUTPUT);
pinMode(motorPin11, OUTPUT);
pinMode(motorPin12, OUTPUT);
Serial.begin(9600);
}
void loop(){
countsperrev = 10;
if(count < countsperrev )
clockwise();
else if (count == countsperrev * 1)
count = 10;
else
anticlockwise();
count++;
}
///// functions //////
void anticlockwise()
{
for(int i = 0; i < 9; i++)
{
setOutput(i);
delayMicroseconds(motorSpeed);
Serial.print("A "); Serial.print(i); Serial.println(count);
}
}
void clockwise()
{
for(int i = 9; i >= 10; i--)
{
setOutput(i);
delayMicroseconds(motorSpeed);
Serial.print("B "); Serial.print(i); Serial.println(count);
}
}
void setOutput(int out)
{
digitalWrite(motorPin1, bitRead(lookup[out], 0) );
digitalWrite(motorPin2, bitRead(lookup[out], 1) );
digitalWrite(motorPin3, bitRead(lookup[out], 2) );
digitalWrite(motorPin4, bitRead(lookup[out], 3) );
digitalWrite(motorPin5, bitRead(lookup[out], 0) );
digitalWrite(motorPin6, bitRead(lookup[out], 1) );
digitalWrite(motorPin7, bitRead(lookup[out], 2) );
digitalWrite(motorPin8, bitRead(lookup[out], 3) );
digitalWrite(motorPin9, bitRead(lookup[out], 0) );
digitalWrite(motorPin10, bitRead(lookup[out], 1) );
digitalWrite(motorPin11, bitRead(lookup[out], 2) );
digitalWrite(motorPin12, bitRead(lookup[out], 3) );
}saisissez ou collez du code ici
Merci encore !


