08-02-2022, 21:15
Dziękuję Ci bardzo za obszerne wyjaśnienia. Dużo czasu spędziłem, by to dobrze zrozumieć, ale się nie udało. Główną przyczyną jest moje całkowite dyletanctwo w kwestii programowania Arduino. Tematem tym zajmuję się dosłownie od dwóch tygodni, nie mając wcześniej żadnego doświadczenia w jakimkolwiek programowaniu. A robię to głównie po to, by utrzymać w jako takiej sprawności mój umysł, bowiem jestem już wiekowym człowiekiem. Doszedłem do wniosku, że trzeba iść do przodu małymi kroczkami. I takim małym kroczkiem byłoby wyjaśnienie mi dlaczego poniższy kod nie zatrzymuje silników po 5 sek?
Jeszcze raz Ci dziękuję i pozdrawiam.
Ta korespondencja nie jest widoczna na forum. Czy ma ona charakter prywatny?
#include <AccelStepper.h>
float Dp = 10 ; // Długość przejazdu (cm)
const int Kog = 180 ; // Kąt obrotu głowicy w st.
const int s = 10 ; // Czas przejazdu (sek)
const int Prp = 800 ; // Prędkość w poziomie( kroki/sek)
const int Pro = 480 ; //Prędkość głowicy( kroki/sek)
unsigned long Ac = 0; // Aktualny cas
unsigned long Zc = 0; // Zapamiętany czas
unsigned long Rc = 0; // Różnica czasu( Ac-Zc)
bool flag = true;
AccelStepper stepper1(1, 7, 6);
AccelStepper stepper2(1, 9, 8);
const int enablePin1 = 10; // Steruje wyłączaniem sterowników
const int enablePin2 = 11;
void setup() {
pinMode(enablePin1,OUTPUT);
pinMode(enablePin2,OUTPUT);
digitalWrite(enablePin1,LOW);
digitalWrite(enablePin2,LOW);
stepper1.setMaxSpeed(10000);
stepper2.setMaxSpeed(10000);
stepper1.setSpeed(Prp);
stepper2.setSpeed(Pro);
}
void loop() {
if (flag=true){
Ac = millis();
Rc = Ac-Zc;
if (Rc <= 5000UL) {
Zc = Ac;
stepper1.runSpeed();
stepper2.runSpeed();
}
else
{
digitalWrite(enablePin1,HIGH);
digitalWrite(enablePin2,HIGH);
}
}
flag=false;
}
Jeszcze raz Ci dziękuję i pozdrawiam.
Ta korespondencja nie jest widoczna na forum. Czy ma ona charakter prywatny?
#include <AccelStepper.h>
float Dp = 10 ; // Długość przejazdu (cm)
const int Kog = 180 ; // Kąt obrotu głowicy w st.
const int s = 10 ; // Czas przejazdu (sek)
const int Prp = 800 ; // Prędkość w poziomie( kroki/sek)
const int Pro = 480 ; //Prędkość głowicy( kroki/sek)
unsigned long Ac = 0; // Aktualny cas
unsigned long Zc = 0; // Zapamiętany czas
unsigned long Rc = 0; // Różnica czasu( Ac-Zc)
bool flag = true;
AccelStepper stepper1(1, 7, 6);
AccelStepper stepper2(1, 9, 8);
const int enablePin1 = 10; // Steruje wyłączaniem sterowników
const int enablePin2 = 11;
void setup() {
pinMode(enablePin1,OUTPUT);
pinMode(enablePin2,OUTPUT);
digitalWrite(enablePin1,LOW);
digitalWrite(enablePin2,LOW);
stepper1.setMaxSpeed(10000);
stepper2.setMaxSpeed(10000);
stepper1.setSpeed(Prp);
stepper2.setSpeed(Pro);
}
void loop() {
if (flag=true){
Ac = millis();
Rc = Ac-Zc;
if (Rc <= 5000UL) {
Zc = Ac;
stepper1.runSpeed();
stepper2.runSpeed();
}
else
{
digitalWrite(enablePin1,HIGH);
digitalWrite(enablePin2,HIGH);
}
}
flag=false;
}