如何将Arduino Uno当电脑用
如何将Arduino Uno当电脑用
0x00 准备工作
材料准备
1.电脑 x1
2.Arduino Uno 主控板 x1
3.Arduino Usb 连接线 x1
4.公对母、母对母、公对公杜邦线若干 *可选*
5.硬件若干(如蜂鸣器、显示器、按钮等) *可选*
注:电脑只作为操作系统编写使用,在没有其它硬件的情况下作为数据捕捉使用
环境搭建
首先,我们需要安装 Arduino IDE。
打开这个 网址 ,选择最新版右边适合自己电脑版本的下载,随后通过刚才下载的安装包安装 Arduino IDE。
然后打开安装好的 IDE ,右下角会有一个安装 USB 驱动的提示,点击安装就行了。
等待安装好后,用 USB 连接线将电脑和 Arduino 主板连接起来,然后点击上方选择框,选择 USB 接口(一般情况下只有 COM3 一个选项)。选择以后就会弹出一个窗口选择硬件版本,往下滑选择 Arduino Uno
就行。
0x01 制作原理
众所周知,Arduino 可以控制各种控件的运行,这说明它是有计算能力的。也就是说,它可以当做电脑使用。不过,在 Arduino IDE 里面可以看到,Arduino Uno 主板的存储控件只有 32768 Byte
,而内存只有 2048 Byte
,这显然不可能装得下一个完整的操作系统。注:市面上最小的操作系统是 OSASK ,有大约 86 KB
,而它的作者还做过一个 HaryboteOS 的操作系统,除去驱动程序也有大约 35 KB
,所以,我们只能自己写一个操作系统了。
本文仅介绍最基本的电脑制作,只需要一个 Arduino Uno 主板即可,使用另一个电脑对它发送指令和捕捉数据。(在链接键盘和显示器以后,Arduino 可以单独作为电脑使用。如果有需要的读者可以自行查阅资料,链接其它硬件,并编写程序(无需写驱动程序,Arduino 自带了所有硬件的驱动程序)。
0x02 代码实现
以下是 Arduino 的基础代码:
1 |
|
对于不用任何控件的主板,我们必须使用一个电脑对其发送命令和捕捉数据。而 Arduino IDE 自带了一个 Serial,正好满足我们的需求。
所以,我们先开启 Serial 端口,波特率为 9600
。在 Setup()
函数内加入代码:
1 |
|
由于我们的命令需要截取前一部分的字符,确定命令名称,所以我们需要一个 substr
函数(求字符串的字串)。而 ArduinoC 里面并没有像 C++ 里面 string
自带的 substr
,所以我们需要自行编写。
在程序的最前面加入以下代码:
1 |
|
因为 loop()
函数会一直循环执行,所以我们只需要在里面写单次的判断函数就行了。
首先在 loop()
函数里加入以下代码判断是否有数据输入了:
1 |
|
如果有,我们就要读取输入的数值,在刚才的 if
语句里面加入:
1 |
|
那么如果 ch
是换行符的话,就表示一个命令结束了,否则就不是。所以我们还要判断一次,而命令没有结束的情况下,我们需要累计字符串;命令结束后就要运行命令,然后清空字符串。
所以在程序开头加入 char op[105];
,把字符串只开 105 的大小的话,内存就会好很多,这是以输入命令的最大长度换内存。
然后我们在刚才的 if(Serial.available()>0)
里面加入以下语句:
1 |
|
我们先写命令没有结束的情况,在 else
里面加入以下代码:
1 |
|
而命令结束后,我们就需要对命令进行解析了。
首先我们在里面定义两个局部变量:
1 |
|
现在,我们就可以为操作系统编写命令了。(以下展示两个命令):
1.prt 命令
这个命令的作用类似于 windows 终端的 echo
,作用是输出字符串(例如 prt abc
的作用就是输出 abc
。
这个是第一个命令,我们就不需要判断是否有已经配对的命令了。
1 |
|
2.shutdown 命令
这个命令肯定不陌生,就是关机命令。
对于关机,我们只需要终止 loop()
函数就可以了。
注意!这个是第二个命令,需要判断是否已经有配对的命令
1 |
|
在这个 if
语句的最后,我们还需要加上 sprintf(op,"");
来情况字符串。
最后,点击左上角的箭头(upload)上传代码,再按 Ctrl
+ Shift
+ M
打开控制台(注,使用搜狗输入法的话快捷键会冲突,此时可以点 Tools
-> Serial Monitor
打开。
设置波特率为 9600 后,就可以在控制台里输入命令啦。
0x03 完整代码
1 |
|
各位读者还可以加入其它命令(前提是代码不要超过 30000 Byte
)。
对于其它硬件的控制,有兴趣的读者可以自行查阅资料和探索。
完结散花~