Намоточный станок на ардуино версия 3 0 ошибка компиляции

Замените весь код до void loop()
/* Name: Winding machine    
   Description: Arduino ATmega 328P + Stepper motor control CNC Shield v3 + 2004 LCD + Encoder KY-040
   Author:      TDA
   Ver:         2.1b_I2C_DEBUG
   Date:        20/11/2019

       Arduino pinout diagram:
          _______________
         |      USB      |
         |           AREF|
         |            GND|
         |             13| DIR A
         |RESET        12| STEP A
         |3V3         #11| STOP BT
         |5V          #10| BUZ OUT
         |GND          #9|
         |VIN           8| EN STEP
         |               |
         |              7| DIR Z
         |             #6|
  LCD RS |A0 14        #5| ENCODER CLK
  LCD EN |A1 15         4| STEP Z
  LCD D4 |A2 16   INT1 #3| ENCODER SW
  LCD D5 |A3 17   INT0  2| ENCODER DT
  LCD D6 |A4 18      TX 1|
  LCD D7 |A5 19      RX 0|
         |__A6_A7________|                        
*/

//**************************************************************  
    
#define ShaftStep 50 // ShaftStep = Шаг резьбы*50

//**************************************************************

#include <avr/io.h>
#include <avr/interrupt.h>
//#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

#define ENC_CLK   2 // Даем имена номерам пинов
#define ENC_SW    3
#define STEP_Z    4 
#define ENC_DT    5 
#define DIR_Z     7
#define EN_STEP   8
#define BUZZ_OUT  10
#define STOP_BT   11
#define STEP_A    12
#define DIR_A     13
#define RS        14
#define EN        15
#define D4        16
#define D5        17
#define D6        18
#define D7        19

byte up[8] =   {0b00100,0b01110,0b11111,0b00000,0b00000,0b00000,0b00000,0b00000};   // Создаем свой символ ⯅ для LCD
byte down[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b01110,0b00100};   // Создаем свой символ ⯆ для LCD

volatile int Encoder_Dir;                                 // Направление вращения энкодера
volatile boolean Push_Button, Var_Set, DC, AutoWindStart; // Нажатие кнопки; режим установки значения; формирование сигнала STEP; работает подпрограмма автонамотки 
volatile boolean Pause;                                   // Флаг паузы в режиме автонамотка   
volatile int i;                                           // Счетчик кол-ва заходов в прерывание таймера
char Str_Buffer[22];                                      // Буфер для функции sprintf 
byte LCD_Column, LCD_Row, Symbol_Code, Motor_Num;         // Номер столбца и строки LCD; код символа https://i.stack.imgur.com/oZhjJ.gif; номер шагового двигателя
int32_t ActualShaftPos, ActualLayerPos;                   // Текущие позиции двигателей вала и укладчика
int Actual_Turn = 0, Actual_Layer = 0;                    // Текущий виток и слой при автонамотке
int Shaft_Pos, Lay_Pos, Set_Turns, Set_Step, Set_Speed=1, Set_Layers=1, Step_Mult=1;  // Переменные изменяемые на экране
byte Menu_Index = 0;                                      // Переменная хранит номер текущей строки меню
int32_t Steps, Step_Accel, Step_Decel;

volatile uint16_t OCR1A_NOM;
volatile uint32_t OCR1A_TEMP;
volatile uint32_t INCR;
volatile uint32_t NSteps;
volatile uint32_t Temp;
int V;
volatile int NTurn;
uint8_t run_btn;
 
uint8_t MicroSteps = 16;
long SteppersPositions[2];
int Pitch = 1;
int8_t Steppers_Dir = 1;
int16_t SpeedIncrease, SpeedDecrease;

volatile int X,Y;
volatile int Set_Speed_INT;

enum menu_states {Autowinding, PosControl, TurnsSet, StepSet, SpeedSet, LaySet, Direction, Start, Cancel, Empty, ShaftPos, LayPos, StepMul, PosCancel}; // Нумерованный список строк экрана

struct MenuType {                       // Структура описывающая меню
  byte Screen;                          // Индекс экрана
  byte string_number;                   // Номер строки на экране
  char format[22];                      // Формат строки
  char format_Set_var[6];               // Формат значения при вводе переменной
  int  *param;                          // Указатель на адрес текущей переменной изменяемой на экране
  int  var_Min;                         // Ограничение значения переменной снизу
  int  var_Max;                         // Ограничение значения переменной сверху
  byte param_coef;};                    // Размерный коэффициент значения переменной

