Низкое напряжение на digital-портах

Залил программу на контроллер. Вроде бы всё и должно работать, а не работает. Моторы, подключённые к digital пинам 2, 3, 4 и 5 не крутились. При измерении напряжения пинов при работе мультиметром оказалось, что пины вместо 5в выдают на каждый мотор совсем низкое напряжение - около 0.600 в. Соответственно моторы не крутятся. С чем это может быть связано и как это можно исправить?

void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(10, INPUT);
}
void loop() {
  if (digitalRead(10) == HIGH) {
    ButtonRBC = ButtonRBC + 1;
  }
  delay(10000);
  if (ButtonRBC == 1) {
    digitalWrite(2, HIGH); // Первый режим, проход вперёд
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    delay(10000);
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
  }
  if (ButtonRBC == 2) {
    digitalWrite(2, HIGH); // Второй режим, поворот налево
    digitalWrite(4, HIGH);
    delay(3000);
    digitalWrite(2, LOW);
    digitalWrite(4, LOW);
  }
  if (ButtonRBC == 3) {
    digitalWrite(2, HIGH); // Третий режим, поворот направо
    digitalWrite(4, HIGH);
    delay(3000);
    digitalWrite(2, LOW);
    digitalWrite(4, LOW);
  }
  if (ButtonRBC == 4) {
     digitalWrite(2, HIGH); // Четвёртый режим, переходк копилке
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    delay(3000);
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
  }
  if (ButtonRBC == 5) {
    digitalWrite(4, HIGH); // Пятый режим, прыжок
    digitalWrite(5, HIGH);
    delay(5000);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
  }
  if (ButtonRBC == 6) {
    digitalWrite(3, HIGH); // Шестой режим, клубок
    digitalWrite(5, HIGH);
    delay(2000);
    digitalWrite(3, LOW);
    digitalWrite(5, LOW);
  }
  if (ButtonRBC == 7) {
    digitalWrite(2, HIGH); // Седьмой режим, булка
    digitalWrite(4, HIGH);
    delay(2000);
    digitalWrite(2, LOW);
    digitalWrite(4, LOW);
  }
  if (ButtonRBC == 8) {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH); // Восьмой режим, посадка
    delay(1000);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
  }
  delay(100);
  ButtonRBC = 0;
}
Плата нано.

Кто знает, код- то не полный…схемы нет

Кнопка правильно подключена, с “подтяжкой” пина к GND?

Напрямую?

1 лайк

он же электрик, не через конденсаторы же…
ТС схема где, а то народ так и будет гадать что у тебя подключено и как?

1 лайк

выгорело бы уже все, наверное через защитные резисторы, грамотный видать.

1 лайк

да, кнопку к земле подтянул

через защитные резисторы вообще ничего не шло. Думаю, может там какие-нибудь германиевые транзисторы поставить, тогда можно будет не 5, а 12 вольт прям через АКБ вкачивать.

без опторазвязки только IGBT напрямую (в смысле, через ограничитель 510 Ом, иначе чип будет вкачивать в гейт все что сможет, если открытый коллектор). Ты читал даташит, в котором написано: максимум 20мА на пин, максимум 150мА на чип ?