#include <Arduino.h>
#include <avr/pgmspace.h> // Библиотека для работы с PROGMEM
// Определяем массив строк в памяти Flash
const char gcodeArray[][8] PROGMEM = {
"G-150",
"M104",
"F1500",
"R-230",
"G28",
"F-150",
"F-200",
"F200",
"F300",
"F-150",
"F500",
"F100",
"G1X100"
};
const int gcodeCount = sizeof(gcodeArray) / sizeof(gcodeArray[0]);
char MyStr[8]; // Массив для хранения G-code (7 символов + 1 для '0')
bool MyStep = false; // Булевая переменная для управления записью
unsigned long previousMillis = 0; // Переменная для хранения времени последнего срабатывания
const long interval = 1000; // Интервал в миллисекундах (1 секунда)
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long currentMillis = millis(); // Получаем текущее время
// Проверяем, прошло ли 1 секунда
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis; // Обновляем время последнего срабатывания
MyStep = true; // Устанавливаем MyStep в true
}
if (MyStep) {
static int index = 0; // Индекс текущего G-code
// Считываем строку из PROGMEM
strncpy_P(MyStr, gcodeArray[index], sizeof(MyStr)); // Копируем G-code в MyStr
MyStr[sizeof(MyStr) - 1] = '0'; // Убедимся, что строка завершена
Serial.println(MyStr); // Выводим текущее значение MyStr
// Переход к следующему G-code
index++;
if (index >= gcodeCount) {
index = 0; // Зацикливаем индексы, если нужно
}
MyStep = false; // Сбрасываем MyStep, чтобы не записывать несколько раз за один цикл
}
// Другие действия в вашем цикле
}