Arduino UNO + шаговый двигатель

Scratch_nl
Offline
Зарегистрирован: 15.10.2018
Оно работает, Ахаха.
Не знаю как, но оно работает, хоть и не правильно
#include <AccelStepper.h>
     AccelStepper Stepper1(1,10,12);
     
     int steeps = 100; // количество шагов
     long time1 = 0; // Исходное значение для таймера.
     long time2 = 1000;

     unsigned long mill;
     const byte btnPin = A0;
     bool btn;
     const byte relePin = 5;
     bool Myrele;
     unsigned long past;
     const unsigned long time1sec = 3000;
     unsigned long eventTime=0;
  

void setup() {
  
  
      Stepper1.setMaxSpeed(500); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
      Stepper1.setAcceleration(7000); //устанавливаем ускорение (шагов/секунду^2)
      
      pinMode(btnPin, INPUT_PULLUP);
      pinMode(relePin, OUTPUT);
      digitalWrite(relePin, Myrele = 0);
      
}

void loop() {
        unsigned long r = millis();
   
        mill = millis();
        btn = digitalRead(btnPin);
     
        
        if (!btn) { /* если кнопка нажата*/
        delay (50);
        digitalWrite(relePin, Myrele = 1); /*то вкл реле*/
        past = mill;
   }
      if (Myrele & mill - past >= time1sec) {/*если реле вкл больше 3 сек*/
       digitalWrite(relePin, Myrele = 0);/*то выкл*/
       past = mill;
   }
   
        if(digitalRead(btnPin) == 0)
    {

      if(r - time1 > time2)
        {

         delay (2000);
         Stepper1.move(steeps);
         steeps=steeps*1;
         time1 = r;
        }

       }

        Stepper1.run();
}

 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Scratch_nl пишет:

Оно работает, Ахаха.
Не знаю как, но оно работает, хоть и не правильно

Это в анналы...

Scratch_nl
Offline
Зарегистрирован: 15.10.2018

DetSimen пишет:

Scratch_nl пишет:

Оно работает, Ахаха.
Не знаю как, но оно работает, хоть и не правильно

Это в анналы...

Да

Scratch_nl
Offline
Зарегистрирован: 15.10.2018

теперь работает лучше

#include <AccelStepper.h>
     AccelStepper Stepper1(1,10,12);
     
     int steeps = 100; // количество шагов
     long time1 = 0; // Исходное значение для таймера.
     long time2 = 1000;

     unsigned long mill;
     const byte btnPin = A0;
     bool btn;
     const byte relePin = 5;
     bool Myrele;
     unsigned long past;
     const unsigned long time1sec = 4000;
     unsigned long eventTime=0;
  

void setup() {
  
  
      Stepper1.setMaxSpeed(500); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
      Stepper1.setAcceleration(7000); //устанавливаем ускорение (шагов/секунду^2)
      
      pinMode(btnPin, INPUT_PULLUP);
      pinMode(relePin, OUTPUT);
      digitalWrite(relePin, Myrele = 0);
      
}

void loop() {
        unsigned long r = millis();
   
        mill = millis();
        btn = digitalRead(btnPin);
     
        
        if (!btn) { /* если кнопка нажата*/
        delay (1000);
        digitalWrite(relePin, Myrele = 1); /*то вкл реле*/
        past = mill;
        
        if(r - time1 > time2)
    {

          delay (2000);
          Stepper1.move(steeps);
          steeps=steeps*1;
          time1 = r;
     }
   }
   Stepper1.run();
   
      if (Myrele & mill - past >= time1sec) {/*если реле вкл больше 3 сек*/
       digitalWrite(relePin, Myrele = 0);/*то выкл*/
       past = mill;
   }
   
}