Автоламинатор на ШД
Добавлено: 08 дек 2017, 21:00
Доброго времени суток!
Обсуждение и вопросы по темам сайта.
http://mypractic-forum.ru/
#include <StepDirDriverL.h>
#include <MsTimer2.h>
//int state;
int lastState;
bool state;
int c = 0;
int volatile count;
int dir_pin = 6;
int step_pin = 3 ;
int dataPin = 12;
int enablePin = 8;
StepDirDriverL stepperq(3, 6, 8);
void setup() {
MsTimer2::set(1, timerInt);
MsTimer2::start();
stepperq.setMode(0, false);
digitalWrite(enablePin, HIGH);
Serial.begin(115200);
stepperq.setDivider(4);
pinMode(dataPin, INPUT_PULLUP);
}
void loop () {
int sensor = 0;
sensor = digitalRead(dataPin);
Serial.print("Data:");
Serial.print(sensor);
Serial.print("\n");
// Serial.print("State:");
// Serial.print(state);
// Serial.print("\n");
state = false;
if (sensor == 1) {
state = true;
if (state == true) {
//stepperq.setDivider(4);
stepperq.step(-sensor * 10);
stepperq.setDivider(2);
Serial.println(stepperq.readSteps());
lastState == true;
}
}
if (sensor == 0) {
if (lastState == true) {
stepperq.step(-75);
Serial.println("movingCounter");
lastState == false;
Serial.print("LastState:");
Serial.print(lastState);
Serial.print("\n");
}
}
lastState = state;
}
void timerInt () {
// Serial.println(count);
stepperq.control();
count++;
}
Код: Выделить всё
byte mode=0; // режим
void setup() {
}
void loop() {
if(mode == 0) {
// ожидание сигнала от датчика
}
else if(mode == 1) {
// пауза 0,5 сек
}
else if(mode == 2) {
// вращение двигателя с начальной скоростью
}
else if(mode == 3) {
// вращение двигателя, ожидания сигнала от датчика
}
else if(mode == 4) {
// ожидание окончания дополнительных шагов
}
else mode=0;
}
Код: Выделить всё
#include <TimerOne.h>
#include <StepDirDriverL.h>
unsigned int count;
int dir_pin = 6;
int step_pin = 3 ;
int dataPin = 12;
int enablePin = 8;
StepDirDriverL stepperq(3, 6, 8);
byte mode=0; // режим
void setup() {
Timer1.initialize(500); // инициализация таймера 1, период 500 мкс
Timer1.attachInterrupt(timerInt, 500); // задаем обработчик прерываний}
stepperq.setMode(0, false);
digitalWrite(enablePin, HIGH);
Serial.begin(115200);
stepperq.setDivider(4);
pinMode(dataPin, INPUT_PULLUP);
}
void loop() {
if(mode == 0) {
//--------------------------------------- ожидание сигнала от датчика
if(digitalRead(dataPin) == HIGH) {
// переход на режим 1
count=0;
mode=1;
}
}
else if(mode == 1) {
//--------------------------------------- пауза 0,5 сек
if(count > 1000) {
// прошли 0,5 сек, переход на режим 2
stepperq.setDivider(10); // начальная скорость вращения
stepperq.step(-20); // число шагов начальной скорости
mode=2;
}
}
else if(mode == 2) {
//--------------------------------------- вращение двигателя с начальной скоростью
if(stepperq.readSteps() == 0) {
// двигатель остановился, переход на режим 3
stepperq.setDivider(5); // скорость вращения
stepperq.step(-30000); // постоянное вращение
mode=3;
}
}
else if(mode == 3) {
//--------------------------------------- вращение двигателя, ожидания сигнала от датчика
stepperq.step(-30000); // постоянное вращение
if(digitalRead(dataPin) == LOW) {
// переход на режим 4
stepperq.step(-100); // дополнительные шаги
count=0;
mode=4;
}
}
else if(mode == 4) {
//--------------------------------------- ожидание окончания дополнительных шагов
if(stepperq.readSteps() == 0) {
// двигатель остановился, переход на режим 0
mode=0;
}
}
else mode=0;
}
void timerInt () {
stepperq.control();
count++;
}