Симулятор Arduino

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

Arduino Tinkercad - симулятор Arduino (не только программного кода, но и схемотехники проекта) от компании Autodesk - мэтра CAD-систем, владельца торговой марки AutoCad.

Иногда, когда нет под рукой живого Arduino, это быстрый способ набросать проект. А иногда это - более быстрый способ отмакетировать проект, чем собирать его на проводах на макетке. 

Здесь можете почитать краткое введение в предмет, более чем достаточное, чтобы начать работать с Tinkercad:

Цитата:

Tinkercad симулирует работу электронных схем и контроллера, но при этом он является эмулятором ардуино, реализуя практически все базовые функции Arduino IDE — от среды редактирования и компилятора до монитора порта и подключения библиотек.

Вот как это выглядит (что там у меня на картинке за проект - не важно):

 

 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

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

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

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

Да, есть.

Для полноты картины, здесь:  Эмулятор контроллера для отладки программ

Цитата:

Пт, 03/06/2011 - 16:47

 

 

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

Olej пишет:

P.P.S. ... и к мужикам, попутно, вопрос ... может кто из мужиков знает?: глубина симуляции? ... того же Tinkercad, например. Т.е. эмулируются ли возможности AVR, выходящие за пределы библиотек Arduino IDE? ... обработка прерываний, например.

Не знаю, как там, но вот в протеусе модеоируется сам чип (можно и ардуино загрузить, но симулируется именно чип), так что все возможности на месте.

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

ЕвгенийП пишет:

Не знаю, как там, но вот в протеусе модеоируется сам чип (можно и ардуино загрузить, но симулируется именно чип), так что все возможности на месте.

Посмотрел Proteus :

1. Громоздко и монстрообразно ... это полновесный CAD, но для Arduino это "из пушки по воробьям".

2. Исключительно Windows (ну, не ставить же мне Windows только для этой забавы?).

3. Очень дорого ... даже для обучения (для университетов) + индивидуальная версия - очень дорого! А варёзом пользоваться хакнутым ... я как-то давно отвык. ;-)

 

b707
Онлайн
Зарегистрирован: 26.05.2017

Olej пишет:

Посмотрел Proteus :

1. Громоздко и монстрообразно ... это полновесный CAD, но для Arduino это "из пушки по воробьям".

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

Olej пишет:
2. Исключительно Windows (ну, не ставить же мне Windows только для этой забавы?).

3. Очень дорого ... даже для обучения (для университетов) + индивидуальная версия - очень дорого! А варёзом пользоваться хакнутым ... я как-то давно отвык. ;-)

два последних пункта всего лишь свидетельствуют о узости мышления. Я когда-то тоже шесть лет просидел в Линуксе, полностью отрицая винду.  Но потом пришло понимание, что это все равно что самолично выколоть себе один глаз. Существует масса профессионального софта, аналогов которому в Линуксе нет. Да и как обычный десктоп Винда зачастую удобнее. С другой стороны - у линукса свои преимущества, расписывать которые не буду - сами знаете. Поэтому у меня на рабочем месте два компа с двумя разными ОС. На Линуксе - сервер, база данных и средства программирования. На винде - все остальное. И никаких холиваров.

 

b707
Онлайн
Зарегистрирован: 26.05.2017

Olej пишет:

 попутно, вопрос ... может кто из мужиков знает?: глубина симуляции? ... того же Tinkercad, например. Т.е. эмулируются ли возможности AVR, выходящие за пределы библиотек Arduino IDE? ... обработка прерываний, например.

пробовал симулировать в тинкеркаде генератор импульсов на аппаратном таймере и прерываниях - работало.

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

b707 пишет:

Olej пишет:

 попутно, вопрос ... может кто из мужиков знает?: глубина симуляции? ... того же Tinkercad, например. Т.е. эмулируются ли возможности AVR, выходящие за пределы библиотек Arduino IDE? ... обработка прерываний, например.

пробовал симулировать в тинкеркаде генератор импульсов на аппаратном таймере и прерываниях - работало.

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

 

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

Olej пишет:

3. Очень дорого ...

Не знаю, как сейчас, я покупал за 230 евро.

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

b707 пишет:

