标题: 素人学习Aduino编程的简单办法 [打印本页]
作者: eagler8 时间: 2019-5-6 17:46
标题: 素人学习Aduino编程的简单办法
本帖最后由 eagler8 于 2019-5-7 13:37 编辑
在开源硬件领域,偶只是素人一枚,完全的新手。为促进自己学习Arduino技术,一个笨办法就是记录各项实验的情况。这当中肯定会有许多不懂的地方或是自以为是,还请各位老师多多赐教为盼。
学习Arduino有不同的方法,使用扩展板相对会比较简便一些。利用我手头的一块“Aduino UNO 9in1 扩展板(Eagler8)”(见上图),它上面集成了九种不同的开源模块和五个扩展的外接端口,发现挺便利的就能进行18种的Arduino示例实验。
作者: eagler8 时间: 2019-5-6 19:30
Arduino官网Arduino1.8.9中文版下载页面 https://www.arduino.cc/en/Main/Software
作者: eagler8 时间: 2019-5-6 19:32
实验硬件准备
1、SG90 9G舵机一只,兼容红外遥控器一只
作者: eagler8 时间: 2019-5-6 19:35
2、Aduino UNO 9in1 实验扩展板(Eagler8)一块
作者: eagler8 时间: 2019-5-6 19:36
3、Arduino UNO原装板及UNO R3黄金板(国产兼容板)各一块
为了实验各种不同情况
作者: eagler8 时间: 2019-5-6 21:32
实验硬件都齐了
作者: eagler8 时间: 2019-5-6 21:34
电原理图
作者: eagler8 时间: 2019-5-6 21:35
Eagler8模块与板载端口:复位按键(REST)
10K旋转电位器模块(A0)
2路SW按键模块(D2、D3)
Light亮度传感器模块(A1)
LM35D温度传感器模块(A2)
Buzzer无源蜂鸣器模块(D5)
DHT11温湿度传感器模块(D4)
ER Receiver红外接收模块(D6)
1路Analog Port模拟量端口(A3)
RGB全彩LED模块(D9、D10、D11)
2路Digital Port数字量端口(D7、D8)
1个TTL串口(可接入蓝牙或WIFI模块等)
2路3mm LED模块(红色D12、蓝色D13)
1个双向同步串行总线I2C接口(A4 SDA及A5 SCL,可接显示屏等)
作者: eagler8 时间: 2019-5-7 13:38
有了这块超棒的9in1扩展板,为了提高学习Arduino的效率,今天开始尝试Arduino 1.8.9与Mind+ V1.53相结合的方式,就是把原来的代码编程(会让新人害怕的东西)和直观的图形编程,二者配合起来学习及做实验,都不偏颇。
作者: eagler8 时间: 2019-5-7 13:39
在网上搜索了各种图形编程软件,比如Ardublock、S4A、Mixly米思齐、乐幻WeMake、小喵KittenBlock和慧编程mBlock5等,经过简单比较,最后还是选择了DF创客社区的Mind+,主要是与Arduino UNO兼容的比较好,可以自动生成代码,最新版本是V1.5.3。
作者: eagler8 时间: 2019-5-7 13:40
Mind+ 程序下载地址:
作者: eagler8 时间: 2019-5-7 13:41
开始实验之前,先下载扩展板配套的示例程序,将解压缩的 Eagler8 文件夹拷贝到 Arduino IED 安装目录下的 libraries 文件夹内。启动 Arduino IDE,打开文件‐-示例‐-Eagler8,即可调用18个示例实验程序。Eagler8扩展板示例18种编程程序下载地址:
作者: eagler8 时间: 2019-5-7 13:42
作者: eagler8 时间: 2019-5-7 13:42
LED 的实验有四项
01 Blink:D13蓝色 LED 闪烁 ,载入示例程序
作者: eagler8 时间: 2019-5-7 13:43
代码
/*
Eagler8实验程序列表
01 Blink:D13蓝色 LED 闪烁
*/
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
作者: eagler8 时间: 2019-5-7 13:44
Mind+ 图形编程如下
作者: eagler8 时间: 2019-5-7 13:45
分别上传,都通过了,见视频
http://player.youku.com/player.php/sid/XNDE3MDQwMTA5Ng==/v.swf
作者: eagler8 时间: 2019-5-7 18:01
听了台湾佑来老师的视频课,才明白要点亮一只LED灯,对于学习Arduino编程,迈出这一步真的挺不容易。和用普通电子电路开关灯不同,开源硬件需要解决软件、硬件和驱动等不少问题,才能用程序点亮LED。实验的第二个程序,是控制二只LED灯交替闪烁,D12端口接红色LED,D13端口接到蓝色LED,间隔延时1000毫秒(1秒)。
启动 Arduino IDE,打开文件‐-示例‐-Eagler8,即可调用18个示例实验程序中的第2个---Blink2。
作者: eagler8 时间: 2019-5-7 18:01
点工具,选择主板和端口后,上传成功见下图
作者: eagler8 时间: 2019-5-7 18:02
代码如下:
/*
Eagler8实验程序列表
02 Blink2:D12、D13红蓝色 LED 交替闪烁
*/
int led1 = 12;
int led2 = 13;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
}
作者: eagler8 时间: 2019-5-7 18:03
打开图形编程Mind+,先连接设备,我这里是COM3(可在电脑设备端口中查询)。
作者: eagler8 时间: 2019-5-7 18:03
而后在扩展模块中,打开主控板项,选择Arduino UNO。
作者: eagler8 时间: 2019-5-7 18:04
使用Arduino UNO的初始页面是这样的(选择了上传模式)。
作者: eagler8 时间: 2019-5-7 18:05
第一步,设置D12脚输出高电平,D13脚输出低电平,意思是红灯(12)亮,蓝灯(13)灭;
作者: eagler8 时间: 2019-5-7 18:05
第二步,延时1秒;
第三步,反过来设置D12脚输出低电平,D13脚输出高电平;
第四步,再延时1秒,并循环执行,实现红蓝灯间隔1秒交替闪烁。图形编程的右边是自动生成的代码。
作者: eagler8 时间: 2019-5-7 18:06
点右上方上传按钮,上传成功。
作者: eagler8 时间: 2019-5-7 18:07
本实验02 Blink2:
D12、D13红蓝色 LED 交替闪烁的效果视频
作者: eagler8 时间: 2019-5-9 14:47
第三个LED 实验是模拟爆闪警灯,启动 Arduino IDE,打开文件‐-示例‐-Eagler8,调用18个示例实验程序中的第3项---Blink3,源程序如下:/*
Eagler8实验程序列表
03 Blink3:模拟爆闪警灯
*/
int led1 = 12;
int led2 = 13;
int i,j;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
for(i=0;i<10;i++){
digitalWrite(led1, HIGH);
delay(30);
digitalWrite(led1, LOW);
delay(40);
}
for(i=0;i<10;i++){
digitalWrite(led2, HIGH);
delay(30);
digitalWrite(led2, LOW);
delay(40);
}
}
作者: eagler8 时间: 2019-5-9 14:49
有如上的示例程序,上传成功就看到了二个LED分别爆闪
难在理解这程序,走了一点小弯路,就是一下子搞不懂“for”的结构控制,查了一下《Arduino-语法手册》
只是懂了大致意思.....
作者: eagler8 时间: 2019-5-9 14:50
借助自动生成功能,最终还是在Mind+上通过了,见下图
作者: laoguang 时间: 2019-5-9 16:16
淘宝上没找到
作者: eagler8 时间: 2019-5-9 18:21
第三个LED 实验是模拟爆闪警灯,启动 Arduino IDE,打开文件‐-示例‐-Eagler8,调用18个示例实验程序中的第3项---Blink3,源程序如下:
/*
Eagler8实验程序列表
03 Blink3:模拟爆闪警灯
*/
int led1 = 12;
int led2 = 13;
int i,j;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
for(i=0;i<10;i++){
digitalWrite(led1, HIGH);
delay(30);
digitalWrite(led1, LOW);
delay(40);
}
for(i=0;i<10;i++){
digitalWrite(led2, HIGH);
delay(30);
digitalWrite(led2, LOW);
delay(40);
}
}
作者: eagler8 时间: 2019-5-9 21:51
搜9合一多功能扩展板就行
作者: eagler8 时间: 2019-5-9 21:55
04 Breath_LED:
D9 全彩 LED 模拟红色呼吸灯源程序:
/*
Eagler8实验程序列表
04 Breath_LED:D9 全彩 LED 模拟红色呼吸灯
*/
#define LED 9
int i = 0;
void setup()
{
pinMode(LED,OUTPUT);
}
void loop()
{
for(i=0;i<255;i++)
{
analogWrite(LED,i);
delay(15);
}
for(i=255;i>0;i--)
{
analogWrite(LED,i);
delay(15);
}
analogWrite(LED,0);
delay(1000);
}
作者: eagler8 时间: 2019-5-9 21:56
在手册上查到 analogWrite( )
作者: eagler8 时间: 2019-5-9 21:57
使用 for 循环使LED 产生渐亮渐灭的效果,i++和i--大概是递增与递减的意思,先用随机数来试试......
作者: eagler8 时间: 2019-5-9 21:58
找到了变量的模块,第一步,实现了递增逐渐亮......
作者: eagler8 时间: 2019-5-9 21:58
最后实验效果基本一致,只是生成的代码有点不一样
|
作者: eagler8 时间: 2019-5-9 21:59
为了实验效果,做了些小改动
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |