02-04-2019, 20:16
Witam
Uzyłem biblioteki accelstepper, jest prawie ok. narazie podpiołem sterowanie na przyciskach. Problem mam tylko kiedy chcę regulować prędkość, regulacja silnika dc działa natomiast silnik krokowy nie reaguje.
Uzyłem biblioteki accelstepper, jest prawie ok. narazie podpiołem sterowanie na przyciskach. Problem mam tylko kiedy chcę regulować prędkość, regulacja silnika dc działa natomiast silnik krokowy nie reaguje.
Kod:
#include <AccelStepper.h> // Include the header file
// change this to the number of steps on your motor
// create an instance of the stepper class using the steps and pins
AccelStepper stepper(4,2,9,10,12);
int w1 = 5; // wiatrak pwm
int w2 = 4;
int w3 = 7;
//int val = 50;
//buttons
const int on = A0;
const int plus = A1;
const int minus = A2;
int vel2 = 500; // naped
int vel1 = 58; //wiatrak
int buttonState = 0;
int flag=0;
int buttonflag=LOW;
int buttonStatePlus = 0;
int flagPlus=0;
int buttonFlagPlus=LOW;
int buttonStateMinus = 0;
int flagMinus=0;
int buttonFlagMinus=LOW;
void setup()
{
Serial.begin(9600);
pinMode(w1, OUTPUT);
// pinMode(on, INPUT);
pinMode(on, INPUT);
pinMode(plus, INPUT);
pinMode(minus, INPUT);
stepper.setMaxSpeed(1000);
stepper.setSpeed(vel2);
stepper.setAcceleration(500);
}
void loop()
{
buttonflag=buttonState; // zapamiętanie poprzedniego stanu porzycisku
buttonState = digitalRead(on);
//delay(100);
if (buttonflag!=buttonState) //sprawdzamy czy nastąpiła zmiana stanu przycisku
{
if (buttonState == HIGH) flag=!flag;
}
// }
//...ones, turn led on!
if ( flag == 1){
Serial.println("Both Motor goes ON");
analogWrite(w1, vel1); // Sets speed variable via PWM
digitalWrite(w2, HIGH);
digitalWrite(w3, LOW);
stepper.setSpeed(vel2);
stepper.runSpeed();
}
else if ( flag == 0){
Serial.println("Both Motor goes OFF");
analogWrite(w1, 0); // Sets speed variable via PWM
digitalWrite(w2, LOW);
digitalWrite(w3, LOW);
stepper.stop();
digitalWrite(2, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(12, LOW);
}
if ( digitalRead(plus)){
Serial.println("Plus");
vel1 = vel1 + 5;
analogWrite(w1, vel1);
//vel2 = vel2 + 50;
stepper.setSpeed(vel2+50);
//stepper.runSpeed();
delay(100);
}
else if (digitalRead(minus)) //sprawdzamy czy nastąpiła zmiana stanu przycisku
{
Serial.println("Minus");
vel1 = vel1 - 5;
analogWrite(w1, vel1);
//vel2 = vel2 - 50;
stepper.setSpeed(vel2-50);
//stepper.runSpeed();
delay(100);
}
}