我可以在没有实际电路板的情况下为Arduino编程吗?


205

我想开始开发一些基本的Arduino项目,但我还没有Arduino板。有什么方法可以编写代码并使用台式计算机进行仿真/测试,因此在开发板到达后,我只需要在其上上传并运行我的项目?


1
我也很感兴趣,您是否找到了一个可以与Arduino IDE一起使用的软件?即,IDE将其检测为具有所有功能的木板。
rraallvv

Answers:


128

那里有大量的Arduino模拟器,许多免费的,还有一些付费的产品。

  • 代码块的Arduino开发环境包括一个免费的Arduino模拟器,仍处于开发阶段,但功能。
  • Simuino模拟Arduino Uno和Mega引脚-虽然不是看起来很逼真的模拟器,但是可以工作。
  • 基于Python的Arduino Simulator是另一种选择,可与官方IDE完美配合
  • 适用于Arduino的 Virtronics Simulator看起来很有前途,但我不明白为什么我会为此花14.99美元来购买一个或多个实际的Arduino克隆

如果您进行搜索,还有许多其他的Arduino模拟器可以使用,并且新的模拟器一直被宣布,甚至是众筹。


10
需要注意的是,它们不是模拟器而是模拟器,最重要的区别是它不会在AVR虚拟机上运行代码(如qemu所做的那样),而是将Arduino函数绑定到本机代码。因此,基本上他们将无法运行本机AVR内容,并且寄存器/计时器的行为将与真实AVR硬件上的不一致。看到那个答案很好地解释了差异。但是,从理论上讲,可以使用qemu模拟Arduino Due代码。
zmo 2014年

5
您“不知道为什么[一个]可以以这个价格购买一个或多个实际的Arduino克隆产品,为什么[一个]会为它付$ 14.99”?我可以告诉您原因:因为该硬件没有内置调试器,而该调试器具有模拟器可以提供的功能。
R. Martinho Fernandes 2014年

8
Arduino的模拟器激起了我的兴趣,但遗憾的是似乎没有任何有关它的SourceForge的站点文件。我是否遗漏了某些东西,或者自从您写下答案以来,它已经过时了?
Greenonline

如上所述,在arduino模拟器源伪造站点中没有文件。是否有相应的网站,或者还有使用官方IDE在Mac上运行良好的其他模拟器?
gordanvij

4
Simuino非常糟糕,不专业并且没有用。他们不知道如何编码。Arduino Simulator没有发布。CodeBlocks仅适用于Windows。Arduino模拟器不是开源的。
dhchdhd

81

我喜欢为此使用Circuits.io或TinkerCAD

它基于云,并具有一些不错的功能,包括PCB设计和协作。

IMO Arduino的仿真和功能令人印象深刻且直观。


3
它非常好,干净,基本功能确实令人印象深刻,易于使用且功能强大。但是,尚不支持许多常见部件(包括LCD和温度传感器)。我怀疑您可以在此阶段测试除基本设计之外的任何东西。我希望随着时间的推移会变得更好。
苏马2014年

我给它一个快速尝试,发现它非常的免费的产品令人印象深刻。我不知道它在模拟现实性方面的局限性,但是编辑器非常友好,只需将一个led插入带有正确引脚和闪烁循环的自动创建的代码的合适插槽中即可!
heltonbiker

甚至我的选择是123d,但我对此站点的唯一抱怨是他们没有添加新组件。如果他们可以在列表中添加一些新组件,那就太好了
KD。

2
电子实验室部分circuits.io网站已经移动到tinkercad.com,在那里你可以找到它在电路
SiggyF '17

1
我已经编辑并更新了链接。
sa_leinad

40

电子仿真器世界中存在很多选择,但是circuit.io aka TinkerCAD可能是其中功能最多的一种。

  • 您可以在看起来像真实的虚拟面包板上组成电路。
  • 实际上,您可以在实时仿真过程中观看LED闪烁或按下按钮,而不必为抽象波形而苦恼。
  • 您可以将555计时器或移位寄存器等数字设备与电阻器和LED等(交互式)模拟组件结合使用。
  • 您可以对Arduino进行编程,并与周围的模拟电路一起仿真微控制器。
  • 您可以调试Arduino:当模拟器达到断点时,模拟将暂停,您可以轻松检查代码中的每个变量以及电路中的每个电压或电流。
  • 您可以使用并遵守不同的通信协议,例如UART,I2C和SPI。
  • 您可以在驱动程序代码中放置一个断点,从而在I2C序列中间暂停仿真(例如,I2C事件的中断服务程序)
  • 免费!

