创客联盟网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

开思网在线3D打印服务
查看: 20627|回复: 0
打印 上一主题 下一主题

Arduino小白自学教程005——教arduino武功+视频!

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-22 23:36:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
跟人学武功一样,编写程序也要遵循一定套路才可以。即使你从来没有接触过编程,只要你跟着我一步一步来那就没问题了!我的教程就是为小白而生
事实上AI的脚是不会提起来放下去的…它只能控制输出+5V电压(理论值)或者输出0V电压(理论值)。我们来举一个简单的例子,例如我们平时点亮一个小灯泡是这样做的
接好灯泡的正负,灯泡肯定就亮起来了。我们说电池的正极输出+1.5V,负极输出0V。
现在换了是AI,要怎样点亮呢?

这时候我们应该把正极插到AI的数字脚上,因为数字脚可以输出+5V(我们一般称为高电平)或者输出0V(我们一般称为低电平)。例如我们现在灯的正极连接到AI的7脚,led灯的负极连接到AI的“-”即GND(负极)上。然后只要我们程序编写控制7脚输出+5V灯就会亮起来。7脚输出0V灯就会灭掉。

先给AI接上灯
我们不是直接接上去,而是通过面包线和面包板连接的。面包线和面包板的发明当初就是为了快速搭载好实验电路而不用焊接而发明的。
面包线简单的来说就是一条电线,只不过两头各有硬硬的插针。
面包板就是用来被面包线插和被零件插的…它的结构其实是这样的,如图
如图所示是最普通的面包板,右边的结构跟左边的是一样的,现在我把右边的上色了。
如最上面的那一条红色的,表示了这条红色线所覆盖的这一孔(25个)都是相通的!
又如最左边的那一条蓝色的,表示了这条蓝色线所覆盖的这一孔(5个)都是相通的!
总之如图所示,同一条线覆盖的孔是相通的!
我们配套的小面包板是没有上面的两行和下面的两行,大家要注意下,但是原理是一样的。
假如一个led灯跟电阻串联接在电池上,实物图应该这样接:
那么我们在面包板上连接应该是这样。
或者


明白了吗?

我们现在把连接的红线接在AI的数字脚7上,黑线接在AI的GND(负极)上。一定要接电阻!电阻至少为220欧,如果电阻阻值太大,灯的亮度就会很暗。好了硬件搭载完成,现在就编写程序就可以了。

我们的目标是点亮一个灯。

在程序窗口写上以下代码(你复制也是可以的)
C++ Code
1
2
3
4
5
6
7
8
9
10
11
12


void setup()
{
    pinMode(7,OUTPUT);
}
void loop()
{
    digitalWrite(7,HIGH);
    delay(1000);
    digitalWrite(7,LOW);
    delay(1000);
}


板子上的本身带有的RX和TX的灯会在下载的过程中会闪起来的。当下载完成后我们看到面包板上的led亮起来的。
如果我想让这个灯灭呢,现在程序又怎么编写的,可以这样子:把digitalWrite(7,HIGH);改成digitalWrite(7,LOW);按编译,下载。
然后我们看到面包板上的led灭了。是不是好简单呢?
我们再改一下,把程序里面的7都改成8,把digitalWrite里面的LOW改回HIGH,程序如下: 按编译,下载。然后我们看到面包板上的led还是灭的。为什么呢,因为我们现在led灯实际插的脚是7!!但是我们程序控制的是8!!led肯定不亮啦!我们只要把红线从7拔出来接到8那里,这时我们看到led亮起来了。

