Arduino Pro mini объем памяти для скетча.

sergrlager
Offline
Зарегистрирован: 17.03.2017

Возникла проблема с объемом памяти при компиляции выдает ошибку !!

Arduino: 1.8.0 (Windows 8.1), Плата:"Arduino Pro or Pro Mini, ATmega168 (3.3V, 8 MHz)"
 
Скетч использует 16336 байт (113%) памяти устройства. Всего доступно 14336 байт.
 
Глобальные переменные используют 1436 байт (140%) динамической памяти, оставляя -412 байт для локальных переменных. Максимум: 1024 байт.
Скетч слишком большой; 
Ошибка компиляции для платы Arduino Pro or Pro Mini.

 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

В чем заключается ваш вопрос?
Да, проблема возникла.

sergrlager
Offline
Зарегистрирован: 17.03.2017

я пытаюсь вывести показания с акселерометра без экрана физического через visuino! это удобно очень!!

но код не влазит может его как то можно уменьшить?

 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Может, можно

sergrlager
Offline
Зарегистрирован: 17.03.2017

удалил все коментарии - не помогло!!

вот сам код который визуино передал в ide с удаленными коментами!

#define VISUINO_ARDUINO_PRO_MINI
 
#include <OpenWire.h>
#include <Mitov.h>
#include <Mitov_FormattedSerial.h>
#include <Wire.h>
#include <Mitov_Basic_I2C.h>
#include <Mitov_MPU9250.h>
#include <Mitov_AccelerationToAngle.h>
#include <Mitov_Packet.h>
 
 
 
namespace BoardDeclarations
{
Mitov::SerialPort<SERIAL_TYPE, &Serial> SerialPort0;
Mitov::ArduinoSerialBinaryInput<Mitov::SerialPort<SERIAL_TYPE, &Serial>, &SerialPort0> SerialPort0_Byte_1;
 
 
 
namespace Declarations
{
Mitov::MPU9250I2C AccelerometerGyroscopeCompass1;
Mitov::AccelerationToAngle AccelerationToAngle1;
Mitov::Packet Packet1;
 
void setup()
{
  Declarations::Packet1.Elements.push_back( new Mitov::BasicTypedPacketSinkElement<float,float> );
  Declarations::Packet1.Elements.push_back( new Mitov::BasicTypedPacketSinkElement<float,float> );
  Declarations::Packet1.Elements.push_back( new Mitov::BasicTypedPacketSinkElement<float,float> );
  Wire.begin();
  Declarations::AccelerometerGyroscopeCompass1.Accelerometer.FullScaleRange = Mitov::ar2g;
  Declarations::AccelerometerGyroscopeCompass1.Accelerometer.OutputPins[ 0 ].Connect( Declarations::AccelerationToAngle1.InputPins[ 0 ] );
  Declarations::AccelerometerGyroscopeCompass1.Accelerometer.OutputPins[ 1 ].Connect( Declarations::AccelerationToAngle1.InputPins[ 1 ] );
  Declarations::AccelerometerGyroscopeCompass1.Accelerometer.OutputPins[ 2 ].Connect( Declarations::AccelerationToAngle1.InputPins[ 2 ] );
  Declarations::AccelerometerGyroscopeCompass1.Gyroscope.FullScaleRange = Mitov::gr250dps;
  Declarations::AccelerationToAngle1.OutputPins[ 0 ].Connect( ((Mitov::BasicTypedPacketSinkElement<float,float> *) Declarations::Packet1.Elements[ 0 ] )->InputPin );
  Declarations::AccelerationToAngle1.OutputPins[ 1 ].Connect( ((Mitov::BasicTypedPacketSinkElement<float,float> *) Declarations::Packet1.Elements[ 1 ] )->InputPin );
  Declarations::AccelerationToAngle1.OutputPins[ 2 ].Connect( ((Mitov::BasicTypedPacketSinkElement<float,float> *) Declarations::Packet1.Elements[ 2 ] )->InputPin );
  Declarations::Packet1.OutputPin.Connect( BoardDeclarations::SerialPort0_Byte_1.InputPin );
 
  OpenWire::Component::_SystemInit();
}
 
 
void loop()
{
  OpenWire::Component::_SystemLoop();
}
Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Комментарии в код не входят. Выложите код по правилам.

sergrlager
Offline
Зарегистрирован: 17.03.2017

подскажите как это сделать- я впервые тут выкладываю!

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014
sergrlager
Offline
Зарегистрирован: 17.03.2017
#include <Mitov_FormattedSerial.h>
#include <Wire.h>
#include <Mitov_Basic_I2C.h>
#include <Mitov_MPU9250.h>
#include <Mitov_AccelerationToAngle.h>
#include <Mitov_Packet.h>
namespace BoardDeclarations
{Mitov::SerialPort<SERIAL_TYPE, &Serial> SerialPort0;
Mitov::ArduinoSerialBinaryInput<Mitov::SerialPort<SERIAL_TYPE, &Serial>, &SerialPort0> SerialPort0_Byte_1;} 
namespace Declarations
{Mitov::MPU9250I2C AccelerometerGyroscopeCompass1;
Mitov::AccelerationToAngle AccelerationToAngle1;
Mitov::Packet Packet1;} 
void setup()
{  Declarations::Packet1.Elements.push_back( new Mitov::BasicTypedPacketSinkElement<float,float> );
  Declarations::Packet1.Elements.push_back( new Mitov::BasicTypedPacketSinkElement<float,float> );
  Declarations::Packet1.Elements.push_back( new Mitov::BasicTypedPacketSinkElement<float,float> );
  Wire.begin();
  Declarations::AccelerometerGyroscopeCompass1.Accelerometer.FullScaleRange = Mitov::ar2g;
  Declarations::AccelerometerGyroscopeCompass1.Accelerometer.OutputPins[ 0 ].Connect( Declarations::AccelerationToAngle1.InputPins[ 0 ] );
  Declarations::AccelerometerGyroscopeCompass1.Accelerometer.OutputPins[ 1 ].Connect( Declarations::AccelerationToAngle1.InputPins[ 1 ] );
  Declarations::AccelerometerGyroscopeCompass1.Accelerometer.OutputPins[ 2 ].Connect( Declarations::AccelerationToAngle1.InputPins[ 2 ] );
  Declarations::AccelerometerGyroscopeCompass1.Gyroscope.FullScaleRange = Mitov::gr250dps;
  Declarations::AccelerationToAngle1.OutputPins[ 0 ].Connect( ((Mitov::BasicTypedPacketSinkElement<float,float> *) Declarations::Packet1.Elements[ 0 ] )->InputPin );
  Declarations::AccelerationToAngle1.OutputPins[ 1 ].Connect( ((Mitov::BasicTypedPacketSinkElement<float,float> *) Declarations::Packet1.Elements[ 1 ] )->InputPin );
  Declarations::AccelerationToAngle1.OutputPins[ 2 ].Connect( ((Mitov::BasicTypedPacketSinkElement<float,float> *) Declarations::Packet1.Elements[ 2 ] )->InputPin );
  Declarations::Packet1.OutputPin.Connect( BoardDeclarations::SerialPort0_Byte_1.InputPin );
  OpenWire::Component::_SystemInit();}
void loop()
{  OpenWire::Component::_SystemLoop();}


 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sergrlager пишет:

удалил все коментарии - не помогло!!

У Вас ещё много пустых строк, попробуйте и их удалить.

sergrlager
Offline
Зарегистрирован: 17.03.2017

выше код без коментариев и пустых строк!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, если даже удаление пустых строк не помогло сократить код, то Вам остаётся только ....

sergrlager пишет:

через visuino!

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

А вообще, если

sergrlager пишет:

это удобно очень!!

так чего ж Вы не вывели, а сюда пришли?

Или слово "удобно" означает не "удобно выводить", а "удобно постить на форуме тексты типа "удалил все комментарии, но код всё равно большой""? 

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

Реально Вы можете сделать следющее (4 варианта):

1. Обратиться за помощью в Mitov (но это только если Вы любите, когда Вас посылают на)

2. Выбросить это барахло и писать Ваш вывод нормальными средствами

3. Обратиться в "Ищу исполнителя" с заказом, чтобы кто-то уменьшил визуиновские аппетиты за Вас. Стоить это будет за сотню тысяч (я так думаю), а качество результата трудно предсказуемо

4. Забить на это дело и не писать вовсе

 

 

sergrlager
Offline
Зарегистрирован: 17.03.2017

Евгений - спасибо! Вы как всегда -дружелюбны!! 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sergrlager пишет:

Евгений - спасибо! Вы как всегда -дружелюбны!! 

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

"Жизнь такова, какова она есть и больше никакова"

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Есть еще один вариант, о котором умолчал Евгений, и по которому идет вся современная компьютерная наука: возьмите ардуинку побольше, в Мегу - влезет.

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

Тут все будут довольны - и вам не придется учится и китайские мастера заработают.

sergrlager
Offline
Зарегистрирован: 17.03.2017

купил pro mini 3.3 v Atmega328 8 мггц еще не поснастил ее но в ide при ее выборе и попытке прогрузки уже ошибки по памяти не выдает походу там 32 кб !!!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sergrlager пишет:

купил pro mini 3.3 v Atmega328 8 мггц еще не поснастил ее но в ide при ее выборе и попытке прогрузки уже ошибки по памяти не выдает походу там 32 кб !!!

Atmega328 она такая )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:

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

sergrlager пишет:

купил pro mini 3.3 v Atmega328 ... ошибки по памяти не выдает

Уже заработали :)

