Шаговый двигатель вращаться должен через управление кнопками

Тема в разделе "Arduino & Shields", создана пользователем kiva_denis, 22 июл 2017.

  1. kiva_denis

    kiva_denis Нуб

    Добрый день / вечер / утро
    Возникла проблема в коде....
    Помогите понять где ошибка в коде !

    Железо: Ардуиони UNO, шаговый двигатель, резистор переменный на 10 ком, 2 кнопки.
    Задача: Вращать двигатель управляя кнопками, при этом скорость двигателя регулируется резистором.

    Ниже представлен код, компилятор ругается на последнюю строку, подскажите где не верный код !
    Ткните пальцем !

    /* Управление шаговым двигателем, подключенного к контроллеру на базе микросхемы L298*/
    #include <Stepper.h> // Подключаем библиотеку управления шаговыми двигателями
    const int StepsForRotation=200; // 200 шагов на оборот - 1.8 градуса на один шаг
    Stepper stepmotor (StepsForRotation, 4,5,6,7); // Инициализируем шаговый двигатель 200 шагов на оборот, управление обмотками через 4,5,6,7 цифровые выходы




    const int buttonPin = 8; //подключение кнопки
    const int buttonSin = 9; //подключение кнопки
    int buttonState = 0; //переменная состояния кнопок


    void setup()
    {
    pinMode(buttonPin, INPUT); //обозначаем пин 8 входом
    pinMode(buttonSin, INPUT); //обозначаем пин 9 входом
    int Napr = 0; // переменная направления вращения двигателя варианты значений 1 / 0 / -1
    }


    void loop()

    {
    int sensorValue = analogRead(A0); // на А0 переменныый резистор им регулируем скорость вращения
    float Scor = sensorValue * (190 / 1023.0); // определяем скорость вращения шагового двигателя
    stepmotor.setSpeed (Scor) ; // устанавливаем скорость вращения
    buttonState = digitalRead(buttonPin); // Считываем показания на кнопке пин 8
    if (buttonState == HIGH) {
    (Napr = 1); // если кнопка нажата то Napr переменная равна 1 шаговый двигатель должен сделать 1 шаг
    }
    else {(Napr = 0)}; // если кнопка не нажата мотор сделает 0 шагов
    buttonState = digitalRead(buttonSin); // считываем показания на кнопке пин 9
    if (buttonState == HIGH) {
    (Napr = -1); // если кнопка нажата сделать шаговому двигателю -1 шаг
    }
    else {(Napr = 0)}; // если кнопка не нажата двигатель сделает 0 шагов
    stepmotor.step(Napr) ; // Дивагеть должен сделать кол-во шагов согласно переменной Napr ( ругается на эту строку ) что хочет понять не могу

    }
     
  2. Limoney

    Limoney Гик

    Сделайте переменную int Napr глобальной или перенесите переменную в loop static int Napr
    и забыли ;
     
  3. kiva_denis

    kiva_denis Нуб

    На самом деле вроде просто, но у меня не получается, тут ведь много тонкостей.
    Могу я вас попросить скопировать код, отредактировать в текстовом редакторе, вставить обратно ?
     
  4. kiva_denis

    kiva_denis Нуб

    Только что так сделал, теперь ругается на предпоследнюю строку.....
    @Limoney рассчитываю на вас !
     
  5. Limoney

    Limoney Гик

    Код (C++):
    /* Управление шаговым двигателем, подключенного к контроллеру на базе микросхемы L298*/
    #include <Stepper.h> // Подключаем библиотеку управления шаговыми двигателями
    const int StepsForRotation = 200; // 200 шагов на оборот - 1.8 градуса на один шаг
    Stepper stepmotor (StepsForRotation, 4, 5, 6, 7); // Инициализируем шаговый двигатель 200 шагов на оборот, управление обмотками через 4,5,6,7 цифровые выходы

    const int buttonPin = 8; //подключение кнопки
    const int buttonSin = 9; //подключение кнопки
    int buttonState = 0; //переменная состояния кнопок

    void setup()
    {
      pinMode(buttonPin, INPUT); //обозначаем пин 8 входом
      pinMode(buttonSin, INPUT); //обозначаем пин 9 входом
    }

    void loop() {
      static int Napr = 0; // переменная направления вращения двигателя варианты значений 1 / 0 / -1
      int sensorValue = analogRead(A0); // на А0 переменныый резистор им регулируем скорость вращения
      float Scor = sensorValue * (190 / 1023.0); // определяем скорость вращения шагового двигателя
      stepmotor.setSpeed (Scor) ; // устанавливаем скорость вращения
      buttonState = digitalRead(buttonPin); // Считываем показания на кнопке пин 8
      if (buttonState == HIGH) {
        (Napr = 1); // если кнопка нажата то Napr переменная равна 1 шаговый двигатель должен сделать 1 шаг
      }
      else {
        (Napr = 0);
      }
      // если кнопка не нажата мотор сделает 0 шагов
      buttonState = digitalRead(buttonSin); // считываем показания на кнопке пин 9
      if (buttonState == HIGH) {
        (Napr = -1); // если кнопка нажата сделать шаговому двигателю -1 шаг
      }
      else {
        (Napr = 0);
      } // если кнопка не нажата двигатель сделает 0 шагов
      stepmotor.step(Napr) ; // Дивагеть должен сделать кол-во шагов согласно переменной Napr ( ругается на эту строку ) что хочет понять не могу
    }