UART - SD Card
- Войдите на сайт для отправки комментариев
помогите пожалуйста выровнять кусочек кода. давненько сделал лазерный гравер, лазер бюджетный рисует долго, решил сделать автономку, столкнулся с проблемой. есть ардуино про мини + картридер. на карте памяти построчний G-kod цыфри буквы выглядит примерно так
G71 M08 G0 F600 G1 F150 M05 G0 Y0 X0.38 M03 G1 Y0 X0.5
с карты памяти считываєтся строчка, отправлеется в станок, на что станок должен ответить принял команду "ок" или "error: Bad number format" вобщем немогу обработать, и следующяя команда "ок" готов принять следуюцюю команду.
набросал вот такой кодик
#include <SPI.h>
#include <SD.h>
#include <SoftwareSerial.h>
SoftwareSerial cnc(8, 9);
const int chipSelect = 10;
//#define CMD_MAX_TIME 10000
File logFile;
void setup()
{
pinMode(SS, OUTPUT);
SD.begin(chipSelect);
Serial.begin(115200);
cnc.begin(115200);
}
void loop()
{
File dataFile = SD.open("cat.cnc");
if (dataFile){
while (dataFile.available())
{
char rByte = dataFile.read();
Serial.write(rByte);
cnc.print(rByte);
if (rByte == 13)
{
rByte = Serial.read();
if (rByte != -1)
{
cnc.print(rByte);
}
while (rByte != 111 ) { // Выход по timeOut
rByte = Serial.read();
if (rByte != -1)
{
cnc.print(rByte);
}
}
cnc.print(rByte);
}
}
dataFile.close();
}
else {Serial.println("error opening cat.cnc");}
}
SoftwareSerial cnc - виртуальный порт в котором смотрю лог
первая проблема ето код команды "ок" я думал он "111" но как оказалось ето лишь первая буква "о"
и в результате получился вот такой лог:
G71 Grbl 0.9i ['$' foo M08 r help] erroo G0 F600 r: Unsuppoo G1 F150 rted coo M05 S3000 mmand oo G0 Y0 X0.38 k oo M03 k oo G1 Y0 X0.5 k oo M05 k oo G0 Y0 X0.63 k oo M03 k oo G1 Y0 X0.75 k oo M05 k oo G0 Y0 X1.5 k oo M03 k oo G1 Y0 X1.63 k oo M05 k oo G0 Y0 X4.13 k oo M03 k oo G1 Y0 X4.25 k oo M05 k oo G0 Y0 X4.38 k oo M03 k oo G1 Y0 X4.5 k oo M05 k oo G0 Y0 X6 k oo M03 k oo G1 Y0 X6.13 k oo M05 k oo G0 Y0 X6.63 k oo M03 k oo G1 Y0 X6.75 k oo M05 ......................
помогите пожалуйста подружить карту памяти с портом.
автономка должна отследить ети 2 "ок" первый "ок" или ошибка автономка игнорирует вернее будет сигнализировать не екран *обработчик напишу. и должна ждать *если станок на паузе, ждать очень долго, и на появления 2 "ок" должон отправить следующюю строку. давно мучюсь, и немогу написать. да можно купить автономку, можно купить ардуино мега и залить готовую прошивку, но автономка будет стоять дороже гравера. а он делался с подручных материалов. сатнок собран на ардуино нано, автономку хочу сделать на промини + екран 2004. пока застрял на карте памяти