Симулятор Arduino

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

 Здравствуйте!

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

 

Заранее спасибо за помощь.

Starpom
Offline
Зарегистрирован: 06.03.2011
vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

Я "потыкался" в ней - не понравилось..."живое" ардуино не заменить + элементная база

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

Большое спасибо! Попробую! 

leshak
Offline
Зарегистрирован: 29.09.2011

 

vworld пишет:

Я "потыкался" в ней - не понравилось..."живое" ардуино не заменить + элементная база

Неужели купили? :) Или может намекнете где поискать версию с симуляцией можно? Что-то не получилось найти.

 

2Alexrusnet

Еще протеус умеет симулировать amtel. Но уровень "дружелюбности для новичка" у него конечно на порядок (или два)  меньше. Хотя и, в итоге, умеет он - на порядок больше.

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Я купил. Штука неплохая, есть отладка (пошаговое выполнение... но что-ито незаладилось :( Там IDE своя - на Java. А времени разбираться с импортом-экспортом пока не было.

leshak
Offline
Зарегистрирован: 29.09.2011

AlexFisher пишет:

Я купил. Штука неплохая, есть отладка (пошаговое выполнение... но что-ито незаладилось :( Там IDE своя - на Java. А времени разбираться с импортом-экспортом пока не было.

Ну собственно именно отладка и интересовала. Тоже подумываю купить. Деньги, вообщем-то, не заоблачные (а объем работы стоит что-бы его оплатить)), но "просто выкинуть" уже жалко. Можно какой-то шилд на них прикупить. Удручает что нету никакго триального периода. Что-бы понять нужно оно вообще или проще Serial.print-натыкать.

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

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

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

leshak
Offline
Зарегистрирован: 29.09.2011

 Да, спасибо. Если припрет - наверное так и сделаю. Наверное вы правы. С жалобами на отсутсвие триала это я промахнулся с адресатом ;)

А протеус - да. Когда-то ковырялся - даже исходник в него получалось подгрузить и по нему степать. Просто больно уж монстрячий :) и телодвижений много-долго что-бы какой-то вопросик выяснить. 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

leshak пишет:

 А протеус - да. Когда-то ковырялся - даже исходник в него получалось подгрузить и по нему степать. Просто больно уж монстрячий :) и телодвижений много-долго что-бы какой-то вопросик выяснить. 

Как говорил один уважаемый мной классик, это первую тысячу лет трудно, потом привыкаешь :) На самом деле, имея некорое количество заготовок в Протеусе, все получается достаточно быстро, долго, когда нужны новые, еще незнакомые элементы. А база не плоха.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

leshak пишет:

Или может намекнете где поискать версию с симуляцией можно? Что-то не получилось найти.