wdrakula - "шаман, однако!"

sergrlager
Offline
Зарегистрирован: 17.03.2017

просто именно про pro mini нигде не нашел инфы что 328- будет 32 кб!!! 

http://arduino.ua/ru/hardware/ProMini

вот здесь это не указано!!

видос посмотрел- https://www.youtube.com/watch?v=X1ltZewuZXg

после этого закралось подозрение что может и 32 быть на про мини!!!

купил интуитивно ее тоже- теперь буду на нее переходить!!!

sergrlager
Offline
Зарегистрирован: 17.03.2017

вот вам еще вариант!!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sergrlager пишет:

просто именно про pro mini нигде не нашел инфы что 328- будет 32 кб!!! 

Вы это серьёзно? Или шутите?

32К находятся ВНУТРИ микросхемы 328. Если Вы взяли эту микросхему, то 32К сидят в НЕЙ и никак не зависят от того, в какую плату Вы эту микросхему впаяете, или вообще никуда не будете впаивать, а положите в карман или засунете в задний проход - 32К на ней будут в любом случае, их оттуда невозможно выковырять!

sergrlager пишет:
видос посмотрел

Вы впредь даташиты смотрите, а порнофильмы - там точнее информация :)

 

sergrlager
Offline
Зарегистрирован: 17.03.2017

Ну а почему бы вам сразу не предложить этот вариант и неразводить дружелюбную агрессию?:)

А то что код короче будет без Visuino  я и так знаю- вопрос был поставлен именно так а не подругому!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Какой вариант? Купить более "толстую" ардуину? Как Вы заметили, я такой вариант даже не рассматривал. Просто потому, что для такой задачи как у Вас, хватит любого, самого дохленького контроллера. Если конечно, хоть немного уметь программировать. Мой вариант был помочь Вам научиться программировать, но Вам это, похоже, не нужно.