例

这是一个带有IR遥控器和LCD屏幕的示例电路。

免责声明:我们是123D电路的制造商


1
它如何与Arduino IDE一起玩?它可以用于闪存,调试等吗?
rraallvv '16

14

请注意,没有模拟器可以重现现实情况。Arduino论坛上有很多关于代码或电子设备问题的帖子,这些帖子看起来有些微妙,例如:

  • 时间问题
  • 比赛条件(相关/相关事件并非总是以相同的顺序发生)
  • 电压水平,例如 浮动输入引脚
  • 降低Arduino电压足以复位的驱动电机
  • 没有去耦电容器
  • 输入引脚处于“未定义”状态(例如,在2或更低的V为LOW且3V或更高的V为高电平的引脚上为2.5V)
  • 中断处理程序的问题,例如变量未声明为volatile
  • 由于电机上没有反激二极管而导致电压尖峰
  • 一旦超过10个LED亮起,处理器就会复位,因为电流消耗超过了硬件可以提供的数量
  • 当只有9 µS可用时,中断处理程序需要10 µS来处理中断。

从本质上讲,模拟器无法重现所有这些。即使可以,您是否会考虑切换“插入来自电动机的随机噪声”选项?


为了为开发板做好准备,请下载IDE并开始编程。您可以安装库,编写代码,并且没有语法错误,整齐地组织起来,并且通常在您可以使用硬件时就可以准备大的日子。


玩得开心,享受尝试您的Arduino的乐趣!


13

您可以使用Yenka(家庭免费使用)来模拟Arduino,PIX,PIXACE和其他具有数字,模拟和串行I / O的板。它提供了许多组件和示例项目。

屏幕截图:

Yenka Arduino仿真


可以从Arduino IDE进行编程和调试吗?
rraallvv 2016年


9

我相信这个网站上列出了仿真器和仿真器,以及它们的价格和可用性。

更新:

由于某些用户提到该网站中的链接断开,因此我找到了一些仿真器。请注意,某些描述可能来自所提到的链接:

  • Emulino:是早期开发中基于linux的开源软件,可模拟Arduino特定的MCU。

  • Emulare:是通用硬件模拟器。它旨在提供一个中央界面来构建用于嵌入式软件开发的电子仿真。目前,emulare专注于ATMega系列微控制器(Arduino UNO具有ATMega处理器)。

  • SimAVR:是适用于linux或使用avr-gcc的任何平台的新AVR模拟器。模拟器直接加载ELF文件,甚至还可以使用.elf节在模拟代码中直接指定模拟参数。它支持许多ATMega处理器的仿真,并且提到添加新处理器很容易。

  • Amtel Studio:这似乎没有提到仿真一词,但这是一个复杂的IDE,可以为许多平台(尤其是Arduino)调试代码。Atmel Studio 7具有一键式无缝导入在Arduino开发环境中创建的项目的功能。您的草图(包括其引用的任何库)将作为C ++项目导入Studio 7。导入后,您就可以利用Studio 7的全部功能来微调和调试设计。Atmel Studio 7完全支持Arduino Zero板上强大的嵌入式调试器。对于其他Arduino板,可以使用暴露调试连接器的屏蔽适配器,或者切换到许多可用的Xplained-Mini / PRO板之一,以充分利用Atmel硬件生态系统。

您仍然可以使用EasyEDA等模拟器来测试代码,并且在大多数情况下可以在设备上运行它。但是请注意,鉴于电子组件的性质,您可能必须提供外部电阻器,电容器等才能获得预期的效果。


链接在这里只能回答不好的事情,因为当链接的站点出现故障时,它们将无用。请写下摘要,并确保您的答案能增加价值,而不仅仅是重复我们已经拥有的答案。
totymedli

