转载自arduino中文社区 https://www.arduino.cn/thread-5414-1-1.html

见到很多人对Arduino的开发方法 、应用场景有误解,特别开个帖子说明下。

误解一:Arduino性能很低,不如树莓派等开发板,所以不要用arduino做开发
杀鸡焉用牛刀,中科院不会用银河来玩魔兽,你也不会想用计算器来LOL,不同的平台有不同的定位;
Arduino更多用在数据采集和控制上,简单轻量。而树莓派等带OS开发板可以实现更多的复杂功能,如图形图像处理;
聪明的开发者会选择合适自己、合适项目的平台,而非选择性能最强大的平台。

误解二:Arduino程序效率很低,所以不要用arduino做开发
Arduino核心库是对AVRGCC的二次封装,确实会降低一些运行效率,但是这又有什么关系呢?你的程序真是对实时性要求很高么?至少我在论坛或者国内没有看到多少对效率极为苛求的项目;
Arduino与传统的单片机开发的关系,类似于各种语言和其配套的SDK,一个正常的程序必定是选择一个合适语言+相应的SDK快速的做出开发,选择Arduino做开发也是如此。
当然,你可以选择使用传统方式,甚至是汇编开发单片机,把效率做到极致,但你必定会付出更大的学习成本,程序后期的修改也会变得举步维艰;
如果你的项目真是需要很高的实时性,那我建议你使用arduino+avrgcc,甚至arduino+汇编的混编方式开发,如果这样还达不到你的要求,你还可以使用Arduino
Due、Arduino Zero、chipkit、maple等32位的arduino的开发平台。

误解三:Arduino只能开发玩具,不能做产品
能不能开发产品和arduino本身无关,只与你自身能力有关。多次封装后可靠性是否会降低?没有数据或案例表明arduino库的封装导致可靠性降低,更多时候,可靠性主要依靠编程能力、电路设计能力和编译器的性能。不过可以肯定的一点是,精心维护了数年的代码理论上会比自己花几天写的代码更可靠

国内外很多公司都在使用Arduino开发产品,也有不少成功的商业产品(我知道肯定有人要来和我较真什么叫“成功”了),所谓的不能开发产品,只能当玩具一说,完全是无稽之谈。如果你真是从事硬件开发的人员,你会发现现在各大IC厂商都推出了自己的类库或sdk,其本质和Arduino类库是一样的,这也是硬件行业的趋势。这和大家写软件用别人的sdk是一个性质。
我个人也一直不太明白有人说arduino不能开发产品的逻辑何在,就不能把它当作avr+sdk么?如果你的理由是成本,那看下一条。

误解四:Arduino开发板成本太高,不适合做产品
我介绍Arduino时,都会告诉别人Arduino是一个开发平台。
我所说的用Arduino做开发,指的是使用arduino核心库做开发。开发产品也并不是非得集成个Arduino开发板,一个核心的控制芯片足以。
至于芯片多少钱,开发者们自己去查吧。如果你对产品体积没要求,且产量很小,也完全可以直接使用Arduino控制器。
在小批量的情况下,使用arduino开发可以大大的降低你的开发成本,这个就没啥好说的了。如果你的项目产量超级大~你当然应该选用更便宜的芯片开发,1块钱的stc,5毛钱的HT都是可以的。

总结一下:
Arduino的优势在于社区的强大和众多类库资源,其资源和影响力已经让github都加上了Arduino语言分类。

有个冷笑话:如果在任一程序QQ群说“php是最好的web语言”,必定会激起一番论战。
如果讨论众多硬件开发平台熟好熟坏,就会陷入这种无意义的逻辑中,所以请注意,我没有说过Arduino是最好的开发平台,我只是希望大家知道选择一个适合的自己,适合项目的开发平台,才是最重要的。
以下是我列举的一些情况,个人经验,可能不正确,欢迎大家讨论。

哪些情况Arduino可能适合你:
你从来没接触过硬件开发;
你想快速的开发,降低开发陈本;
你的项目未来产量不大,或者就不会量产(这个需要你自己测算开发成本和生产成本的关系);

哪些情况Arduino可能不适合你:
如果你对处理能力,系统实时性有较高要求,那Arduino不适合你;
如果你的项目未来产量巨大,那Arduino也不适合你(这个需要你自己测算开发成本和生产成本的关系);
对其他一种单片机或者硬件开发平台开发极其熟悉;
你项目会使用的到的类库在其他平台也有,且其他平台硬件成本、开发成本也很低;

为什么使用Arduino做开发——以下摘自《Arduino程序设计基础》,引用转发都请注明出处
1.3        为什么使用Arduino做开发平台
用Arduino制作作品或者进行产品开发的优势是很明显的。
        跨平台
Arduino IDE可以在Windows、Macintosh OSX、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。
        简单清晰的开发
Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对 AVRGCC库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。
        开放性
Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。
        社区与第三方支持
Arduino有着众多的开发者和用户,你可以找到他们提供的众多开源的示例代码、硬件设计。例如,可以在Github.com、Arduino.cc、Openjumper.com等网站找到Arduino第三方硬件、外设、类库等支持,更快更简单的扩展你的Arduino项目。
        硬件开发的趋势
Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期。