上面的程序是最基本的程序,我们一定把语法给记住,就像我们说话一样遵循一定语法,否则别人会听不懂。
这样我们就完成了第一个自己编写的程序了!
现在给大家说下记忆技巧,大家要注意下,编程必须是在英文输入状态下输入,中文的符号是会导致程序编译不过的
void是“声明”的意思,这个格式是c语言的程序开头一般都要写的
setup是“设置”的意思,就是程序初始化前的一些设置,setup里面的语句只执行一次。
loop是“圈、循环”的意思,从意思上知道,程序就不断在这里循环执行!
pinMode(注意M是大写)中的pin是引脚的意思,Mode是模式的意思,合起来就是引脚模式
它的编写格式是这样的
pinMode(x,OUTPUT/INPUT),x是填你要初始化的数字脚,逗号后面只能填OUTPUT(输出模式);INPUT(输入模式),控制led用OUTPUT,按键则用INPUT。
digitalWrite(注意W是大写)中的digital是数字的意思,Write是写的意思。合起来了就是数字脚写(高电平或者低电平)
它的编写格式是这样的
digitalWrite(x,HIGH/LOW),x是填你要控制的数字脚,逗号后面只能填HIGH(输出高电平【5V】)或者是填LOW(输出低电平【0V】)
还有一个重要的技巧是,Arduino是采用骆驼峰拼法,即当两个单词合起来(如pinModedigitalWrite),第二个单词开头要大写!(如pinMode的M、digitalWrite的W)。大家可能会问这有什么意义,意义大着呢!例如我们保存程序必须是英文名(保存中文名会乱码),我们用骆驼峰拼法就能比较容易找出我们的程序。不信,我来考下你。
没用骆驼峰拼法:nimamajiaonihuijiachifan
用骆驼峰拼法:niMaMaJiaoNiHuiJiaChiFan
怎样是不是骆驼拼法容易看出来点,这样我们就能较快知道这一大串字母实际要表达什么意思。





保存我们的程序
File》Save as》打上你的文件名,例如我取名led(一定是英文名,中文会乱码),保存ok。我们默认保存在我的文档的arduino文件夹里面,下次打开直接打开。

打开我们的程序
现在就练习下如何打开我们刚刚保存的程序
File》sketchbook(速写本)》led
这时候我们可以看到刚才存储的led就被打开了。但是如果我们程序不是存储在“我的文档的arduino文件夹”里面,就不能在sketchbook找到。所以还是建议大家存储在“我的文档"arduino里面,方便打开。

   
闪灯程序

现在我要让7脚接上Led灯,然后让它每隔一秒闪烁。尝试自己写下程序,忘了格式就偷偷看下之前写的那个。
先写大框架
[mw_shl_code=cpp,true]void setup()
{
}
void loop()
{
   
}[/mw_shl_code]
我用要控制7脚,初始化设置,肯定要设置7脚为输出
pinMode(7,OUTPUT);  不要忘记;分号,分号是表示一个语句的结束
在循环里面则控制7脚输出高电平、低电平
digitalWrite(7,HIGH);
digitalWrite(7,LOW);
但是要实现每隔一秒闪,我们要学会一个延时函数
格式:delay(x),x是以毫秒为单位的(如1秒=1000毫秒/1s=1000ms)
即我们想延时一秒,就这样写delay(1000);
[mw_shl_code=cpp,true]void setup()
{
    pinMode(7,OUTPUT);
}
void loop()
{
    digitalWrite(7,HIGH);
    delay(1000);
    digitalWrite(7,LOW);
    delay(1000);
}[/mw_shl_code]
程序的意思就是,把7脚初始化设置为输出模式,然后程序不断死循环执行,7脚输出高电平,延时一秒(我们可以理解7脚保持输出高电平保持一秒),LED就会亮一秒;7脚再输出低电平,延时一秒(我们可以理解7脚保持输出低电平一秒),LED就会灭一秒。程序就是不断的执行这个“亮”“灭”“亮”“灭”的过程!
实验到此就结束,你自己可以试下改改delay里面的数字,看下延时是不是发生变化。只要多练就很容易学会arduino,让我们继续加油吧!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|创客联盟网  

GMT+8, 2024-4-28 20:39 , Processed in 0.023180 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表