Страница 14 из 17

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 18 янв 2019, 21:25
Ddimon
На русском языке.Только hex . прошивать через USBasp. Не ту прошивку вроде положил исправляю

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 18 янв 2019, 21:33
Ddimon
Там два файлика один с загрузчиком другой без, если прошить с загрузчиком то ваша ардуина должна стать Uno. С загрузчиком чуть больше размером можно посмотреть в свойствах файла.

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 22 янв 2019, 07:08
tecnocat
Для русского языка можно поковыряться в сторону Optiboot,
тогда для прошивки будет полных 32К,
ну и русский придется делать в однобайтной кодировке типа DOS или Win1251 чтобы сэкономить память,
что с переходом на среду Arduino 1.8.XX довольно проблематично.

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 22 янв 2019, 22:05
Ddimon
Здравствуйте , я не могу разобраться в части кода выполнения УП буфер заполняется одной строкой или несколько целых строк , можно попросить этот кусочек скетча с подробными комментариями. И работа со строками для меня тёмный лес а тоже хотелось бы понять как происходит подмена скорости и она не работает если строка начинается с F.

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 24 янв 2019, 07:43
tecnocat

Код: Выделить всё

void execute_file(String &fname) {
  current_line = skip = skip_page = 0;
  int8_t pos_start = 0;
  int8_t pos_end = 0;
  char feed[10];
  char temp[40];
  feed_dig = feed_safe;

  if (EEPROM.read(EEPROM_START) == 1) {
    exec_mode = EXEC_PLAY;
  } else if (EEPROM.read(EEPROM_START) == 0) {
    exec_mode = EXEC_PAUSE;
  }

  Serial.flush();
  pp_menu = 0;
  exec_screen();
  buttons_screen();
  process_keys();
  File text = SD.open(fname, O_READ); // открытие файла
  if (text) {
    while (text.available()) {
      process_keys();
      if (exec_mode == EXEC_EXIT) {
        text.close();
        exit;
      }
      current_line++;
      memset(buff, 0, sizeof(buff));
      readcnt = text.readBytesUntil(0x0A, buff, sizeof(buff));  // Читаем строку до перевода строки
      if (readcnt > 0) {
        buff[readcnt] = 0;
        pos_start = 0;
        for (int8_t pe = 0; pe < sizeof(buff); pe++) {  // Ищем букву F как начало команды FEED RATE
          if ((buff[pe] == 0x46)) {
            pos_start = pe;
            break;
          }
        }
        if (pos_start > 0) { // если нашли - ищем конец команды
          for (int8_t pe = pos_start + 1; pe < sizeof(buff); pe++) {
            if ((buff[pe] > 0x39) || (buff[pe] == 0)) {
              pos_end = pe;
              break;
            }
          }
          strncpy(feed, buff + pos_start + 1, pos_end - pos_start);  // выделяем значение FEED
          feed_dig = strtol(feed, 0, 0);   // конвертируем значение FEED в число
          if (feed_dig > feed_safe) feed_dig = feed_safe;   // сравниваем значение FEED с безопасным
          ltoa(feed_dig, feed, 10);
          for (int8_t pe = 0; pe < 10; pe++) {
            if (feed[pe] == 0) {
              pos_end = pe - 1;
              break;
            }
          }
          strncpy(buff + pos_start + 1, feed, pos_end);    // заменяем значение FEED безопасным
        }
        for (int8_t pe = 0; pe < sizeof(buff); pe++) {
          if (buff[pe] == 0x0D) {
            buff[pe] = 0x0A;
            buff[pe + 1] = 0x00;
            break;
          }
          if (buff[pe] == 0x0A) {
            buff[pe + 1] = 0x00;
            break;
          }

        }
        Serial.print(buff); // Выдаем строку в порт
        Serial.flush();
        memset(temp, 0, sizeof(temp));
        strncpy(temp, buff, sizeof(temp));
        for (int8_t pe = 0; pe < sizeof(temp); pe++) {
          if ((temp[pe] == 0x0D) || (temp[pe] == 0x0A)) {
            temp[pe] = 0x00;
            break;
          }
        }

        if (exec_mode == EXEC_STEP) { // если пошаговое исполнение печатаем команду на экран
          tft.setTextSize(1);
          tft.setCursor(0, (skip + 3)* CHAR_HEIGHT);
          printTFTString((char*)empty_line); tft.println();
          printTFTString((char*)empty_line); tft.println();
          tft.setCursor(0, (skip + 3)* CHAR_HEIGHT);
          tft.setTextColor(YELLOW, BLACK);
          tft.print(buff); 
          skip++;
        }
        Serial.flush();
      }

      while (Serial.available() == 0) { // ждем ответа от GRBL
        encRead(); if ((encClick) && (exec_mode == EXEC_PLAY)) {
          pp_menu = 2;
          exec_mode = EXEC_PAUSE;
          process_keys();
        }
        if (exec_mode == EXEC_EXIT) break;
      }
      while (Serial.available() > 0) {  // если пришел ответ от GRBL
        memset(buff, 0, sizeof(buff));
        readcnt = Serial.readBytesUntil(0x0A, buff, sizeof(buff));
        if (readcnt > 0) {
          buff[readcnt] = 0;
          if (strncmp(buff, "error", 5) == 0) {   // смотрим ошибку и печатаем на экран
            delay(10);
            Serial.flush();
            tft.setTextSize(1);
            tft.setCursor(0, (skip + 3)* CHAR_HEIGHT);
            printTFTString((char*)empty_line);
            printTFTString((char*)empty_line);
            printTFTString((char*)empty_line);
            tft.setCursor(0, (skip + 3)* CHAR_HEIGHT);
            tft.setTextColor(RED, BLACK);
            tft.print(current_line);
            printTFTString((char*)trail);
            tft.println(temp);
            tft.print(buff);
            memset(temp, 0, sizeof(temp));
            if (EEPROM.read(EEPROM_PAUSE) == 1) exec_mode = EXEC_PAUSE;
            skip++;
          }
          if ((strncmp(buff, "ok", 2) == 0)) {    // от GRBL пришло сообщение о нормальном исполнении 
            delay(10);
            Serial.flush();
          }
        }
        encRead();
        if ((encClick) && (exec_mode == EXEC_PLAY)) { // обработка клика энкодера
          pp_menu = 2;
          exec_mode = EXEC_PAUSE;
          OK_KEY = encClick = false;
          process_keys();
        }
        if (exec_mode == EXEC_EXIT) break;
      }
      exec_screen();
      if (skip > (MAX_DISPLAY_LINES - 5))skip = 0;
    }
  }
  text.close();
}

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 30 янв 2019, 12:59
tecnocat
Ddimon писал(а): Здравствуйте , я не могу разобраться в части кода выполнения УП буфер заполняется одной строкой или несколько целых строк , можно попросить этот кусочек скетча с подробными комментариями. И работа со строками для меня тёмный лес а тоже хотелось бы понять как происходит подмена скорости и она не работает если строка начинается с F.
И никаких комментариев не последовало

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 17 фев 2019, 11:52
Lucyfire999
druksel писал(а):уважаемый Технокот, вы данную разработку забросили?? попробовал повторить - но имеются вопросы.
при старте данного девайса не всегда удается получить одинаковые скорости обмена между ардуинками.
ардушка с вашей прошивкой похоже работает на 57600. а ардуха с ГРБЛ - на 115200.
есть ли в вашей прошивке возможность жестко установить скорость обмена между ардуинками?
с уважением, Андрей.
Добрый день. У меня такиеже проблемы ((( подскажи пожалуйста как их решить.

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 12 апр 2019, 10:05
maximius
Добрый день всем форумчанам. Давно наблюдаю за данной темой, и наконец-то получил все запчасти для реализации. Собрал по схеме. Дисплей работает, файлы с карты читает, но есть несколько ошибок:
1. В ручном режиме после того, как выбираю ось, при повороте энкодера появляется шаг от 1 до 5 и все, девайс на повороты энкодера не реагирует. Только на кнопку энкодера, по которому выходит в выбор оси. Так во всех прошивках, включая загрузку hex.
2. При запуске управляющей программы с карты перечень файлов читается, но при запуске файла экран белеет. Фото во вложении.
В терминале сообщения проходят, пробовал разные версии grbl и контроллера. Пробовал подключать внешнее питание. Результат тот же.

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 15 апр 2019, 18:30
tecnocat
Почему белый экран не скажу, да и прошивку надо пересобирать под свежую версию Arduino Idea, может глюки уйдут

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 15 апр 2019, 18:33
tecnocat
Lucyfire999 писал(а):
druksel писал(а):уважаемый Технокот, вы данную разработку забросили?? попробовал повторить - но имеются вопросы.
при старте данного девайса не всегда удается получить одинаковые скорости обмена между ардуинками.
ардушка с вашей прошивкой похоже работает на 57600. а ардуха с ГРБЛ - на 115200.
есть ли в вашей прошивке возможность жестко установить скорость обмена между ардуинками?
с уважением, Андрей.
Добрый день. У меня такиеже проблемы ((( подскажи пожалуйста как их решить.
Если посмотреть раздел Setup скетча - там инициализация 115200, либо неправильно выбрана модель ардуины при компиляции, либо с переходом на свежую версию ice есть глюк в библиотеках

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 04 май 2019, 01:56
Yashcher
maks9744 писал(а):контролер на grbl в качестве дисплея использовать сенсорный дисплей Nextion
Какой именно Nextion, и можно ли посмотреть что у Вас получилось?

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 17 май 2019, 21:35
Yashcher
Вопрос к уважаемому tecnocat.
Возможно ли добавить команду типа
M47 Repeat program from first line ?

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 02 июн 2019, 20:31
Alex261153
Здравствуйте все. Наконец я все собрал и запустил. Но есть два вопроса. 1- мерцание экрана. 2- по команде M5S0 выдает error2.Просто M5 или M5S1000 работает без ошибок. Помогите.

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 03 июн 2019, 08:42
nevkon
Что делает этот код не пытались выяснить?
M5 - остановка шпинделя.
S1000 (S0) - задать частоту вращения в 1000 об/мин (0 об/мин) шпинделю.
А теперь скажите какой смысл задавать частоту вращения остановленному шпинделю?

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 03 июн 2019, 09:23
Alex261153
Сейчас точно не помню, но было по М5 лазер не выключился, надо было дописывать S0.
«Error: 2»: _ («Формат числового значения недопустим или отсутствует ожидаемое значение.»),

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 21 июн 2019, 22:21
udaff
tecnocat, Приветствую! Купил, собрал, полетело. Arduino Pro mini, энкодер ky-040, Дисплей на st7735 (по заявлению продавца)
Но есть проблема с отображением спец. символов:
IMG_20190621_220119.jpg (5439 просмотров) <a class='original' href='./download/file.php?id=164983&sid=f7752f29fcea96340e91118eae1b008d&mode=view' target=_blank>Загрузить оригинал (658.54 КБ)</a>
IMG_20190621_220149.jpg (5439 просмотров) <a class='original' href='./download/file.php?id=164984&sid=f7752f29fcea96340e91118eae1b008d&mode=view' target=_blank>Загрузить оригинал (294.29 КБ)</a>
IMG_20190621_220217.jpg (5439 просмотров) <a class='original' href='./download/file.php?id=164985&sid=f7752f29fcea96340e91118eae1b008d&mode=view' target=_blank>Загрузить оригинал (820.85 КБ)</a>
IMG_20190621_220255.jpg (5439 просмотров) <a class='original' href='./download/file.php?id=164986&sid=f7752f29fcea96340e91118eae1b008d&mode=view' target=_blank>Загрузить оригинал (892.61 КБ)</a>
Перепробовал оба скетча под разные библиотеки, пробовал заливать старой IDE 1.6.7 - безрезультатно.
Помогите пожалуйста

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 23 июн 2019, 11:35
Alex261153
Вот попробуй вот это, не обращай внимание на <TFT_ILI9163C.h>, они одинаковые похоже.
Не получается вставить картинку.

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 23 июн 2019, 11:46
Alex261153
Вот и картинки.

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 23 июн 2019, 14:27
udaff
Ничего не изменилось. Возможно мне нужны библиотеки как у Вас

Re: Arduino GRBL Companion - Автономный контроллер для GRBL

Добавлено: 23 июн 2019, 15:13
Alex261153
Все библиотеки с 1-ой страницы "Обновление проекта - собрал все в кучу
Архив с исходниками и библиотеками:
full_pack_27_02_2017.zip"
Библиотеки не обновляй и все получится.