关于"为什么说Arduino是玩具?"的回答
最开始从51入门、之后MSP、ARM、FriendARM等等和使用keil(MDK)、iar等工具、之后Arduino、Raspberry Pi的人想说:
”说’Arduino是玩具,和Arduino极其简单‘的人,基本是没有搞过Arduino的人,或者是接触Arduino浅尝辄止的人。“
- Arduino不是电路板!!!
- Arduino只是个开发方法和开发平台!!!
- Arduino硬件和软件都是开源的!!!
1. Arduino平台可以支持很多MCU
Arduino可以支持从简单到复杂的很多种板子,从原理上说,是不受MCU限制的。当前已经可以支持包括ARM的STM32,ESP8266,ESP32等板子32位MCU。就是Arduino支持的最低功能的UNO板(atmega328p MCU),也比51板功能强大很多。
2.”搭积木“的结构
Arduino的开发方法是,硬件和软件的开发,都有明显的"搭积木"的方式,不重复"造轮子"。如果有已有"积木",硬件买来用,软件免费下载用; 如果"积木"不够,自己设计硬件或软件,构造新的"积木",再用这些"积木"搭建你的应用系统。
Arduino平台规定了一层硬件抽象层HAL,可以使你更加关注应用逻辑。因为是开源,底层细节源码也可以看到,很优秀的。
3.多快好高
Arduino开发方式例子丰富,思路开阔,入门学习容易,原型开发快,成功感强。也可以搞得很深,这与应用领域相关,如3D打印机、四轴飞行器、机器人、物联网应用、与树莓派连接等。
4.成功感
从Arduino开始学习,完全可以绕过开始学习的"挫折感期",较轻易进去高层开发阶段,同时也不失底层的开发能力。而开始就学习其它如51、arm和使用iar、mdk等开发工具,可能会阻塞在某个细节上,学习进度慢,挫折感强。
—以下后添加—
(1) 支持混合语言编程
Arduino平台采用著名的开源gcc编译器,自动支持汇编语言、C语言、C++语言混合编程。
(2) 直接支持面向对象思想!!!
Arduino平台可以使你直接就学习到面向对象的编程思路,库中的模块以类或对象形式给你,你理解它就是个"积木",让你以"搭积木"的方式去拼装应用,而这就是面向对象的方法。而从51等开始学习,即使语言上支持面向对象,但是还在用面向过程的思路编程。
(3)gcc支持
Arduino平台支持的最低配官方板子是Arduino UNO,第三方插件有支持更低配的ATTiny85八个引脚的MCU,也有支持ARM和ESP等32位机的MCU的插件。UNO板子采用ATMega328P的MCU,它是采用AVR8的内核的8位RISC的CPU,即使是8位CPU,gcc编译器也支持它。而gcc是不支持51的。
gcc支持Arduino!逐渐显现出linux的影子!
(4)麻雀虽小,也有引导
看看Arduino的引导程序bootloader,更显现出linux的影子!其中是汇编与C混合编程的。
(5)看看Arduino的Firmata,更神奇!!!
分布式控制,类似B/S程序结构。可以做到只在上位机编程,多个下位机采用Arduino板,所有下位机"仅仅"安装"一个"相同的Firmata客户端程序(像浏览器!),所有下位机的具体控制应用逻辑都在上位机中编程实现。上位机可以用树莓派。
(6)Arduino不支持操作系统?
支持!!!
当前的Arduino板不能支持linux os,那是因为硬件资源不够,原理上是支持的。
麻雀就应该有麻雀的心脏,而不是大象的。
Duinos是Arduino的操作系统之一,而本人更喜欢把nanoQP放到Arduino上作为操作系统。
(7)为什么还有那么多人还用51?
-MCS51系列是1980年INTEL设计出的微控制器(MCU),采用复杂指令集(CISC)的51内核。
-MCS51系列是最早进入国内的MCU,熟悉的人多。
-MCS51的IP核(知识产权核)便宜,公司可以很便宜购买51的IP核,构造公司自己的MCU或特殊芯片。如韩国的网络控制器芯片W5100,W5200,W5500等就是采用51核。
-MCS51功耗大,导致抗干扰强。在要求可靠性高而计算能力不高的情况下,抗干扰设计不用考虑太多,与低功耗MCU对比,抗干扰部分更好设计。这是一些应用者考虑比较多的因素之一。
-MCS51计算能力大约是AVR8(Arduino UNO板子用)的十分之一。
说实在的,以上内容对我已经翻篇了,我在用micropython,python,和AI相关东西。
关于"为什么说Arduino是玩具?"的回答的更多相关文章
- 学Arduino 需要做哪些准备?(引自"知乎用户:郑兴芳,DhP"的回答)
本人非电子专业,使用Arduino完全出于兴趣,目前主要用于实验过程中的自动化操作. 一.基础准备主要是看一些入门介绍的电子文档,如Arduino_Basic.PDF.ArduinoL2.PDF .& ...
- Arduino小车学习与研究
信安系统设计基础实践模块 Arduino小车学习与研究 ================== 陈都(20135328) 余佳源(20135321) 莫凡(20135225) ---------- 索引 ...
- Arduino小车学习与研究博客
Arduino小车学习与研究博客 信安系统设计基础实践模块 Arduino小车学习与研究 ================== 陈都(20135328) 余佳源(20135321) 莫凡(201352 ...
- Arduino语言学习记录(持续更新)
几天前某宝买了一套,这几天没工夫.今天开始学学这个“玩具”. 1.Arduino的变量数据类型: 数据类型 数据类型 RAM 范围 void keyword N/A N/A boolean 1 by ...
- 【原创】Arduino入门基础知识总结
一.概述 Arduino是源自意大利的一个开放源代码的硬件项目平台,该平台包括一块具备简单I/O功能的电路板以及一套程序开发环境软件. Arduino可以用来开发交互产品,比如它可以读取大量的开 ...
- Arduino通过L9110进行电机控制
L9110S是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高. 该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干 ...
- python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk)
先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.6.zip 注意:由于涉及到 ...
- Arduino入门笔记(1):认识Arduino
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 各种网站论坛里经常看到网友DIY各种遥控小车.机器人什么的,一直很好奇,很想学习一 ...
- ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun
ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun OpenWrt-Yun OpenWrt-Yun是基于OpenWrt的一个Linux发行版.有所耳闻的读者应该听说他是 ...
随机推荐
- FastDFS部署安装全过程
你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/153205 ...
- java String类 trim() 方法源码分析
public String trim() { int arg0 = this.value.length; //得到此字符串的长度 int arg1 = 0; //声 ...
- 【Java】得到当前系统时间,精确到毫秒
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Calendar; public class Ma ...
- 设置 ExpressRoute 和站点到站点并存连接
配置站点到站点 VPN 和 ExpressRoute 共存连接具有多项优势. 可以将站点到站点 VPN 配置为 ExressRoute 的安全故障转移路径,或者使用站点到站点 VPN 连接到不是通过 ...
- Centos7下Mysql通过.frm和.ibd恢复数据
通过.frm和.ibd文件恢复表结构和数据 这里以hue数据库中的desktop_document2表为例 分成两步骤,先去表结构,再取数据,最好在一个用完就可以删除的数据库中进行 取表结构篇: 1. ...
- 虚拟机上的Linux Java开发环境部署记录(VirtualBox+Ubuntu)第一章-基础环境搭建
创建虚拟机时需注意三点: 在BIOS中开启Intel VT,以支持64位虚拟机系统: 对于Ubuntu 16以上版本,至少分配10G以上初始控件. 增加一块网卡,选择Host-Only网络,用于主机和 ...
- 一、Linux中的常用命令2 二、Vim编辑器的使用
一.Linux的常用命令###<1>文件目录操作 13. echo:用于输出字符串,shell编程,echo 1. 输出字符串 : echo str ,shell编程会使用(类似java中 ...
- 内置数据结构(str)
一.字符串(str) 1.字符串在python2版本中为一个byte序列,在python3版本中为一个unicode序列,并且字符串是不可变的. sr = str() sr = 'string' sr ...
- 关于strip(切割)和 split(分开) 的区别
plit(), 以括号里的东西为标准,把字符串分开成一个列表 strip(), "删除",括号里出现的东西,从两头开始往中间删除,直到遇到阻碍.中间就算有,也不会受影响 s10 = ...
- lambda表达式和groovy闭包的区别
groovy定义的闭包是 Closure 的实例,lambda表达式只是在特定的接⼝或者抽象类的匿名实现,他们之间最主要区别闭包可以灵活的配置代理策略⽽labmda表达式不允许