Я работал над тем, чтобы заставить некоторые двигатели работать через H-мосты, и мне удалось с этим кодом.
// initialise motors
int enA = 3; // Motor 1
int in1 = 4;
int in2 = 2;
int enB = 5; // Motor 2
int in3 = 8;
int in4 = 7;
int enC = 11; // Motor 3
int in5 = 12;
int in6 = 13;
int enD = 6; // Motor 4
int in7 = 9;
int in8 = 10;
void setup()
{
pinMode(enA, OUTPUT); // set the outputs for motors
pinMode(enB, OUTPUT);
pinMode(enC, OUTPUT);
pinMode(enD, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(in5, OUTPUT);
pinMode(in6, OUTPUT);
pinMode(in7, OUTPUT);
pinMode(in8, OUTPUT);
}
void motorLoop(){
// setting the direction to turn and speed
digitalWrite(in1, HIGH); // Motor 1
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH); // Motor 2
digitalWrite(in4, LOW);
digitalWrite(in5, HIGH); // Motor 3
digitalWrite(in6, LOW);
digitalWrite(in7, HIGH); // Motor 4
digitalWrite(in8, LOW);
// Set the speed for the Motors
analogWrite(enA, 1);
analogWrite(enB, 20);
analogWrite(enC, 100);
analogWrite(enD, 200);
};
void loop()
{
motorLoop();
delay(500);
}
Однако я пытаюсь превратить данные в массив и столкнулся с некоторыми проблемами. Я никогда не пробовал создавать массивы с цифровыми входами, но с аналоговыми. Вот ссылка на мой проект (TinkerCAD) https://www.tinkercad.com/things/fFQKRTjhDrb-smashing-allis-kieran/editel?tenant=circuits?sharecode=6rKnUZsFtcOAetd_TufIuN8TfUgi8EupA1TMjlxiacM=
. Как вы можете видеть из этого кода, я попытался настроить входы разрешения, которые не показывают ошибок, но я изо всех сил пытаюсь настроить выход и скорость,двигатели вращаются со скоростью.
// initialise motors
// Motor 1
int in1 = 4;
int in2 = 2;
// Motor 2
int in3 = 8;
int in4 = 7;
// Motor 3
int in5 = 12;
int in6 = 13;
// Motor 4
int in7 = 9;
int in8 = 10;
// Array of PWM's
int i = 0;
byte pwms[i] = {3,5,6,11};
byte numberPwms = 4;
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(in5, OUTPUT);
pinMode(in6, OUTPUT);
pinMode(in7, OUTPUT);
pinMode(in8, OUTPUT);
for(byte i = 0; i <= numberPwms; i++){
pinMode(pwms[i], OUTPUT);
};
}
void motorLoop(){
// setting the direction to turn and speed
digitalWrite(in1, HIGH); // Motor 1
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH); // Motor 2
digitalWrite(in4, LOW);
digitalWrite(in5, HIGH); // Motor 3
digitalWrite(in6, LOW);
digitalWrite(in7, HIGH); // Motor 4
digitalWrite(in8, LOW);
// Set the speed for the Motors
for(byte i = 0; i < numberPwms; i++){
analogWrite(pwms[i], 200);
};
};
void loop()
{
motorLoop();
delay(500);
}
Любая помощь с этим будет принята с благодарностью: D