если честно, то вроде у нас же на форуме тема была по этому вопросу, оттуда и брал ссылку, если не найдете, то попробу числа 22.06 дать ссылку...раньше не получается :(

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

vworld пишет:

если честно, то вроде у нас же на форуме тема была по этому вопросу, оттуда и брал ссылку, если не найдете, то попробу числа 22.06 дать ссылку...раньше не получается :(

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

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

 Попробовал. Программка очень недурна. Легка в освоении даже для новичка. Даже получилось кое-что в ней сделать.

Но вот кто может сказать, что не так в этом коде:

#define LED 9
	int i = 0;	
void setup() 
{
pinMode(LED, OUTPUT); 
}
 void loop() 
 {
 for (i = 0; i < 255; i++)
	{
	analogWrite(LED, i);
	delay(10);
	}
 for (i = 255; i > 0; i--) 
	{
	analogWrite(LED, i);
	delay(10);
    }
 }

Пишет: "Неожиданный конец файла". И все на этом.

Подскажите, пожалуйста, в чем ошибка?

Заранее спасибо.

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Alexrusnet пишет:

 

Пишет: "Неожиданный конец файла". И все на этом.

Подскажите, пожалуйста, в чем ошибка?

Заранее спасибо.

Неа! Так низя! Это же Ява! Вы бы хоть пример какой сначала попробовали! Надо примерно так:

import muvium.compatibility.arduino.Arduino; 
class sketch_jun20a extends Arduino{//Automatically Added VBB Framework Code - do not remove
	final int LED = 9;
	int i = 0;	

	public void setup() 
	{
		pinMode(LED, OUTPUT); 
	}
	public void loop() 
	{
		for (i = 0; i < 255; i++)
			{
			analogWrite(LED, i);
			delay(10);
		}
		for (i = 255; i > 0; i--) 
		{
			analogWrite(LED, i);
			delay(10);
		}
	}

}

 Иначе говоря, пользуйтесь импортом. Он кривоват, но помогает.

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

AlexFisher пишет:

 Иначе говоря, пользуйтесь импортом.

Наверное я попрошу слишком много, но обясните поподробнее. Как пользоваться импортом?

Что-то все равно ругается на вот эту строку:

class sketch_jun20a extends Arduino{

Может быть здесь что-то надо изменить? может быть мне надо, например, вместо sketch_jun20a написать что-то свое?

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

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

Импорт:

New->Import Arduino Sketch Wizard

Тут нужно указать скетч (расширение должно быть pda), ссылку на IDE Arduino и тип платы (если нету, то выбирайте максимально похожую)

Дальше он сам все сделает

leshak
Offline
Зарегистрирован: 29.09.2011

Умц. Я правильно понял, что он, на самом деле не железо эмулируется и фактически выполняется-отлаживается java код? То есть именно C как C он не компилирует?

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Именно так, он эмулирует... даже не знаю, что, перефирию, что ли... но на Яве. Скомпилировать то, что получилось, можно - там есть экспорт. Компилировать и шить потом нужно стандартной IDE, у меня не получилось напрямую, наверно, потому что у меня стоят 3 IDE, а он заточен конкретно под 0022. Но то, что он экспортирует, версия 0101 нормально открыла и залила в железку :)

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

AlexFisher пишет:

Импорт:

New->Import Arduino Sketch Wizard

Тут нужно указать скетч (расширение должно быть pda), ссылку на IDE Arduino и тип платы (если нету, то выбирайте максимально похожую)

Дальше он сам все сделает

Видимо я Нуб, поэтому сделать так, как Вы описали у меня не вышло.

Но я нашел вот это: ajc.su/zhelezo/emulyaciya-arduino/

Вот так у меня получилось все чудесно. И код остался в Си, а не превратился в непонятный Ява-код, как Вы писали выше.

Но вот только видимо Virtual Breadboard подходит для очень примитивных проектов, потому как только я попытался испробовать код посерьезнее (нашел в книге) программа впала в ступор. Сообщений об ошибке нет, но и демонстрировать ничего не хочет. Просто тишина и все.

leshak
Offline
Зарегистрирован: 29.09.2011

 

AlexFisher пишет:

Именно так, он эмулирует... даже не знаю, что, перефирию, что ли... но на Яве. Скомпилировать то, что получилось, можно - там есть экспорт. Компилировать и шить потом нужно стандартной IDE, у меня не получилось напрямую, наверно, потому что у меня стоят 3 IDE, а он заточен конкретно под 0022. Но то, что он экспортирует, версия 0101 нормально открыла и залила в железку :)

Спасибо огромное. Вы съекономили мне $60. Как-то прошел мимо сознание этот нюанс про Java (непонятно, почему Java, если приложение на .net написанно). Похоже, все-таки, альтернативы протеусу не осталось. Все-таки возможность отлаживать оригинал кода (и настоящий бинарник) и отлаживать перевод на другой язык (пусть внешне и похожий), под другую платформу - совсем другая песня.

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

 Очень прошу помощи у знатоков!

Думаю, что вопросами, которые стоят сейчас передо мной, задаются все новички. Какие программы использовать для начала работы? Очень хотелось бы сразу правильно соориентироваться. А не потратить кучу времени и нервов на освоение чего-то ненужного (или неудобного).

Из всего выше сказанного я понял, что одна из программ - это Протеус. Но также я понял, что здесь нужна связка как минимум из двух программ.

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

Есть еще WinAVR. В этой программе можно писать программный код особо не заморачиваясь. Т.е. чтобы светодиод замигал достаточно этого:

void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

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

 

Ответ вроде бы очевиден, какую связку использовать. Но все же терзают смутные сомнения. Что же, те, кто использует AVR Studio глупее меня? И вообще,  и в AVR Studio и в WinAVR используется один и тот же язык программирования - Си, но почему же такая разница в написании кода?

Помогите, пожалуйста, разобраться и сразу правильно соориентироваться.

Заранее спасибо!

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Вы привели кусок кода для IDE Arduino, а не для WinAVR!

IDE Arduino - это надстройка над GCC, который и используется в WinAVR (штатно там вообще только ассемблер, gcc подключается) и в AVR-Studio. Есть еще CV (Code Vision AVR) - там есть куча визардов, существенно облегчающих настройку перефирии. Но если у Вас плата Ардуино и Вас так пугают битовые операции, то ничего кроме штатной IDE Arduino Вам не нужно. Если есть желание отлаживать устройство в Протеусе - есть где-то статья, как вытащить бинарник из IDE и вставить в Протеус. Но если у Вас чистая авр-ка и есть программатор для нее, то осваивайте AVR Studio - там отладка хорошая, есть плагин к Протеусу. Но нет визардов. Я обычно генерю всю настройку перефирии в CV, гружу ее в AVR Studio и пишу там "мясо".

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

AlexFisher пишет:

Но если у Вас плата Ардуино...

Но если у Вас чистая авр-ка и есть программатор для нее...

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

 

AlexFisher пишет:

Но если у Вас чистая авр-ка и есть программатор для нее...

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

AlexFisher пишет:

осваивайте AVR Studio...

Это синоним "осваивай программирование на чистом Си"?

А есть какой нибудь толковый "букварь" на эту тему?

leshak
Offline
Зарегистрирован: 29.09.2011

 >Т.е. чтобы заставить светодиод просто помигать, нужно получить два высших образования.

Вначале решите вы хотите быть "как взрослый микроконтрольщик" или вам нужно "просто получить результат".

Вообщем-то ArduinoIDE задумывалась именно для любителей. Что-бы помигать диодом можно было в течении 2-х минут (Запустить, File/examples/blink,  upload). И для 90% "домашних кулибиных" этого хватает. Да и "серьезные" вещи тоже делаются.

Если хотите "до потрохов", "с основ" - наверное WinAVR. Тогда сможете "выжать все возможное из камня", но порог входа - увеличится. И это вам уже всякие easyelectronicst, "AVR 1,2,3" читать нужно будет.

Всякие Proteus  и проч.... это не "маст хев". Без них тоже можно жить :)  Мне, например, он нужен в ситуациях когда я пишу скетч "для кого-то" и реального железа, что-бы проверить, у меня просто нет. Если вы пишите "для себя", то железо, скорее всего у вас есть. А что-бы выловить баг в логике средней тяжести в 90% случаев Serail.println достаточно.

