Дивлюся я на статтю у Вікіпедії про G-коди і сумно зітха́ю. Там все керування в дюймах і міліметрах. І взагалі я не певен, що це добре підходить для масштабу Arduino.
Може є десь загальновідо́мий, усталений протокол керування по USB чимось на рівні окремих кроків в кроковому двигуні? Буквально, «встановити затримку між кроками 150 мс, зробити 4096 кроків уперед».
Якщо не знайду готового протоколу, доведеться виду́мувати щось своє.
Я деякий час тому для себе зробив один такий примітивний протокол, і він був дуже, дуже жахливий. Користуватись можна через термінал: там, по за́думу, треба вводити в десятко́вому виді через пробіл два цілих числа (бо вже є Serial.parseInt()
для самих лінивих), тобто команду та аргумент, та тиснути Enter. Не робіть так :)
Треба придумати протокол з отакими властивостями:
- обов’язково має бути текстовий варіант, щоб можна було руками в терміна́лі це відлагоджувати;
- опціонально може бути більш ефективний бінарний варіант;
- обов’язково має бути асинхронним, бо деякі команди виконуються тривалий час;
- має бути двохстороннім: контролер має звітувати про стан виконання команд, а також за потреби передавати значення з сенсорів.
Нащо? Щоб можна було високорі́вневу логіку зробити десь у компі.