(27-02-2017, 23:59)namok napisał(a):(27-02-2017, 22:18)tanderer napisał(a): Wydaje mi się, że w tym przypadku najlepiej byłoby użyć zmiennej w postaci (currentMillis - previousMillis >= interval), ale to sie nie kompiluje.
Taki kod na pewno się nie skompiluje. Wklej coś co można przeanalizować.
Tak, bo sugerowałem się trochę tym: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay/
i próbowałem coś takiego:
Kod:
#include <AccelStepper.h>
unsigned long previousMillis = 0;
unsigned long val = (millis() - previousMillis);
int motorPin = 11;
int dirPin = 12;
int motorDirPin = 7;
int motorStepPin = 6;
AccelStepper stepper(1, motorStepPin, motorDirPin);
void setup()
{
pinMode(motorPin, OUTPUT);
pinMode(dirPin, OUTPUT);
stepper.setMaxSpeed(9600.0);
stepper.setAcceleration(10000.0);
Serial.begin(9600);
}
void loop(){
if(Serial.available() > 0){
}
if (Serial.read() == 'z') {
switch (val) {
case '1000':
digitalWrite(dirPin, HIGH);
analogWrite(motorPin, 244);
delay(2000);
stepper.runToNewPosition(0);
delay(6000);
analogWrite(motorPin, 0);
break;
case '19000':
digitalWrite(dirPin, HIGH);
analogWrite(motorPin, 244);
delay(2000);
stepper.runToNewPosition(256);
delay(6000);
analogWrite(motorPin, 0);
break;
case '29000':
digitalWrite(dirPin, HIGH);
analogWrite(motorPin, 244);
delay(2000);
stepper.runToNewPosition(512);
delay(6000);
analogWrite(motorPin, 0);
break;
case '41000':
digitalWrite(dirPin, HIGH);
analogWrite(motorPin, 244);
delay(2000);
stepper.runToNewPosition(768);
delay(6000);
analogWrite(motorPin, 0);
break;
case '56000':
digitalWrite(dirPin, HIGH);
analogWrite(motorPin, 244);
delay(2000);
stepper.runToNewPosition(1024);
delay(6000);
analogWrite(motorPin, 0);
break;
}
}
}
to oczywiście tylko pomysł, który zresztą i tak się nie kompiluje
[url=https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay/][/url]