Так что из "нужно иметь" - достаточно ArduinoIDE, порог старта - минимальный. Но вообщем-то и особых ограничений что-бы "лезть в глубину" - тоже нет.

Только не ведитесь на рекламную чепуху что "с ардуино не нужно знать программирования" (и кто это придумал?). Высшего образование, конечно, не потребуется, но знать что такое if и чем локальная переменная отличается от глобальной - нужно.

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Добавлю, чем мне понравилась Ардуинка.

Для меня нет ничего сложного в том, чтобы написать программу для камня. Я и на чистом асме могу (начинал я так - на аттини2313 :)). Часто бывает, что собранное устройство не используется, или не устраивает и вместо него собирается новое. Ну или внешние требования изменились ("... а не поставить ли мне сюда вместо моторчика серву?"), у нас же нет жесткого ТЗ. И переделывается плата... Здесь же я использую вариант MINI как модуль (воткнул-выткнул). Обленился, наверно. Ну и USB сразу пожалуста - не надо заморачиваться.

Ну и, в конце концов, когда функциональности IDE не хватает, начинаю подключать стандартные библиотеки и писать "на чистом" с, как на WinAVR. И ничего не мешает залить прогу из WinAVR в Arduino - там есть ICP-разъем для программатора.

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

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

Спасибо всем, кто откликнулся на мои вопросы.

Все что вы говорите - справедливо и верно. Тут уж не поспоришь. Arduino - конечно проще и без заморочек.

Но разве это главное? Если да, то можно пойти еще дальше по пути "без заморочек" и купить за копейки ЛЮБОЕ готовое китайское решение (они уже давным давно все придумали и сделали или сделают в самое ближайшее время, т.к. твердо держат свою руку на пульсе потребительского спроса). 

Я ни в коем случае не хаю Arduino. Но ведь Вы же сами мне говорили, что Arduino только для прототипирования. Потом все на плату под пайку. А что же мешает сразу спрототипировать в Протеусе и на плату?

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

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

http://www.avr123.nm.ru/ - там очень доступный курс для начинающих и ссылки на другую литературу. Это если Вы имели в виду "чтобы научиться писать на с для контроллера" а не вообще "на с" :)

Ссылка, кстати, уже приводил LESHAK, но не явно. Но любой поисковик сразу бы ее нашел ;)

Alexrusnet
Offline
Зарегистрирован: 08.06.2012

AlexFisher

Спасибо! 

Alexander78
Offline
Зарегистрирован: 15.06.2015

Обсолютно не работающее приложение.. Не тратьте свои деньги..

Alexander78
Offline
Зарегистрирован: 15.06.2015

Я про VBB.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Это же как должно было накипеть чтобы отвечать на 3-х годичный пост :)