因为Arduino的种种优势,越来越多的专业硬件开发者已经或开始使用Arduino来开发他们的项目、产品;越来越多的软件开发者使用Arduino进入硬件、物联网等开发领域;大学里,自动化、软件,甚至艺术专业,也纷纷开展了Arduino相关课程。

关于使用Arduino做开发的理解的更多相关文章

  1. 从高处理解android与服务器交互(看懂了做开发就会非常的容易)

    今天帮一个朋友改一个bug 他可以算是初学者吧 .我给他看了看代码,从代码和跟他聊天能明显的发现他对客户端与服务器交互 基本 不是很了解.所以我花了更多时间去给他讲客户端与服务器的关系.我觉得从这个高 ...

  2. ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  3. 如何使用Arduino UNO开发板编程ATtiny85

    最近在Youtube上看了一个GreatScott制作的有关如何使用Attiny85的精彩教程,之后我购买了一片Attiny85 IC.但是,我花了很长时间尝试在它上面运行一个简单的LED闪烁的代码. ...

  4. 20155315庄艺霖--对做中学的理解及对c语言和Java的看法

    关于做中学的理解及技能训练的思考 在写这篇博客之前,我首先阅读了娄老师的博客,对做中学的概念很感兴趣.我们常说知识要学以致用,做中学强调的是在用的过程中有新的收获和体会来进一步巩固学习.细数我学过的课 ...

  5. 【Arduino】开发入门【十】Arduino蓝牙模块与Android实现通信

    [Arduino]开发入门[十]蓝牙模块 首先show一下新入手的蓝牙模块 蓝牙参数特点 1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机 ...

  6. Arduino入门笔记(2):Arduino的开发和virtualbreadboard仿真环境

    欢迎加入讨论群 64770604 1.开发环境 (1)下载开发环境 Arduino的开发环境从http://arduino.cc/en/Main/Software官网下载即可,分为windows版本. ...

  7. google开发新人入职100天,聊聊自己的经验&教训 个人对编程和开发的理解 技术发展路线

    新人入职100天,聊聊自己的经验&教训 这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果 ...

  8. 详解Arduino Uno开发板的引脚分配图及定义(重要且基础)

    首先开发板实物图如下: 在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开发板的引脚分配图及定义.Arduino Uno微控制器采用的是Atme ...

  9. Arduino各开发板

    参考来源:https://www.arduino.cn/thread-42417-1-1.html 查了好久,发现除了奈何等等几位大神总结过arduino各板子之间的性能.差异,没有很新的分析文章,在 ...

随机推荐

  1. JQuery实践--Ajax

    Ajax概览无需刷新用户页面而发起服务器请求的技术.创建一个XHR实例:    var xhr    if(window.XMLHttpRequest) {         xhr = new XML ...

  2. 【题解】[NOIP模拟题]我要的幸福-C++

    题目Description我要的幸福(happiness)幸福/我要的幸福/渐渐清楚/梦想/理想/幻想/狂想/妄想/我只想坚持每一步/该走的方向/就算一路上/偶尔会沮丧/生活是自己/选择的衣裳/幸福/ ...

  3. XML、HTML、XHTML的关系

    标记语言 XML.HTML.XHTML这三者都有ML.ML(Markup Language)标记语言在维基百科中的解释是: 一种将文本以及文本相关的信息结合起来,展示出关于文档结构和数据处理细节的计算 ...

  4. 「NOI 2018」归程「Kruskal 重构树」

    题解 Kruskal重构树:每次一条边连接两个集合,建一个新点,点权为该边边权:把这两个集合的根连向新点. 性质:(如果求的是最大生成树)叶子结点是图中实际结点:叶子到根路径上点权递减:两点间lca的 ...

  5. springboot+druid+sqlite遇到的问题

    1.springboot中使用druid查询sqlite报错getFetchDirection error ResultSet closed https://blog.csdn.net/u011943 ...

  6. 利用 force index优化sql语句性能

    [转自:https://blog.csdn.net/bruce128/article/details/46777567]并进行总结 今天写了一个统计sql,在一个近亿条数据的表上执行,200s都查不出 ...

  7. vmware压缩vmdk文件大小

    在搭建靶机环境的过程中总是遇见vmdk越来越大,导致上传时间变长.记一下压缩vmdk的方法 ;sync;rm -f zero.fill /usr/bin/vmware-toolbox-cmd disk ...

  8. memcached出现:Fatal error: Call to undefined method Memcached::connect()

    今天安装了memcached的服务端和客户端 装好试了一下 $mem = new Memcached;  $mem -> connect("127.0.0.1",11211) ...

  9. Understanding the ASP.NET MVC Execution Process

    https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/overview/understanding-the-asp ...

  10. Maven-Profile 环境隔离

    作用 快速切换不同的配置环境,比如开发时是连接的本地数据库,发布线上时是另外的数据库,每次编译打包时都要修该配置文件比较麻烦,这时就可以使用环境隔离了. 配置 本地(Local), 开发(Dev), ...