#126 Re: Програмування Arduino » служба времени Arduino » 2018-03-21 21:28:21

Olej пише:

В связи с чем сделал такое тестовое приложение:

А вот как оно выполняется:
file.php?id=2900

#127 Re: Програмування Arduino » служба времени Arduino » 2018-03-21 21:27:21

В связи с чем сделал такое тестовое приложение:

#include <stdio.h>
int serial_fputchar( const char ch, FILE *stream ) { Serial.write( ch ); return ch; }
static FILE *serial_stream = fdevopen( serial_fputchar, NULL );

void setup() {
  stdout = serial_stream;
  Serial.begin( 115200 ); 
}

void loop() {
  while( !Serial.available() );
  unsigned len = 0;
  while( Serial.available() ) {
    int r = Serial.read();
    if( r >= '0' && r <='9' ) 
      len = len * 10 + ( r - '0' );
    delay( 1 );
  }
  Serial.println( len, DEC );
  printf( "вычисление... ожидайте...\n" );
  unsigned long *prev = new unsigned long [ len ],
                *next = new unsigned long [ len ];
  int i = 0;
  do {
    prev[ i ] = millis();
    while( prev[ i ] == ( next[ i ] = millis() ) );
    if( next[ i ] - prev[ i ] > 1 ) i++;
  } while( i < len );
  for( i = 0; i < len; i++ ) {
    printf( "%lu:%lu:%2u", prev[ i ], next[ i ], i ? prev[ i ] - prev[ i - 1 ] : 0 );    
    printf( "%s", ( 9 == ( i % 10 ) ) ? "\n" : " | " );
  }
  printf( "\n" );
  delete [] prev;
  delete [] next;  
}

#128 Програмування Arduino » служба времени Arduino » 2018-03-21 21:25:55

Olej
відповідей: 27

Вот любопытные вещи относительно хронометража в Arduino:

При использовании millis() нужно помнить об одной особенности - millis() "тикает" не равномерно.
Возвращаемое значение увеличивается на единицу каждые 1024 мсек. Затем, когда миллис отстанет на 1 мсек, она "подводится" на единицу, т.е.  возвращаемое значение перескакивает через один.
При измерении длительных интервалов это не страшно, но при интервалах в несколько мсек это заметно.

Так же (время системного тика чуть меньше 1mc) имеет место во всех процессорных семействах и всех операционных системах (или средах выполнения). Но это в точности соответствует представлениям реального времени и требованиям стандарта POSIX 1003b для реального времени: "фактические значения временных интервалов может быть сколь угодно больше заказанных, но никогда не может оказаться меньше". Или то же самое: единица шкалы измерения времени (1мс.) может быть меньше, но не смеет быть больше.

В вашем изложении период 1mc фактически соответствует 0,9765625mks. Тогда процесс коррекции millis() строго детерминированный, и можно точно вычислить период, с которым ошибка millis() будет накапливать 1ms и будет подлежать коррекции.

#129 Re: Програмування Arduino » русские символы в Arduino IDE » 2018-03-21 21:21:28

В Linux, как всегда, всё гораздо проще и разнообразней по возможностям...
В конечном счёте, мы просто можем пользоваться консольными утилитами Linux без любых промежуточных приложений.
По крайней мере, это очень полезно для тестирования при непонятных нарушениях работоспособности!
И убеждаемся, что UTF-8 передаётся в оба конца без искажений.
file.php?id=2897&t=1
file.php?id=2898&t=1

#130 Re: Програмування Arduino » русские символы в Arduino IDE » 2018-03-21 21:18:52

А кроме того, в качестве монитора сериального порта можно использовать ещё одни штатный монитор сериального порта (утилиту), во всех существующих операционных системах, допускающий настройку отображения во всех мыслимых в природе кодировках - это Putty, столь глубоко любимая в Windows.
file.php?id=2894

#131 Re: Програмування Arduino » русские символы в Arduino IDE » 2018-03-21 21:15:14

Olej пише:

Эти искажённые символы проявляются как в версии 1.6.1 и 1.8.1
Это глюк именно Arduino IDE.

А в 1.8.5 всё работает корректно.
file.php?id=2896&t=1

#132 Re: Програмування Arduino » русские символы в Arduino IDE » 2018-03-21 21:11:21

Olej пише:

2. Обмен по вводу-выводу через Serial

Обмен через Serial (USB) в Arduino кода UTF-8 корректно шёл всегда.
А вот отображение кодов UTF-8 в мониторе порта Ardoino IDE до самого последнего времени глючило ... что-то, наверное, связанное с задержками поступления байт.
Выглядит это так:
file.php?id=2891
Эти искажённые символы проявляются как в версии 1.6.1 и 1.8.1
Это глюк именно Arduino IDE.
(3 строки там потому, что считанную с Serial строку скетч ретранслирует обратно в Serial 3-мя разными способами)