我同意@totymedli-如果该链接无效,答案将变得毫无用处。请至少总结一下所提到的仿真器和当前价格。您可以用星号开头的行来指出要点,如果有帮助的话。
尼克金门

7

Virtualbreadboard有一个新的VBB4Arduino'两个Arduino'版本,其中包括一个JVM Arduino仿真器和一个AVR指令集仿真器,其示例涵盖了几乎所有的Arduino发行示例和大量外围硬件-LCD,WS2812 Neo LED,电机,伺服器,逻辑分析仪等。

http://www.virtualbreadboard.com

免责声明:我是《虚拟面包板》的作者


6

尝试使用Simulator for Arduino-这是最好的选择,但是由于我们是开发团队的一员,所以我们有偏见。并非所有人都愿意支付$ 19.99,尽管在过去几年中有近5,000名Arduino用户使用过。有一个适用于Arduino的免费版本,可运行45天或100次草图加载,最多200行。尝试一下,然后购买,如果您负担得起和/或似乎值得。

如果有不正确的地方或可以改进的地方,请告知我们-其他人都做过并且拥有,这就是为什么Arduino Simulator已由用户构想和错误报告构建了99%。

另外,我们尝试过的唯一质量接近的其他程序是Proteus,但这是一个完整的PCB设计工作室,看起来非常昂贵-即远远超过20美元。我们计划忽略最近的用户要求将价格提高到200美元。


5

您可以例如使用我的模拟器。它尤其适用于类似PLC的应用,在这些应用中,通过对互连的类似电路的对象(定时器,标记,锁存器,Oneshot和寄存器)进行循环评估来实现多任务处理。您也可以使用它来模拟您的受控系统,从下载示例中可以清楚地看到。它具有适度的可视化功能,可以绘制时序图,并允许您在运行模拟过程中实时访问和更改cq force所有变量。您也可以冻结时间。当您对控件的行为感到满意时,它将生成要上传到实际Arduino的C代码。

https://pypi.python.org/pypi/SimPyLC


1

一种可以使用台式计算机编写代码并对其进行仿真/测试的方法

如果您希望能够使用台式计算机进行“单元测试”,那么我可以提供一个我编写的名为arduino_ci的库。

它不提供仿真。您将用代码表示测试。例如,以下是从参考文档中提取的测试,测试可验证写入端口的数据:

unittest(pin_history)
{
  GodmodeState* state = GODMODE();
  int myPin = 3;
  state->reset();            // pin will start LOW
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, HIGH);

  // pin history is queued in case we want to analyze it later.
  // we expect 6 values in that queue.
  assertEqual(6, state->digitalPin[1].size());
  bool expected[6] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
  bool actual[6];

  // convert history queue into an array so we can verify it.
  // we expect to find 6 values: the 5 we set, plus the initial LOW
  // and this is where/how we assert that
  int numMoved = state->digitalPin[myPin].toArray(actual, 6);
  assertEqual(6, numMoved);

  // verify each element
  for (int i = 0; i < 6; ++i) {
    assertEqual(expected[i], actual[i]);
  }
}

在实践中,您可能不会直接调用digitalWrite函数-您将在库中调用一个函数,然后验证“世界状态”(在此由GODMODE结构表示)与您期望库执行的操作匹配。


0

是的,您可以并且相当容易。有一个名为TinkerCAD的出色的在线模拟(完全免费)。它具有出色的面包板仿真,其中包括晶体管,LED,IC和Arduino等部件。您可以对Arduino进行编程,并在包含交互输入(按钮,DIP开关等)的实时仿真中运行所有Arduino。


[编辑:以下文本指的是已移至Circuits.io的功能,即Eagle PCB ]

那不是全部。它还在单独的选项卡中提供了电路原理图,并在另一个选项卡中提供了面包板电路的PCB设计!或者,您可以只从头开始制作原理图,然后从那里制作PCB。

您可以制作电路设计,也可以购买。您可以在circuits.io中完成所有这些操作,而您并没有冒险弄乱您的实际Arduino。模拟中还具有警告指示器(例如,如果未在LED或IC上使用足够的电阻)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.