два последних пункта всего лишь свидетельствуют о узости мышления. Я когда-то тоже шесть лет просидел в Линуксе, полностью отрицая винду.  Но потом пришло понимание, что это все равно что самолично выколоть себе один глаз. Существует масса профессионального софта, аналогов которому в Линуксе нет. 

Это всё дело вкуса и профессионального рода деятельности. Для меня работа с Linux, Solaris, QNX и др. - это профессиональная деятельность. А Windows последний раз в руки брал в 2003-м году ... просто нет нужды. Ну, нет у меня его в доме на многих компьютерах, нет.

А Arduino - любопытная игрушка. И есть ... кой-какой тайный замысел ;-)

P.S. Чего уж совершенно не понял, так это каким образом дороговизна Proteus - "говорит об узости мышления"? ;-o

 

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

ЕвгенийП пишет:

Не знаю, как сейчас, я покупал за 230 евро.

Ну, если не нужная в хозяйстве вещь: так и 10 евро - это очень дорого.

b707
Онлайн
Зарегистрирован: 26.05.2017

Olej пишет:

P.S. Чего уж совершенно не понял, так это каким образом дороговизна Proteus - "говорит об узости мышления"? ;-o

да все вы поняли... :)

 

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

Olej пишет:

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

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

Только упростил довольно существенно:

#define TOGGLE_IO 9 // вывод Arduino для переключения по таймеру ISR
int latency, timerLoadValue; 

ISR( TIMER2_OVF_vect ) { //Timer2 указатель вектора прерывания по переполнению
  digitalWrite( TOGGLE_IO, !digitalRead( TOGGLE_IO ) ); //Инверсия IO-вывода 
  //Захват текущего значения таймера. Это величина ошибки
  //из-за задержки обработки прерывания и работы этой функции
  latency = TCNT2;
  TCNT2 = latency + timerLoadValue; //Перезагрузка таймера и коррекция по задержке
}

#define TIMER_CLOCK_FREQ 2000000.0  //2MHz for /8 prescale from 16MHz
//Конфигурирует Таймер2 ATMega328 для выработки прерывания с заданной частотой
//Возвращает начальное значение таймера, которое должно быть загружено в TCNT2 внутри ISR
unsigned char SetupTimer2( float timeoutFrequency ) {
  unsigned char result; //Подсчет начального значения таймера
  result = (int)( ( 257.0 - ( TIMER_CLOCK_FREQ / timeoutFrequency ) ) + 0.5 );
  //257 на самом деле должно быть 256, но я получил лучшие результаты с 257.
  //Установки Таймер2: Делитель частоты /8, режим 0
  //Частота = 16MHz/8 = 2Mhz или 0.5 мкс
  //Делитель /8 дает нам хороший рабочий диапазон так что сейчас мы просто жестко запрограммируем это.
  TCCR2A = 0;
  TCCR2B = 0 << CS22 | 1 << CS21 | 0 << CS20;
  TIMSK2 = 1 << TOIE2; //Подключение прерывания по переполнению Timer2
  TCNT2 = result;      //загружает таймер для первого цикла
  return( result );
}

void setup() {
  Serial.begin( 9600 );
  pinMode( TOGGLE_IO, OUTPUT );          //Устанавливает порт, который переключать в ISR
  timerLoadValue = SetupTimer2( 44100 ); //Запускает таймер и получает загружаемое значение таймера
  Serial.print( "Timer2 Load:" );        //Выводит загружаемое значение таймера
  Serial.println( timerLoadValue, HEX ); 
}

long latencySum = 0, sampleCount = 0;  

void loop() {
  delay( 10 );               //Собирает задержку ISR каждые 10 мс.
  latencySum += latency;     //Собирает текущее значение задержки из ISR
  if( 100 == ++sampleCount ) { //Как только наберется 100 замеров...
    float latencyAverage = latencySum / 100.0, //Вычисляет среднюю задержку 
          loadPercent = latencyAverage / (float)timerLoadValue * 100;
    sampleCount = latencySum = 0;              //Обнуляет значения сумм
    char msg[ 50 ], flt[ 12 ];  
    sprintf( msg, "Latency Average: %s Load: %d%%", 
             dtostrf( latencyAverage, 4, 2, flt ),
             (int)loadPercent );
    Serial.println( msg );
  }    
}

