Arduino IDE не хочет компилировать скетч

El
Offline
Зарегистрирован: 10.03.2016

Доброго времени суток!

Возникла следующая проблема: начиная с версии 1.6.12 после случайного количества проверок/загрузок скетча на плату ARDUINO IDE перестает выполнять компиляцию скетча.

Данная ошибка возникает с некоторой зависимостью: со скетчем в 277 строк, считая комментарии, она возникает через 10 проверок/загрузок скетча на плату; со скетчем в 27 строк, она возникает через 99 проверок/загрузок. При этом данная ошибка возникает только если запускать программу из под GUI через ярлык или клацая по исполняющему файлу, если запускать через терминал, то ошибка не проявляется (по этой причине не могу предоставить выхлоп программы в консоль).

Выражается она в том, что прогресс-бар с правой стороны доходит до конца,слева  висит надпись "Компиляция скетча..." и все. так может продолжаться хоть час, хоть век.  При данной ошибке не работают только две кнопки: "Проверка" и "Загрузить", сохранить, открыть, создать я могу.

У кого-нибудь такое было? победили? На гугле был, там все не про то пишут.

 

Linux Widows7 3.19.0-32-generic #37~14.04.1-Ubuntu SMP Thu Oct 22 09:41:40 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Arduino IDE Linux x64

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

ну, и где лог ошибки? - написать простыню, что бы в ответ тут все местные шаманы свои бубны достали и надавили тебе по голове?

El
Offline
Зарегистрирован: 10.03.2016

в том-то и дело, что весь выхлоп как при обычной компиляции. Просто зависает "градусник" загрузки/проверки и все.

В самой программе ошибок нет.

vb
Offline
Зарегистрирован: 15.09.2016

Была у меня такая ситуация. При загрузке к плате были подключены датчики. После их отключения от платы, все нормально загрузилось. Удачи! Кстати, я тогда делал крутую лазерную указку на Arduino для своего кота. Если интересно, смотрите https://ngin.pro/arduino/152-lazernaya-pushka-dlya-kota-na-arduino.html

El
Offline
Зарегистрирован: 10.03.2016

подключю к "голой" дуине. хоть к уно, хоть к мини, хоть к микро, значение имеет лишь объем скетча.

El
Offline
Зарегистрирован: 10.03.2016

Неужели данная проблема только у меня?

guram
Offline
Зарегистрирован: 12.12.2013

привет народ у меня тоже самое с версией IDE 1.8.1 ПРОСТО ДО ТРЕСУЧКИ а с ранними версиями и на винде SP 3 идет нормально

Pasha12
Offline
Зарегистрирован: 29.04.2018

Народ, всем привет! Нужна помощь! Загрузил простенький скетч на управление двумя моторами и сервой через nrf24l01 и раньше всё работало (пробовал на uno. nano и mega, но ничего не помогает). Раньше всё работало, с точно таким же скетчем, с этими же самими платами, микроконтроллеры лежали в нетронутом месте, если что. Я в этом деле новичок, по этому прошу совет. Ардуино последней версии. Ошибок при загрузке скетча никаких не вылетает. Скетч компилируется нормально, обьём не более 15% из всей памяти флеш. Переферийные устройства те же, не менял. Приёмопередатчики так же и всех их по отдельности проверял - всё работает. После загрузки скетча на плату приёмника и на плату передатчика и изменения, после этого, положения джойстика, ничего не происходит. Может я что то упускаю... Не знаю, прошу помощи! Скетчи прилагаются! 

##################################### скетч приёмника

#include <RF24.h>
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"
Servo servo1;
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
int data;
int pos;
int fspeed;           // forward speed
int bspeed;           // backward speed
const int ena = 2;    // PWM pin to change speed
const int in1 = 3;    // direction pin 1
const int in2 = 4;    // direction pin 2
const int in3 = 5;    // direction pin 3
const int in4 = 6;    // direction pin 4
const int enb = 7;    // PWM pin to change speed
 
void setup()
{
 
  pinMode(in1, OUTPUT);      // connection to L298n
  pinMode(in2, OUTPUT);      // connection to L298n
  pinMode(ena, OUTPUT);      // connection to L298n
  pinMode(in3, OUTPUT);      // connection to L298n
  pinMode(in4, OUTPUT);      // connection to L298n
  pinMode(enb, OUTPUT);      // connection to L298n
  servo1.attach(8);
  delay(0);
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
}
 
void loop()
{
  if (radio.available())radio.read(msg, 1);
  if (msg[0] < 127 && msg[0] > -1)data = msg[0], pos = map(data, 0, 126, 7, 47), servo1.write(pos);
 
 
  if (msg[0] >= 128 && msg[0] <= 189)data = msg[0], bspeed = map(data, 255, 201, 0, 255), backward(bspeed);
  if (msg[0] >= 201 && msg[0] <= 255)data = msg[0], fspeed = map(data, 189, 128, 0, 255), forward(fspeed);
  if (msg[0] > 190 && msg[0] < 200)data = msg[0], stop();
}
 
void stop()
{
 
  analogWrite(ena, 0);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  analogWrite(enb, 0);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
 
void forward(int fspeed)
{
 
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(ena, fspeed);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(enb, fspeed);
}
 
void backward(int bspeed)
{
 
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(ena, bspeed);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(enb, bspeed);
}
 
 
################################# скетч передатчика
 
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
#include "RF24.h" 
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL; 
int msg[1]; 
int potpin_1 = A0;
int val_1;
int potpin_2 = A1; 
int val_2;
 
void setup(void){
radio.begin();
radio.openWritingPipe(pipe); 
 
}
void loop() {
val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1,radio.write(msg, 1);
val_2 = analogRead(potpin_2),val_2 = map(val_2, 0, 1023, 128, 255),msg[0] = val_2,radio.write(msg, 1);
}
 
 
sslobodyan@ya.ru
Offline
Зарегистрирован: 25.12.2011

Pasha12 пишет:

val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1,radio.write(msg, 1);

Несколько операторов через запятую? Может вот так?

val_1 = analogRead(potpin_1);

val_1 = map(val_1, 0, 1023, 0, 127);

msg[0] = val_1,radio.write(msg, 1);

Pasha12
Offline
Зарегистрирован: 29.04.2018

Я конечно попробую, а разница есть? Если 3 месяца назад всё это работало, а теперь нет. Что могло с микроконтроллером произойти?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Pasha12 пишет:

Если 3 месяца назад всё это работало, а теперь нет. Что могло с микроконтроллером произойти?

Что угодно. А что именно, здесь удалённо-телепатически никто не определит. Проверяйте каждую деталь по отдельности на работоспособность. Проверяйте весь монтаж. Втыкайте в скетчи вывод отладочной информации. Каких советов ещё можно ожидать?

Pasha12
Offline
Зарегистрирован: 29.04.2018

А как вывести оладочную информацию? Я просто немного не шарю, аразобраться хочется

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Pasha12 пишет:

А как вывести оладочную информацию? Я просто немного не шарю, аразобраться хочется

Способов много.

Основной - Serial.print() и Serial.println(). Но можно использовать также светодиоды, дисплеи, динамики и пр.