const struct MenuType Menu[] = {        // Объявляем переменную Menu пользовательского типа MenuType и доступную только для чтения
  {0,  0,  "  AUTOWINDING        ", ""      ,NULL,        0,      0,      0        },    // "> AUTOWINDING   "
  {0,  1,  "  POS CONTROL        ", ""      ,NULL,        0,      0,      0        },    // "> POS CONTROL   "
  {2,  0,  "  TURNS:  %03d       ", "%03d"  ,&Set_Turns,  1,      999,    1        },    // "> TURNS: >000<  "
  {2,  1,  "  STEP: 0.%04d       ", "%04d"  ,&Set_Step,   1,      200,    ShaftStep},    // "> STEP:>0.0000<↓"  
  {4,  0,  "  SPEED:  %03d       ", "%03d"  ,&Set_Speed,  1,      300,    1        },    // "> SPEED: >000< ↑"
  {4,  1,  "  LAYERS: %02d       ", "%02d"  ,&Set_Layers, 1,      99,     1        },    // "> LAYERS:>00<  ↓" 
  {6,  0,  "  DIRECTION >>>      ", ""      ,NULL,        0,      0,      0        },    // "> DIRECTION >>>↑"
  {6,  1,  "  START              ", ""      ,NULL,        0,      0,      0        },    // "> START        ↓" 
  {8,  0,  "  CANCEL             ", ""      ,NULL,        0,      0,      0        },    // "> CANCEL       ↑" 
  {8,  1,  "                     ", ""      ,NULL,        0,      0,      0        },    // ">               " 
  {10, 0,  "  SH POS: %+04d      ", "%+04d" ,&Shaft_Pos,  -999,   999,    1        },    // "> SH POS:>±000< "
  {10, 1,  "  LA POS: %+04d      ", "%+04d" ,&Lay_Pos,    -999,   999,    1        },    // "> LA POS:>±000<↓" 
  {12, 0,  "  STPMUL: %03d       ", "%03d"  ,&Step_Mult,  1,      100,    1        },    // "> STPMUL:>000< ↑"
  {12, 1,  "  CANCEL             ", ""      ,NULL,        0,      0,      0        },    // "> CANCEL        "   
  {14, 0,  "T%03d/%03d L%02d/%02d", ""      ,NULL,        0,      0,      0        },    // "T000/000 L00/00 "
  {14, 1,  "SP%03d ST0.%04d      ", ""      ,NULL,        0,      0,      0        },    // "SP000 ST0.0000  " 
  {16, 0,  "AUTOWINDING DONE     ", ""      ,NULL,        0,      0,      0        },    // "AUTOWINDING DONE" 
  {16, 1,  "PRESS CONTINUE       ", ""      ,NULL,        0,      0,      0        }};   // "PRESS CONTINUE  "
  
//LiquidCrystal lcd(RS,EN,D4,D5,D6,D7); // Назначаем пины для управления LCD 
LiquidCrystal_I2C lcd(0x27,16,2); // 0x3F I2C адрес для PCF8574AT, дисплей 16 символов 2 строки 

void setup() {
pinMode(ENC_CLK, INPUT);    // Инициализация входов/выходов  
pinMode(ENC_SW,  INPUT);
pinMode(STEP_Z,  OUTPUT);
pinMode(ENC_DT,  INPUT);
pinMode(DIR_Z,   OUTPUT);
pinMode(EN_STEP, OUTPUT);
pinMode(STEP_A,  OUTPUT);
pinMode(DIR_A,   OUTPUT); 
pinMode(BUZZ_OUT,OUTPUT);
pinMode(STOP_BT, INPUT);
pinMode(RS,      OUTPUT);
pinMode(EN,      OUTPUT);
pinMode(D4,      OUTPUT);
pinMode(D5,      OUTPUT);
pinMode(D6,      OUTPUT);
pinMode(D7,      OUTPUT);

digitalWrite(EN_STEP, HIGH); // Запрет управления двигателями  
digitalWrite(STOP_BT, HIGH); // Вкл. подтягивающие резисторы к VDD  
  
 lcd.init(); 
 lcd.backlight();             // Включение подсветки LCD
  
  lcd.createChar(0, up);       // Записываем символ ⯅ в память LCD
  lcd.createChar(1, down);     // Записываем символ ⯆ в память LCD

  cli();                                                                        // Глобальный запрет прерываний
  EICRA = (1<<ISC11)|(0<<ISC10)|(0<<ISC01)|(1<<ISC00);                          // Настройка срабатывания прерываний: INT0 по изменению сигнала, INT1 по спаду сигнала; ATmega328/P DATASHEET стр.89
  EIMSK = (1<<INT0)|(1<<INT1);                                                  // Разрешение прерываний INT0 и INT1; ATmega328/P DATASHEET стр.90 
  EIFR = 0x00;                                                                  // Сбрасываем флаги внешних прерываний; ATmega328/P DATASHEET стр.91
  TCCR1A=(0<<COM1A1)|(0<<COM1B1)|(0<<COM1A0)|(0<<COM1B0)|(0<<WGM11)|(0<<WGM10); // Настройка таймера/счетчика 1: нормальный режим работы порта, OC1A/OC1B отключены; ATmega328/P DATASHEET стр.170-172
  TCCR1B=(0<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10);                   // Режим работы таймера/счетчика - CTC (очистить таймер при достижении значения в регистре сравнения OCR1A)
  OCR1A = 20000;                                                                // Значение в регистре OCR1A определяет частоту входа в прерывание таймера и устанавливает скрость вращения двигателей
  sei();
//lcd.begin(20,4);                                                              // Инициализация LCD Дисплей 20 символов 4 строки   
//lcd.begin(16,2);                                                             // Инициализация LCD Дисплей 16 символов 2 строки 
       
  lcd.clear();                                                      
  sprintf(Str_Buffer, Menu[0].format);
  lcd.print(Str_Buffer);                                                        // Выводим первую строку на экран
  lcd.setCursor(0,1); 
  sprintf(Str_Buffer, Menu[1].format);
  lcd.print(Str_Buffer);                                                        // Выводим вторую строку на экран
  PrintSymbol(0,0,0x3E);}                                                       // Выводим символ ">" на 0,0 LCD