И выглядит это примерно так:

Timer2 Load:D4
Latency Average: 68.87 Load: 32%
Latency Average: 69.08 Load: 32%
Latency Average: 68.94 Load: 32%
Latency Average: 69.18 Load: 32%
...

 

 

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

Olej пишет:

И выглядит это примерно так:

Timer2 Load:D4
Latency Average: 68.87 Load: 32%
Latency Average: 69.08 Load: 32%
Latency Average: 68.94 Load: 32%
Latency Average: 69.18 Load: 32%
...

Таким образом, похоже, Tinkercad симулирует AVR/Arduino  достаточно глубоко, на уровне чипа...

Отрабатывать ли на нём проекты - вопрос спорный ... в каждом случае по-разному.

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

 

sadman41
Offline
Зарегистрирован: 19.10.2016

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

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

sadman41 пишет:

но сколько опыта будет недополучено... 

Ну а если мне (или ему..., её ...) такой опыт не нужен? А нужен результат.

Если я за свою жизнь уже этих "отходящих проводков" и паяльников - нахватался до рвоты?

Или, наоборот, если мне вдруг понадобится по служебной необходимости железка - посадят нужное количество электронщиков-разработчиков + такоее же количество конструкторов, и принесут готовую железку по-быстрому?

P.S. У каждого человека могут быть а). свои потребности, б). своё окружение, в). свои задачи .... наконец - г). своё представление о прекрасном ;-). Поэтому не нужно сразу и криком навязывать кому бы то ни было свою, узко-меркантильную, заточенную на свои условия точку зрения.

  

b707
Онлайн
Зарегистрирован: 26.05.2017

Olej пишет:

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

 

Интерфейс ТинкерКада не показался мне удобным - как в плане редактирования кода. так и "собирания схем". Поэтому с учетом очень ограниченной поддержки реального железа я ему серьезных применений не вижу. "Синтаксические контрукции" мне проще на обычном GCC обкатать. а работу с железом - на реальной ардуине.

sadman41
Offline
Зарегистрирован: 19.10.2016

Olej пишет:

P.S. У каждого человека могут быть а). свои потребности, б). своё окружение, в). свои задачи .... наконец - г). своё представление о прекрасном ;-). Поэтому не нужно сразу и криком навязывать кому бы то ни было свою, узко-меркантильную, заточенную на свои условия точку зрения. 

Так не навязывайте, в чем проблема?

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

sadman41 пишет:

Так не навязывайте, в чем проблема?

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

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

P.S. А если вас, вдруг, это так сильно коробит и колбасит, то я могу свои разборки продолжать в тишине и одиночестве, не выносить их сюда и не комментировать...

 

 

b707
Онлайн
Зарегистрирован: 26.05.2017

Olej пишет:

Поэтому не нужно сразу и криком навязывать кому бы то ни было свою, узко-меркантильную, заточенную на свои условия точку зрения.

  

да-да-да.... надеюсь вы отнесете это высказывание и к себе - и прекратите "свою, узко-меркантильную, заточенную на свои условия" компанию против "выньдаунов"? :)

Olej
Olej аватар
Offline
Зарегистрирован: 05.03.2018

b707 пишет:

да-да-да.... надеюсь вы отнесете это высказывание и к себе - и прекратите "свою, узко-меркантильную, заточенную на свои условия" компанию против "выньдаунов"? :)

Не нужно про выньдаунов? И всего то? ... что нужно благородному дону для полного счастья...

Не буду. ;-)

 

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Что то не найду на сайте этот симулятор (

anatoli_nik
Offline
Зарегистрирован: 17.01.2019
fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Вот там я и не нашел симулятора..

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

fly245 пишет:
Вот там я и не нашел симулятора..

Может, здесь https://www.tinkercad.com/learn/project-gallery;collectionId=OMOZACHJ9IR...

Дальше не смотрел, он потребовал регистрации, а я не захотел.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

fly245, после авторизации выбрать в меню  "Circuits" -> "Создать цепь"

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Duino A.R.,dimax  Благодарю,попробую как Вы сказали