#133 Re: Програмування Arduino » энергосбережение какой выбрать режим, для данной задачи. » 2018-03-21 15:19:03

Selen пише:

спасибо большое, почитаю.

Пишут (не помню где), что если для Arduino вы переводите процессор AVR в энергосберегательный режим, то у вас ещё остаётся контроллер последовательного порта (USB) который и съест на себя 50% общего энергопотребления.

P.S. Если доведёте до ума своё энергосбережение на Arduino, да ещё и померяете токи потребления с энергосбереженим и без, для сравнения, то напишите эти цифры сюда?
(потому как без измерения и сравнения это дело - пустое ... по принципу "я таки думаю, что у меня работает энергосбережение")

#134 Re: Програмування Arduino » Для меня сложно, а для вас нет) » 2018-03-21 15:15:02

Kaka пише:

Ну, почему же? Есть ещё один момент, когда про переполнение нужно помнить. Если например, нужно отсчитать временной интервал (один!) длиной в два месяца - жопа получится.

В принципе, да.
Но и эта потребность достаточно просто решается.

P.S. Но и такая потребность, как мне кажется, решается без учёта что там и как происходит с переполнением - инкрементруйте переменную uint64_t последовательно на значения интервалов получаемых в loop() ... надолго хватит. big_smile

#135 Re: Програмування Arduino » Для меня сложно, а для вас нет) » 2018-03-21 14:54:56

maxmix пише:

и тут великий страх перед переполнением... lol

Как-то объяснить нужно бы всем, в 1000001 раз снова и снова спрашивающих про переполнение, что:

- во всех случаях (95%), когда вас интересуют временные интервалы, нужно просто забыть про любые переполнения...

unsigned long prev, next;
...
if( ( next = millis() ) - prev ) > period ) {
   prev = next;
   ...
}

(не забыть, что ключевое здесь слово unsigned)

- и только когда вас каким-то образом вас интересуют значения временных меток millis() нужно вспомнить вот про те 50 суток... например, когда нужно время/дату uptime от времени включения;

- удивляет почему так много и часто уделяется преувеличенного внимания в обсуждениях этому переполнению ... кто никогда до того и не слышал про переполнения вообще.

#136 Re: Програмування Arduino » Плата для C# » 2018-03-21 14:40:11

stashe пише:

Подскажите, пожалуйста, какие-нибудь аналоги Netduino или возможно Arduino хорошо дружит с c#? в чем суть - хочу из студии и c# начать изучать эту область.

Совершенно дурная затея:
- C# - совершенно бездарная идея использовать для программирования контроллеров с ограниченными ресурсами. C или C++ - совершенно уместны, и ни в чём не уступают C#;
- все эти Netduino, Arduino и еже с ними - это игрушки, это не компьютеры ... они работают по циклической логике программируемых логических компьютеров (PLC) - это небольшая часть всех возможностей использования компьютеров, а поэтому и используемые для них C, C++, C# ... кто-то ещё использовали Python и Lisp - это жалкие ограниченные подмножества этих языков;
- поэтому и для "изучать C#" это не годится - дурная идея.

stashe пише:

И возможно ли у нас купить это или заказывать с амазона...

На AliExpress можно всё купить. Только ждать заказа придётся долго ... от 25 до 60 дней.
Лучше китайцев на сегодня никто не продаёт.

#137 Re: Апаратні питання » Доброго дня допоможіть скнопкою » 2018-03-21 12:27:49

maxmix пише:

это кому?

Это ТС-ру.
Но и тем, кто пытается на такое отвечать-подсказывать, кто не понимает что такое не лечится, что такие подсказки только продляют агонию... - тоже не лишне задуматься...

#138 Re: Апаратні питання » Доброго дня допоможіть скнопкою » 2018-03-21 11:18:00

maxmix пише:

ув. stels
надеюсь языкового барьера не возникнет? wink

Я фуею с этих "митцiв вiд програмування"  roll
Шёл бы лучше своим делом заниматься - быкам хвосты крутить...

#140 Re: Проекти » Система лазерной швартовки судов » 2018-03-20 19:26:42

Volodya пише:

Предварительные исходные данные

1. длина причала до 400 метров
2. длина судна от 100 до 300 метров
3. дальность работы комплекса до 300 метров

Задача хорошая, интересная...
Только, предполагаю, ещё и на 10% не понимаемая самими заказчиками-постановщиками.
Обсуждать, обсуждать, обсуждать ... и уточнять - но это обычная практика в крупных задачах, ничего здесь нет страшного, приложится.

