Ви не увійшли.
Сторінки 1
тільки спробував програмувати Ардуїно і спикнувся з неприятними моментами:
1) ділить на 0.
Наприклад:
int i;
i = 100 / 0; // i = -1
i = 0 / 0; // i = 0
i = -1 / 0; // i = -1
i = -100 / 0; // i = -1
2) Arduino IDE не підтримує збірку DEBUG версії (роблю це добавляючи -DDEBUG в hardware/arduino/avr/platform.txt).
3) не працює try cath trow, відповідно і с++ бібліотеки.
ЧИ Є ПОВНОЦІННИЙ С++ ДЛЯ ПРОГРАМУВАННЯ АРДУЇНО ?
Неактивний
Язык программирования Arduino является стандартным C++ (используется компилятор AVR-GCC) с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.
Ну вот скажите, как будет работать C++ библиотеки, возьмем например OpenGL, его не как использовать.
Что такое try cath trow?
Неактивний
тільки спробував програмувати Ардуїно і спикнувся з неприятними моментами:
1) ділить на 0.
Наприклад:
int i;
i = 100 / 0; // i = -1
i = 0 / 0; // i = 0
i = -1 / 0; // i = -1
i = -100 / 0; // i = -1
Скорее вот это что я виделил красным это баг, а что зеленым то не ошибка
Остання редакція Sima (2017-10-15 16:52:08)
Неактивний
Язык программирования Arduino является стандартным C++ (используется компилятор AVR-GCC) с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.
Ну вот скажите, как будет работать C++ библиотеки, возьмем например OpenGL, его не как использовать.Что такое try cath trow?
OpenGL - понятно. А наприклад контейнери (vector, list, stack, ..). В даний час змушений писати власний vector.
try catch throw - для обробки виключних ситуацій (зазвичай помилок). Це обрізання - зажорстко. Див. https://habrahabr.ru/sandbox/28877/
Остання редакція mxigo (2017-10-16 12:01:48)
Неактивний
mxigo пише:тільки спробував програмувати Ардуїно і спикнувся з неприятними моментами:
1) ділить на 0.
Наприклад:
int i;
i = 100 / 0; // i = -1
i = 0 / 0; // i = 0
i = -1 / 0; // i = -1
i = -100 / 0; // i = -1Скорее вот это что я виделил красным это баг, а что зеленым то не ошибка
Де баг? В arduino ide ?
Неактивний
І неподобаються мені бібліотеки, які пишуть до Ардуїною Напраклад взяти SoftwareSerial. Конструктор в нього такий:
SoftwareSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic = false)
SortwareSerial може працювати тільки з пінами на платі ардуїно. А якшр мені потрібно щоб receivePin був на платі 74HC595. І все - SoftwareSerial ,безкорисна. І так багато чого, наприклад бібліотеки для дисплеїв теж жорстко привязуються лиш до пінів плати ардуїно (пінів то обмежено, а дисплеїв можемо захотіти декілька...).
Чому б не зробити тіпа так:
SoftwareSerial::SoftwareSerial(BinPin* receivePin, BinPin* transmitPin, bool inverse_logic = false);
/** Абстрактний клас для читання/записа значення сигнала з (в) цифрового піна. */
class BinPin
{
public:
/** Повертає стан піна.
* @return false - при LOW і true при HIGH. */
virtual bool state() = 0;
/** Встановлює HIGH рівень на піні. */
virtual void setHigh() = 0;
/** Встановлює LOW рівень на піні. */
virtual void setLow() = 0;
/** Змінює стан піна. */
virtual void changeState() = 0;
/** Цифрові порти можуть використовуватися на вхід або вихід сигналів.
* Зміна порта з ввода на вивід здійснюється за допомогою даного метода.
* @param mode INPUT (ввід), OUTPUT (вивід). */
virtual void setPinMode(const uint8_t mode) = 0;
};
, тобто щоб SoftwareSerial працював з абстрактними пінами. Тоді в користувача SoftwareSerial буде можливість мати хоть і сотні SoftwareSerial портів в своєму проекті і ті SoftwareSerial порти можуть і незаймати піни плати ардуїно.
На даний час мій висновок про ардуїно такий:
РОЗРОБШИКИ АРДУЇНО ВИКИНУЛИ ВСІ ІНСТРУМЕНТИ (мається на увазі будівельні матеріали для програми), ЗАЛИШИЛИ ЛИШ ТІ, ЩО ПОТРІБНІ ДЛЯ МОРГАННЯ ЛАМПОЧКОЮ !
Остання редакція mxigo (2017-10-16 13:03:51)
Неактивний
По правилам математики деление на ноль не возможно. Пробуйте для интереса поделить число на ноль на своем калькуляторе, если покажет что-то другое, выбрасывайте калькулятор. Так что бага нет!
Тому я і відкрив цю тему. По правилам матиматики ділення на ноль не можливе і каркулятори на ноль не ділять, а аРДУЇНО - ділить на ноль.
Може є хоча б якийсь "прапорець помилки ділення на ноль", про якого я не знаю?
Остання редакція mxigo (2017-10-16 12:49:17)
Неактивний
mxigo пише:Sima пише:Язык программирования Arduino является стандартным C++ (используется компилятор AVR-GCC) с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.
Ну вот скажите, как будет работать C++ библиотеки, возьмем например OpenGL, его не как использовать.Что такое try cath trow?
OpenGL - понятно. А наприклад контейнери (vector, list, stack, ..). В даний час змушений писати власний vector.
try catch throw - для обробки виключних ситуацій (зазвичай помилок). Див. https://habrahabr.ru/sandbox/28877/
Уважаемые, микроконтроллеры это микроскорические, по нынешеим меркам, компьютеры. А AVR - один из простейших процессоров. И весьма наивно желать иметь все библиотеки кода доступные на персональных компьютерах. Если хотите более детально изучить компиляторы Ардуино то вот они (с документацией): http://www.microchip.com/development-to … compilers)
по англійськи
Неактивний
Да, так и есть. В данном случае компилятор обрабатывает как -1)))
В нас недорозуміння. Я замітив, що коли ардуїно ділить на нуль, то результат буде -1. Но як "відділяти зерно від полови"? -1 може бути результатом ділення на нуль (в такому випадку "полова") а може бути результатом ділення не на нуль ("зерно").
Бачу лиш один вихід: кожну операцію ділення перевіряти чи не ділимо ми на нуль.
Неактивний
lkj пише:По правилам математики деление на ноль не возможно. Пробуйте для интереса поделить число на ноль на своем калькуляторе, если покажет что-то другое, выбрасывайте калькулятор. Так что бага нет!
Обычно в процессорах и программах, деление на ноль вызыввет подпрограмму обработки ошибок. В некоторых языках программирования предусмотрены специальные "магические" константы неопределенности и бесконечности. Однако поведение по умолчанию может зависеть от реализации библиотек конкретного компилятора, оставляя эту проблему программисту.
PS: При делении на ноль все калькуляторы показывают "E".
Згідний з Вами. І в Ардуїно потрібний якийсь із інструментів обробки помилок. Похоже його теж скоротили (нафіга, це ж не OpenGL).
Неактивний
Сторінки 1