#include <SD.h>
#include <Stepper.h> //подключение библиотеки
int motorSpeed = 100; // масштабирование этого значения
int stepsPerRevolution = 200; //количество шагов на оборот
Stepper myStepper(stepsPerRevolution, 2, 3, 4, 5); //управление выводами 8 - 11
int stepCount = 0; //количество шагов, которое сделал двигатель
const int CSPin = 10;
File root;
void setup()
{
Serial.begin(115200);
}
int direction = 1;
int myDelay = 0;
bool isFirstLoop = true;
void loop()
{
myStepper.setSpeed(200); //установка нового значения скорости
if (isFirstLoop)
{
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("/");
printDirectory(root); //вывод всех имен файлов в директории
Serial.println("");
//Пример чтения из файла
File textFile = SD.open("wokwi.txt");
if (textFile)
{
Serial.print("wokwi.txt:\n");
while (textFile.available())
{
String stepsDirectionPause = textFile.readStringUntil('\n');
int indexSep1 = stepsDirectionPause.indexOf(' ');
stepsPerRevolution = stepsDirectionPause.substring(0, indexSep1).toInt();
int indexSep2 = stepsDirectionPause.indexOf(' ', indexSep1 + 1);
direction = stepsDirectionPause.substring(indexSep1, indexSep2).toInt() == 1 ? 1 : -1;
myDelay = stepsDirectionPause.substring(indexSep2, stepsDirectionPause.length()).toInt();
myStepper.step(direction * stepsPerRevolution); // сделать 1/100 полного оборота
delay(myDelay);
Serial.println(stepsDirectionPause);
}
textFile.close();
}
else {
Serial.println("error opening wokwi.txt!");
}
isFirstLoop = !isFirstLoop;
}
}
//функция чтения имен файлов
void printDirectory(File dir)
{
while (1)
{
File entry = dir.openNextFile(); //переход к следующему файлу
if (! entry) //выход, если больше нет файлов
{
break;
}
Serial.print(entry.name()); //вывод имени
if (entry.isDirectory()) //если это директория, то ее размера нет
{
Serial.println("/");
} else
{
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}