Замените весь код до void loop() 

Но в дальнейшем крайне рекомендую использовать полубайтовое подключение.

Протокол I2C использует прерывания и при выполнении программы возможны наложения прерываний и «плавающие» баги, которые будет очень трудно ловить и я не могу гарантировать дальнейшую поддержку I2C


Изменено 20 ноября, 2019 пользователем TDA

Форум РадиоКот :: Просмотр темы — Автоматический намоточный станок


Автор:  masterw [ Вс мар 14, 2021 01:37:35 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Добрый вечер! Проблемка, не хочет компилироваться на 32 разрядной винде, так как компилятор для х64. Что делать?


Автор:  Ян [ Вс мар 14, 2021 08:39:06 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Я не качал архив, который прикрепил Арсений, но возможно там есть hex для прошивки. Если вы применили винт с шагом 1мм, то можно и не компилировать. Если у вас свои параметры, напишите их, скомпилирую.


Автор:  masterw [ Вс мар 14, 2021 16:52:47 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Добрый вечер! Перемещение укладчика 8 мм на один оборот винта, диапазон намотки 180 мм, диаметр провода 0,01- 3,00мм, остальное оставить как есть. За ранее благодарен. Еще вопрос, может как то попробовать перенести все в arduino ide, там как то попроще компилировать


Автор:  Ян [ Вс мар 14, 2021 19:57:29 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Поставил шаг винта укладчика 8мм и максимальный диаметр провода 3мм.
Этот станочек начинался как ардуино проект. Но после того как я понял что он работает как то криво, а автор особо не обращает внимание на это, я попросил Арсения написать программу управления на контроллере. Так к тому же удобнее, чем на ардуине. В принципе в интернете можно найти ардуино проекты, но по мне, так этот вариант получился лучше. А перенести нельзя, разве что заново программу писать.


Автор:  masterw [ Вт мар 16, 2021 12:10:20 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

ОК Спасибо! А компилятор для 32 разрядной винды есть?


Автор:  Ян [ Вт мар 16, 2021 15:18:23 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Это не ко мне вопрос, это к автору прошивки. Я чисто механически компилирую, по его инструкции.


Автор:  vilyooo96 [ Ср мар 17, 2021 13:47:31 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Здравствуйте, у atmega8 памяти всего 8кб. Размер файла в шестнадцатеричном формате — 22 КБ. Можно ли его загрузить?


Автор:  vilyooo96 [ Ср мар 17, 2021 17:46:06 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

что входит в U7?


Автор:  Ян [ Ср мар 17, 2021 19:37:02 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Здравствуйте, у atmega8 памяти всего 8кб. Размер файла в шестнадцатеричном формате — 22 КБ. Можно ли его загрузить?

Все поместится.

vilyooo96 писал(а):

что входит в U7?

Не обращайте на этот вход внимания. В этой прошивке к нему ничего не подключено. Планировался датчик оборотов намотки.


Автор:  vilyooo96 [ Ср мар 17, 2021 19:45:34 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Здравствуйте, у atmega8 памяти всего 8кб. Размер файла в шестнадцатеричном формате — 22 КБ. Можно ли его загрузить?

Все поместится.

vilyooo96 писал(а):

что входит в U7?

Не обращайте на этот вход внимания. В этой прошивке к нему ничего не подключено. Планировался датчик оборотов намотки.

Большое спасибо


Автор:  *Trigger* [ Вс мар 21, 2021 01:20:28 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

ОК Спасибо! А компилятор для 32 разрядной винды есть?

Теперь есть. :) Добавил здесь в папку avr-gcc компилятор для x86. Естественно, нужно будет соответствующим образом изменить путь в Makefile.

Переход на Arduino IDE я не планирую, хотя бы по той причине, что я ей никогда не пользовался и не собираюсь. :) Как оно там внутри устроено, я не знаю. Например, есть ли возможность нужные опции (флаги) компилятора?
Вариант с Makefile, мне кажется, достаточно удобен: не нужно устанавливать дополнительные программы, компиляция производится одной командой в командной строке.


Автор:  *Trigger* [ Вс мар 21, 2021 14:10:11 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Перемещение укладчика 8 мм на один оборот винта, диапазон намотки 180 мм, диаметр провода 0,01- 3,00мм, остальное оставить как есть.

masterw, максимальный допустимый шаг намотки, который можно установить в прошивке, — 2,55 мм. Для него используется переменная типа uint8_t.
Если Вам хватит этого шага, можете попытаться самостоятельно скомпилировать прошивку. Если мало, я могу сменить тип на uint16_t.


Автор:  maga_ges [ Вс мар 28, 2021 00:47:46 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Здравствуйте!
А можно узнать какие комплектующие использованы в базовой версии станка (прописанные в прошивке)? Ну там ходовой винт, шагов на оборот для моторов и т.д. Это чтоб сразу приобрести подобные и не париться с перкомпиляцией прошивки.


Автор:  Ян [ Вс мар 28, 2021 14:19:12 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Ходовой винт с шагом 1мм, шаговики стандарт — 200 на оборот.


Автор:  maga_ges [ Вс мар 28, 2021 15:55:14 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Ходовой винт с шагом 1мм, шаговики стандарт — 200 на оборот.

А диаметр 8мм?


Автор:  Ян [ Вс мар 28, 2021 17:29:17 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Я ставил 8. Но диаметр винта в прошивке не заложен :)


Автор:  vilyooo96 [ Вс мар 28, 2021 20:44:26 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

привет, сделал печатную плату dip28. Надеюсь, это поможет тебе. кнопки не добавлены т.к. буду соединять их проводами. я буду использовать драйвер TB6600. Пожалуйста, проверьте на наличие ошибок, печатная плата еще не проверена. Привет из Болгарии. (переведено из Google)

Изображение


Автор:  maga_ges [ Чт апр 01, 2021 13:02:16 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Я ставил 8. Но диаметр винта в прошивке не заложен :)

Можете снять видео работы станка, очень хочется посмотреть на работу станка и конечный результат.


Автор:  Ян [ Чт апр 01, 2021 18:40:50 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

На предыдущей странице есть небольшое видео.


Автор:  masterw [ Вс апр 04, 2021 00:54:10 ]
Заголовок сообщения:  Re: Автоматический намоточный станок

Вроде все сделал по написанному, ьно выдает сообщение
C:UsersUser>cd D:winding_machine_allwinding_machine

C:UsersUser>D:avr-gcc-8.3.0-x64-mingwbinmake
make: *** No targets specified and no makefile found. Stop.


Страница 4 из 13 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/


13-12-2020, 16:31
3 комментариев

Даже опытные программисты-«ардуинщики» могут столкнуться с ошибками компиляции. Исправить их не сложно, а вот найти порой не так просто. Мы решили рассказать сегодня в деталях, какие системные ошибки чаще возникают на различных платах Ардуино, как их исправить и по возможности избежать. 

Для начала рассмотрим базовые, так называемые синтаксические ошибки. Они встречаются чаще всего у новичков, но и опытные электронщики с ними точно знакомы не понаслышке. Искать их обычно супер-просто – в Arduino IDE некорректный синтаксис выделяется построчно (таким образом значительно легче отыскать неточность в кодах). Обычно это: отсутствие скобки в конце команды, пропуск этой самой служебной команды или слова, нехватка важных функций, неправильное их написание и т.д.

Для быстрого поиска ошибки советуем рассмотреть строку-подсказку. Ничего не помогло? Тогда для вас наша подборка наиболее распространенных синтаксических ошибок:

С синтаксисом все понятно – вставляем пропущенные символы, убираем лишние знаки, возвращаем функции по умолчанию.
Напомним, в среде разработки Ардуино IDE можно заливать скетчи для различных микроконтроллеров. По умолчанию обычно указана плата Genuino Uno. Если вы работаете с Mega, следует выбрать именно эту платформу (меню «Сервис»), иначе вас ожидает неприятное предупреждение: “programmer is not responding”.

Ошибка компиляции для платы Arduino Uno чаще всего возникает из-за проблем, связанных с библиотеками, например, неправильно подключили, не то ПО инсталлировали. В этом случае вы увидите напоминание fatal error: … No such file or directory” (библиотека не перенесена в папку libraries) или redefinition of void setup”.


Обозначенная на скриншоте ERROR означает, что программирование завершилось некорректно (расшифровываем: внутренние проблемы с компилятором, не обновили версию IDE, сбой в библиотеке, неправильный выбор разрядности операционной системы и др.). 
Важно! Не забывайте использовать подсказки приложения – они очень помогают. Включаем тут: Файл -> Настройки -> «Показать подробный вывод во время компиляции».

Что делать, если произошла ошибка при загрузке скетча Arduino Nano. Тут могут быть те же причины, что мы описали выше. Особых отличий в компиляции плат нет, главное, их правильный выбор первоначально. Однако часто пользователи настраивают не те показатели скорости порта: 9600 вместо необходимых 57600 либо не имеют соответствующих драйверов на устройствах – все это нужно проверить и исправить!

Первая прошивка


Итак, разобрались со средой разработки, теперь можно загрузить прошивку. Рекомендую загрузить пустую прошивку, чтобы убедиться, что все драйвера установились и плата вообще прошивается. Также лучше делать это с новой или заведомо рабочей платой.

1. Плата подключается к компьютеру по USB, на ней должны замигать светодиоды. Если этого не произошло:

  • Неисправен USB кабель.
  • Неисправен USB порт компьютера.
  • Неисправен USB порт Arduino.
  • Попробуйте другой компьютер, чтобы исключить часть проблем из списка.
  • Попробуйте другую плату, чтобы исключить часть проблем из списка.
  • На плате Arduino сгорел диод по питанию USB.
  • Плата Arduino сгорела полностью из-за неправильного подключения питания или короткого замыкания

2. Компьютер издаст характерный сигнал подключения нового оборудования, а при первом подключении появится окошко “Установка нового оборудования”. Если этого не произошло:

  • См. предыдущий список неисправностей.
  • Кабель должен быть data-кабелем, а не “зарядным”.
  • Кабель желательно втыкать напрямую в компьютер, а не через USB-хаб.
  • Не установлены драйверы для Arduino.

3. В списке портов (Arduino IDE/Инструменты/Порт) появится новый порт, отличный от COM1. Если этого не произошло:

  • См. предыдущий список неисправностей.
  • Некорректно установлен драйвер CH341.
  • Если список портов вообще неактивен – драйвер Arduino установлен некорректно, вернитесь к установке
  • Возникла системная ошибка, обратитесь к знакомому компьютерщику

4. Выбираем свою плату. Если это Arduino Nano, выбираем в ИнструментыПлатаArduino Nano. Если другая – выбираем другую. Нажимаем стрелочку в левом верхнем углу (загрузить прошивку). Да, загружаем пустую прошивку.

  • [Для Arduino Nano] В микроконтроллер китайских нанок зашит “старый” загрузчик, поэтому выбираем ИнструментыПроцессорATmega328p (Old Bootloader). Некоторые китайцы зашивают в свои платы новый загрузчик, поэтому если прошивка не загрузилась (загрузка идёт минуту и вылетает ошибка avrdude: stk500_getsync()) – попробуйте сменить пункт Процессор на ATmega328p.

Если появилась надпись “Загрузка завершена” – значит всё в порядке и можно прошивать другие скетчи. В любом случае на вашем пути встретятся другие два варианта событий, происходящих после нажатия на кнопку “Загрузка” – это ошибка компиляции и ошибка загрузки. Вот их давайте рассмотрим более подробно.

Ошибки компиляции


Возникает на этапе компиляции прошивки. Ошибки компиляции вызваны проблемами в коде прошивки.

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текст ошибки и понять, куда копать.
  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием название_файла.h no such file or directory. Это означает, что в скетче используется библиотека <название файла>, и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по название файла.
  • При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo и Micro.
  • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
  • Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Возможно поможет урок по оптимизации кода.

Частые ошибки в коде, приводящие к ошибке компиляции


  • expected ‘,’ or ‘;’ – пропущена запятая или точка запятой на предыдущей строке
  • stray ‘320’ in program – русские символы в коде
  • expected unqualified-id before numeric constant – имя переменной не может начинаться с цифры
  • … was not declared in this scope – переменная или функция используется, но не объявлена. Компилятор не может её найти
  • redefinition of … – повторное объявление функции или переменной
  • storage size of … isn’t known – массив задан без указания размера

Ошибки загрузки


Возникают на этапе, когда программа успешно скомпилирована и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за настроек программы и драйверов.

  • USB кабель, которым подключается Arduino, должен быть Data-кабелем, а не кабелем только для зарядки. Нужным нам кабелем подключаются к компьютеру плееры и смартфоны.
  • Причиной ошибки загрузки являются не установленные/криво установленные драйвера CH340, если у вас китайская NANO.
  • Также будет ошибка avrdude: ser_open(): can’t open device, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет – читай два пункта выше, либо попробуй другой USB порт, или вообще другой компьютер.
  • Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляем USB и по новой прошиваем.
  • Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”. Также в свежих версиях IDE нужно выбирать ATmega328P (Old Bootloader) для китайских плат NANO.
  • Если у вас открыт монитор COM порта в другом окне Arduino IDE или плата общается через СОМ порт с другой программой (Ambibox, HWmonitor, SerialPortPlotter и т.д.), то вы получите ошибку загрузки, потому что порт занят. Отключитесь от порта или закройте другие окна и программы.
  • Если у вас задействованы пины RX или TX – отключите от них всё! По этим пинам Arduino общается с компьютером, в том числе для загрузки прошивки.
  • Если в описании ошибки встречается bootloader is not responding и not in sync, а все предыдущие пункты этого списка проверены – с вероятностью 95% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

Предупреждения


Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет критических ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:

  • # Pragma message… – это просто сообщения, оставленные разработчиком проекта или библиотеки. Чаще всего номер версии и прочая информация.
  • Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.

FAQ


Завершая раздел Введение в Arduino поговорим о вопросах, которые очень часто возникают у новичков:

  • Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс Flash памяти. А он довольно большой.
  • Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
  • Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов. Подробнее в этом уроке.
  • Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию. Подробнее в этом уроке.
    • Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
    • Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу.
    • Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь.
    • Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI

Видео


Полезные страницы


  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

by Matthew Adams

Matthew is a freelancer who has produced a variety of articles on various topics related to technology. His main focus is the Windows OS and all the things… read more


Updated on January 18, 2023

  • Seeing the Error compiling for board Arduino/Genuino Uno message is not nice, but this guide should prove helpful.
  • To start the resolution of this issue, ensure that you selected the right board, and follow the next indications.
  • For more useful guides on this topic, don’t hesitate to visit our Developer Tools section.
  • To always be on top of any Arduino error message, bookmark our Arduino Errors Hub.

XINSTALL BY CLICKING THE DOWNLOAD FILE

To fix various PC problems, we recommend DriverFix:
This software will keep your drivers up and running, thus keeping you safe from common computer errors and hardware failure. Check all your drivers now in 3 easy steps:

  1. Download DriverFix (verified download file).
  2. Click Start Scan to find all problematic drivers.
  3. Click Update Drivers to get new versions and avoid system malfunctionings.
  • DriverFix has been downloaded by 0 readers this month.

The Arduboy is a small, portable game console with a similar design to the Nintendo Game Boy. It is a game console based on the Arduino board designs, which include Arduino/Genuino Uno.

Users can connect their Arduboys with Windows PCs to upload games to them with the Arduino IDE (Integrated Developer Environment) software.

However, some users have posted on the Arduboy support forum about an Error compiling for board Arduino/Genuino Uno issue.

That error arises when users try to upload a game (otherwise sketch) to the Arduboy with the Arduino IDE software. Consequently, users can’t upload games to their Arduboy when that error arises.

What can I do about the compiling for board Arduino/Genuino Uno error?

1. Make sure you’ve selected the right Arduino board

  1. The Error compiling for board Arduino/Genuino Uno issue can arise when users haven’t selected the right board design within Arduino IDE. To select the correct board, click the Tools menu in the Arduino IDE software.
  2. Then select Board to open the menu shown directly below.
    The Tools menu error compiling for board arduino/genuino uno
  3. Select Arduino/Genuino Uno if that’s not currently selected.

2. Install missing Arduboy libraries

  1. The Error compiling for board Arduino/Genuino Uno error is often due to missing Arduboy libraries needed by the games. To install missing Arduboy libraries, click the Sketch menu.
  2. Then select Include Library to open the menu in the snapshot directly below.
    The Sketch menu error compiling for board arduino/genuino uno
  3. Click Manage Libraries to open the window shown directly below.
    Library Manager error compiling for board arduino/genuino uno
  4. To search for Arduboy libraries, enter the keyword Arduboy in the search box.
  5. Make sure all the Arduboy libraries listed below are installed:
    Arduboy
    ArduboyTones
    Arduboy2
    AdruboyPlaytune
    ArdVoice 469
    ArdBitmap
    ATMlib
    FixedPointsArduino
    Arduboy-TinyFont
    U8GLIB
  6. You can install selected libraries by clicking the More info links and Install buttons for them. Select the latest versions of the libraries on their drop-down menus.
    The Install button error compiling for board arduino/genuino uno
  7. Click the Close button when you’ve installed all missing Arduboy libraries.

3. Reinstall the Adruino IDE software

  1. Some users might need to reinstall the Adruino IDE software to resolve the compiling for board Arduino/Genuino Uno error. First, open File Explorer in Windows.
  2. If you’re utilizing Arduino IDE 1.6.6 or later, open this path in Explorer: C:/Users(username)/AppData/Local /Arduino15.
  1. Users with Arduino IDE 1.6.5r5 or previous should open this folder: C:/Users (username)/AppData/Roaming/Arduino15.
  1. Select the Adruino15 folder, and press the Delete button.
  2. Next, open Run’s window by pressing the Windows key + R hotkey.
  3. Enter appwiz.cpl in the Open box, and click the OK button.
    Programs and Features window error compiling for board arduino/genuino uno
  4. Select Arduino in the Programs and Features window.
  5. Click the Uninstall option.
  6. If an uninstall prompt opens, click the Yes button on it.
  7. Restart Windows before you reinstall Arduino.
  8. Click the Windows app on the Arduino website. Then click the Just Download option.
  9. Thereafter, reinstall the Arduino IDE software. Note that you’ll also need reinstall boards with the Board Manager.

Those are three ways users can fix Error compiling for board Arduino/Genuino Uno error. With that issue fixed, you can then play Arduboy games.

newsletter icon

Newsletter

by Matthew Adams

Matthew is a freelancer who has produced a variety of articles on various topics related to technology. His main focus is the Windows OS and all the things… read more


Updated on January 18, 2023

  • Seeing the Error compiling for board Arduino/Genuino Uno message is not nice, but this guide should prove helpful.
  • To start the resolution of this issue, ensure that you selected the right board, and follow the next indications.
  • For more useful guides on this topic, don’t hesitate to visit our Developer Tools section.
  • To always be on top of any Arduino error message, bookmark our Arduino Errors Hub.

XINSTALL BY CLICKING THE DOWNLOAD FILE

To fix various PC problems, we recommend DriverFix:
This software will keep your drivers up and running, thus keeping you safe from common computer errors and hardware failure. Check all your drivers now in 3 easy steps:

  1. Download DriverFix (verified download file).
  2. Click Start Scan to find all problematic drivers.
  3. Click Update Drivers to get new versions and avoid system malfunctionings.
  • DriverFix has been downloaded by 0 readers this month.

The Arduboy is a small, portable game console with a similar design to the Nintendo Game Boy. It is a game console based on the Arduino board designs, which include Arduino/Genuino Uno.

Users can connect their Arduboys with Windows PCs to upload games to them with the Arduino IDE (Integrated Developer Environment) software.

However, some users have posted on the Arduboy support forum about an Error compiling for board Arduino/Genuino Uno issue.

That error arises when users try to upload a game (otherwise sketch) to the Arduboy with the Arduino IDE software. Consequently, users can’t upload games to their Arduboy when that error arises.

What can I do about the compiling for board Arduino/Genuino Uno error?

1. Make sure you’ve selected the right Arduino board

  1. The Error compiling for board Arduino/Genuino Uno issue can arise when users haven’t selected the right board design within Arduino IDE. To select the correct board, click the Tools menu in the Arduino IDE software.
  2. Then select Board to open the menu shown directly below.
    The Tools menu error compiling for board arduino/genuino uno
  3. Select Arduino/Genuino Uno if that’s not currently selected.

2. Install missing Arduboy libraries

  1. The Error compiling for board Arduino/Genuino Uno error is often due to missing Arduboy libraries needed by the games. To install missing Arduboy libraries, click the Sketch menu.
  2. Then select Include Library to open the menu in the snapshot directly below.
    The Sketch menu error compiling for board arduino/genuino uno
  3. Click Manage Libraries to open the window shown directly below.
    Library Manager error compiling for board arduino/genuino uno
  4. To search for Arduboy libraries, enter the keyword Arduboy in the search box.
  5. Make sure all the Arduboy libraries listed below are installed:
    Arduboy
    ArduboyTones
    Arduboy2
    AdruboyPlaytune
    ArdVoice 469
    ArdBitmap
    ATMlib
    FixedPointsArduino
    Arduboy-TinyFont
    U8GLIB
  6. You can install selected libraries by clicking the More info links and Install buttons for them. Select the latest versions of the libraries on their drop-down menus.
    The Install button error compiling for board arduino/genuino uno
  7. Click the Close button when you’ve installed all missing Arduboy libraries.

3. Reinstall the Adruino IDE software

  1. Some users might need to reinstall the Adruino IDE software to resolve the compiling for board Arduino/Genuino Uno error. First, open File Explorer in Windows.
  2. If you’re utilizing Arduino IDE 1.6.6 or later, open this path in Explorer: C:/Users(username)/AppData/Local /Arduino15.
  1. Users with Arduino IDE 1.6.5r5 or previous should open this folder: C:/Users (username)/AppData/Roaming/Arduino15.
  1. Select the Adruino15 folder, and press the Delete button.
  2. Next, open Run’s window by pressing the Windows key + R hotkey.
  3. Enter appwiz.cpl in the Open box, and click the OK button.
    Programs and Features window error compiling for board arduino/genuino uno
  4. Select Arduino in the Programs and Features window.
  5. Click the Uninstall option.
  6. If an uninstall prompt opens, click the Yes button on it.
  7. Restart Windows before you reinstall Arduino.
  8. Click the Windows app on the Arduino website. Then click the Just Download option.
  9. Thereafter, reinstall the Arduino IDE software. Note that you’ll also need reinstall boards with the Board Manager.

Those are three ways users can fix Error compiling for board Arduino/Genuino Uno error. With that issue fixed, you can then play Arduboy games.

newsletter icon

Newsletter

Arduino Winding Machine

Это продолжение развития прошивки намоточного станка, созданного Дмитрием Торцевым. Форк основан на версии прошивки 2.1b, ничего более нового я не нашел. Ссылки на статьи и оригинальные версии прошивок:

  • Намоточный станок на Arduino версия 2.0
  • Намоточный станок на Arduino

Список изменений:

  • Новый модуль намотки. Теперь податчик перемещается непрерывно, без рывков, все разгоны и торможения делаются плавно, с ускорением, которое можно установить в настройках.
  • Новый модуль управления позициями двигателей. Плавный разгон и торможение, настройка шага
  • Поддержка многострочных дисплеев. 20х4, 16х2 и т.п.
  • Русский язык интерфейса. Прикиньте)
  • Сохранение всех настроек в энергонезависимой памяти

Eщё по мелочи:

  • Сохраняются настройки для 3х трансформаторов по 3 обмотки в каждом. Итого 9 групп параметров. Есть возможность наматывать трансформатор целиком, обмотки намотаюстя последовательно через паузу.
  • Схема подавления дребезга больше не нужна. Качественная работа с энкодером, программное подавление дребезга, поддержка разных типов энкодеров.
  • Блок глобальных настроек. Сейчас можно отключить паузу между слоями и настроить ускорение при разгоне и торможении
  • Скоростное редактирование параметров. Если крутить энкодер зажатым, то параметр будет меняться в 10 раз быстрее
  • Шаг намотки поддерживается от 0.005 до 10 мм

Установка

Скачайте прошивку вот здесь.

Необходимые библиотеки

Перед первой сборкой установите все нужные библиотеки из менеджера библиотек Arduino IDE [как установить]

  • LiquidCrystal 1.0.7 или новее либо LiquidCrystal_I2C 1.1.2 или новее, в зависимости от подключения дисплея
  • GyverStepper 2.6.4 или новее
  • EnсButton 2.0.0 или новее
  • AnalogKey 1.1.0 или новее

Настройки в коде

Отредактируйте файл config.h, который лежит в каталоге прошивки, если вы используете железо, отличающееся от того, которое в статье. Например, размер своего дисплея.

  • Обратите внимание на тип энкодера (ENCODER_TYPE). Если вы используете толстый энкодер, то он будет «проскакивать» и нужно в файле изменить его тип
  • Проверьте шаг резьбы вала намотчика (THREAD_PITCH), теперь он в мкм

Траблы для тех, кто только построил станок

  • Ничего не крутится и стоит на паузе — не нажата педаль, нажмите замыканием контакта шилда Z- на землю
  • Темно и ничего не видно — подключите выводы дисплея А и К через резистор к напряжению подсветки
  • Светло и ничего не видно — проверьте подключение вывода дисплея RW к земле или к плате расширения портов
  • Видно только черные прямоугольники — отрегулируйте потенциал на контакте V0 дисплея резистором на плате расширения портов
  • Мусор на экране — проверьте соответствие способа подключения дисплея настройкам прошивки
  • Энкодер пропускает каждый второй щелчок — измените тип энкодера в настройках прошивки
  • Меню само хаотично нажимается и творит дичь — подтяните 10к резистором SW контакт энкодера к питанию

Скачать

Понравилась статья? Поделить с друзьями:
  • Напольный котел baxi slim ошибки
  • Намеренные логические ошибки умышленно ошибочные рассуждения
  • Напольный газовый котел протерм ошибка ф 1
  • Нам слишком долго зажимали языки лексическая ошибка
  • Напольный газовый котел навьен ошибка номер 10