#include <SD.h>
#include <Stepper.h>
//#include <String.h>
const int lineMumber = 10;
int steps[lineMumber]; // Массив для хранения количества шагов
int directions[lineMumber]; // Массив для хранения направления (0 — по часовой стрелке, 1 — против часовой стрелки)
int pauses[lineMumber]; // Массив для хранения паузы в мс после завершения вращения
bool done = false; // Признак окончания работы
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 4, 5, 6, 7);
const int CSPin = 10;
File root;
void setup()
{
Serial.begin(115200);
Serial.print("Initializing SD card... ");
if (!SD.begin(CSPin)) //Если ошибка инициализации, то блокирование работы
{
Serial.println("Card initialization failed!");
while (1);
}
Serial.println("initialization done.");
Serial.println("Files in the card:"); //считывание имен всех файлов на карте
root = SD.open("/");
Serial.println("");
File dataFile = SD.open("dataFile.txt");
if (dataFile)
{
int i = 0;
while (dataFile.available() && i < lineMumber)
{
String inputString = dataFile.readStringUntil('\n'); // Чтение строки до символа новой строки
//Serial.println(inputString);
int firstNumber = inputString.substring(0, inputString.indexOf(' ')).toInt();
inputString.remove(0, inputString.indexOf(' ') + 1);
int secondNumber = inputString.substring(0, inputString.indexOf(' ')).toInt();
inputString.remove(0, inputString.indexOf(' ') + 1);
int thirdNumber = inputString.toInt();
steps[i] = firstNumber;
directions[i] = secondNumber;
pauses[i] = thirdNumber;
i++;
}
dataFile.close();
}
else {
Serial.println("Error opening dataFile!");
}
/*
for (int i = 0; i < 10; i++)
{
Serial.print(steps[i]); Serial.print(" ");
}
*/
}
void loop()
{
if (!done) {
for (int count = 0; count < lineMumber; count++) {
motoControl(steps[count], directions[count]);
delay(pauses[count]);
}
done = true;
Serial.print("Finish");
}
}
void motoControl(int steps, int direction) {
myStepper.setSpeed(100);
if (direction) {
myStepper.step(steps);
} else {
myStepper.step(-steps);
}
}