Удивляет (пока, в 1-м приближении): а кто это вам насоветовал ориентироваться на задачу такой сложности, а главное критической надёжности (точнее даже то, что буржуи называют critical mission) делать на игрушках Arduion?
На вскидку предполагаю, что производительности никакого Arduion здесь будет недостаточно ... но дело здесь даже не в производительности, а в архитектурной ограниченности перелопачиванием в loop(), на манер программируемых логических контроллеров (PLC) - в такой архитектуре не все задачи решаются.
Я уже просто не решаюсь говорить о надёжности...  hmm

#141 Re: Проекти » Опережение зажигания на ардуино » 2018-03-19 23:40:04

Batu пише:

Писать программы каждый дурак может.. А вот придумать и дать четкое задание на программирование может далеко не каждый.

А вот придумать и дать четкое задание на программирование может далеко не каждый дурак. lol

#142 Re: Проекти » Опережение зажигания на ардуино » 2018-03-19 23:04:03

Batu пише:

Я не знаю как и что происходит при выжимании газа..

Правая педаль  big_smile  lol  wink

#144 Re: Проекти » Опережение зажигания на ардуино » 2018-03-19 22:35:28

Figaro 77 пише:

помогите с этим делом roll

С программированием я советом помогу.
С конструктивом - не могу.

#145 Re: Проекти » Опережение зажигания на ардуино » 2018-03-19 22:30:12

Вячеслав Азаров пише:

Т.е. Увеличение КПД? И на сколько? На сколько получится? Угол зажигания регулировать желательно, но нужно ли так точно? Гоняться за десятыми процента.

Пустые разговоры.
Анонизм-с ... Онанизм-с ... кому как больше нравится.
Вот так и заканчиваются большинство начинаний ... повязнув в трясине пустых разговоров. sad

#146 Re: Проекти » Опережение зажигания на ардуино » 2018-03-19 19:47:59

Вячеслав Азаров пише:

Раньше, насколько я знаю, это делал центробежный регулятор, и неплохо.

Раньше - это было 1/2 века назад ... и даже раньше. И на бензине 66-м когда-то ездили wink
И даже в то время то же Bosch производил подобные контроллеры для бесконтактных систем зажигания, когда выбрасывался прерыватель с вот тем центробежным регулятором. Те же ВАЗ-2108 были ограниченной партией с таким зажиганием, которые эксплуатационно заметно превосходили стандартные модели.
Да, на некоторых станциях big_smile ТО, когда видели такой двигатель спрашивали: "А как она ездит?". wink

#147 Re: Програмування Arduino » энергосбережение какой выбрать режим, для данной задачи. » 2018-03-19 19:36:52

Selen пише:

Я не знаком с такими режимами и никогда ничего с ними не делал.

AVR - Power management или как правильно спать
Power saving techniques for microprocessors
2-я ссылка - это, пожалуй, самый обстоятельный в природе разбор темы (англ.)

#148 Re: Проекти » Опережение зажигания на ардуино » 2018-03-19 18:57:16

Figaro 77 пише:

а считать все равно придется. алгоритм надо же чем то корректировать

Зависимости (когда они будут найдены, проверены и отработаны) у вас должны быть зашиты в массивы (индексируемые от числа оборотов ... нормализованных к целочисленным индексам, естественно).
Массивы должны быть, наверное, 2-х мерными - 1-я размерности по виду используемого топлива.
По ходу работы алгоритм не должен уже ничего читать, он должен только выгребать из массива данные для текущего числа оборотов и корректировать регулируемый параметр (угол опережения).
Единственное, что может считать алгоритм по ходу эксплуатации - это интерполировать точное значение регулирующей функции между узлами, заданными в массиве.

#149 Re: Різне » Книги по Arduino, свободно скачать » 2018-03-19 18:49:21

Olej пише:

Читайте книжки - всё, что связано с Arduino на самом деле очень просто.

Ещё подсказали ... это не книжка, но Интернет ресурс описательный - Уроки программирования Ардуино

Урок 1. Введение. Общие сведения об Ардуино.
...
Урок 60. Интерфейс RS-485.
Урок 61. Аппаратная реализация интерфейса RS-485. Объединение плат Ардуино в локальную сеть RS-485.
Урок 62. Технология клиент-сервер.
Урок 63. Локальная сеть Ethernet. Модуль ENC28J60, его подключение к плате Ардуино.

#150 Re: Проекти » Опережение зажигания на ардуино » 2018-03-19 18:02:56

Figaro 77 пише:

я ещё в процессе. считаю. скоро выложу таблицу.

Считать здесь - плохо. Считать - это будет чисто теоретическая и чисто голословная модель ... 1-е приближение.
А кривые этих оптимальных зависимостей давно изучены и опубликованы (лет как 30 назад и далее).

Підвал форуму