#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, чтобы не записывать несколько раз за один цикл
    }
    // Другие действия в вашем цикле
}