Arduino学习(一)

Arduino IDE自然是从官网下载的。
pinMode(pin, mode):设置引脚。第一个参数表示设置的引脚,第二个参数表示将要把引脚设置成的模式。
digitalWrite(pin, value):输出信号。第一个参数为引脚,第二个参数为输出模式。HIGH即为高电平,LOW即为低电平。

setup():该函数中的代码只会运行一次。
loop():该函数中的代码会不断重复运行。

数字I/O的使用:
1.数字信号:
数字信号是以0、1表示的不连续信号。高电平为数字信号1,低电平为数字信号0。Arduino上每一个带有数字编号的引脚都是数字引脚,包括写有“A”编号的模拟输入引脚。使用这些引脚可以完成输入/输出数字
的功能。
使用引脚前,先用pinMode()将引脚设置为某种模式:
INPUT 输入模式;OUTPUT 输出模式;INPUT_PULLUP 输入上拉模式
配置模式之后,用digitalWrite函数使该引脚输出高电平或低电平。
除了输出,数字引脚还可以用digitalRead()读取外部输入的数字信号,其形式为:digitalRead(pin);
其中参数为引脚编号。
当Arduino以5V供电时,会将范围为-0.5~1.5V的输入电压作为低电平识别,范围在3~5.5的输入电压作为高电平识别。所以即使输入电压不太准,Arduino也可以正常识别。
输出的低电平是0,高电平是当前Arduino板的工作电压。
Arduino核心库中,OUTPUT被定义为1,INPUT被定义为0,HIGH是1,LOW是0,可以使用数字代替这些定义。

delay(time):毫秒延时函数。time即为毫秒数。

2.
流水灯程序。

void setup() {
// put your setup code here, to run once:
for (int i=2; i<8; i++) pinMode(i,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
for (int i=2; i<8; i++)
{
digitalWrite(i,1);
delay(1000);
digitalWrite(i,0);
}
for (int i=7; i>1; i--)
{
digitalWrite(i,1);
delay(1000);
digitalWrite(i,0);
}
}

3.
按键控制LED程序。
连接大电阻是为了确保2号引脚一直是低电平。这个电阻被称为下拉电阻。

/*
Button

Turns on and off a light emitting diode(LED) connected to digital pin 13,
when pressing a pushbutton attached to pin 2.

The circuit:
- LED attached from pin 13 to ground
- pushbutton attached to pin 2 from +5V
- 10K resistor attached to pin 2 from ground

- Note: on most Arduinos there is already an LED on the board
attached to pin 13.

created 2005
by DojoDave <http://www.0j0.org>
modified 30 Aug 2011
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/Button
*/

// constants won‘t change. They‘re used here to set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

倘若去掉下拉电阻,将按键一端接2号引脚, 一端接GND,将
pinMode(buttonPin,INPUT); 改为 pinMode(buttonPin,INPUT_PULLUP); 就可以使用引脚内部的上拉电阻。这个电阻也很大,一般为20~50kΩ。它也可以稳定电平,并可以稳定在高电平。

如下程序可实现按一下按键灯开,再按一下灯灭。

int buttonPin=2;
int ledPin=13;
boolean ledstate=false;//初始时候灯是灭的

void setup() {
// put your setup code here, to run once:
pinMode(ledPin,OUTPUT);
pinMode(buttonPin,INPUT_PULLUP);

}

void loop() {
// put your main code here, to run repeatedly:
while (digitalRead(buttonPin)==HIGH)
{
if (ledstate==true)
{
digitalWrite(ledPin,LOW);
ledstate=!ledstate;
}
else
{
digitalWrite(ledPin,HIGH);
ledstate=!ledstate;
}
}
delay(500);
}

人体感应灯
使用继电器模块与数字传感器。
1.继电器模块。使用电磁继电器,加压会使继电器中产生电流,继而产生磁力,将开关吸向另一侧。
2.人体热释电红外传感器。无人在其检测范围内运动时,模块保持输出低电平,有人再其检测范围内运动时,模块输出一个高电平脉冲信号。
具体代码思路简单,只是用到了新函数:
Serial.begin(int num); 打开串口,参数是传输速率,有几个值可供选择,通常使用9600。
Serial.println(format string); 输出信息,表现形式和printf差不多。

原文地址:https://www.cnblogs.com/Shymuel/p/9437765.html

时间: 2024-07-30 13:33:05

Arduino学习(一)的相关文章

Kienct与Arduino学习笔记(2) 深度图像和真实世界坐标系中的深度图

转载请注明出处:http://blog.csdn.net/lxk7280 首先,要接触一下KinectOrbit这个摄像机库,这篇文章中有这个库的下载网址和简单的介绍:http://blog.csdn.net/lxk7280/article/details/38184355.将下载得到的文件放到相应的Processing的一个子文件夹后,即可使用.    KinectOrbit库下的鼠标和键盘的操作方法: 1.右键拖拽:摄像机摇拍. 2.左键拖拽:绕对象旋转. 3.滚动:缩放操作. 4.P键保存

ROS与Arduino学习(三)订阅与发布

ROS与Arduino学习(二)订阅与发布 Tutorial Level:HelloWorld Next Tutorial: 本节介绍如何在arduino中发布与订阅消息.他和ROS通过串口进行节点通信. Tips 1 订阅 ros::Subscriber<std_msgs::Empty> sub("WWWW",&hhhhh); 其中WWWW是话题的名称,hhhhh是收到消息后调用的函数函数名称.sub是实例化订阅对象的名字,也可以是别的名字. nh.subscri

ROS与Arduino学习(七)小案例节点通信

ROS与Arduino学习(七)小案例节点通信 Tutorial Level:Logging日志 Next Tutorial: 原文地址:https://www.cnblogs.com/flyingjun/p/8952857.html

基于Proteus仿真的Arduino学习(2)——LED点阵探究A(LED点阵基础)

一.前言: 随着LED的普及,以LED点阵为基础的显示设置层出不穷.例如,公交车的线路提示牌.高速公路的信息提示牌,安装在大楼上的广告屏幕等.下面,我们将由简单到复杂地探索各种LED点阵的使用方法,同样是基于Proteus的arduino仿真,以arduino uno R3为例,包含以下三个实验:LED点阵显示表情.LED点阵跑马灯.回纹灯.具体介绍如下: 二.仿真电路设计: 本次的三个实验用到的电路连接都是相同的,构建一个电路仿真图即可,仿真图如下: 电路图比较简单,只需将arduino最小系

Arduino学习笔记A6(补充) - 在串口读取多个字符串,并且转换为数字数组

功能如题目. 在串口收到逗号分割的6串数字比如 100,200,45,4,87,99 然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值 代码注释很详细了,就不再说明了. ARDUINO 代码复制打印 //定义一个comdata字符串变量,赋初值为空值 String comdata = ""; //numdata是分拆之后的数字数组 int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0;

基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用

一.前言:  A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluca Martino.David Mellis和Nicholas Zambetti.据说Auduino开发团队的领袖Massimo Banzi 之前是意大利Ivrea 一家高科技设计学校的老师.他的学生们经常抱怨找不到便宜好用的微控制器.2005年冬天,Massimo Banzi 跟David Cua

四位数码管SH5461AS的问题,arduino学习实测.

arduino入门教程到第16课遇到些问题.效果一直是混乱的状态. 琢磨了半天发现一些问题,和大家分享下 1)接线图,原图没有问题,只是比较含糊,线比较多不好看. 我用红色数字标示数码管的12个脚,并且用蓝色数字标示出对应arduino的脚 2)程序问题(这个问题比较离谱) 刚开始按照示例怎么都没办法出效果,突发奇想,将所有的高低电平兑换.然后一切都和谐了,后来查了共阴共阳的原理图发现原来的代码可能是共阳的. 下面是我的代码: int y[8] = {1,2,3,4,5,6,7,8}; int

Kienct与Arduino学习笔记(1) 基础知识之Arduino’Kinect‘Processing

转载请注明出处:http://blog.csdn.net/lxk7280         首先,对即将要用到的主要东西进行初步的理解. 分为两大类,硬件和软件.硬件,即Kinect.软件,即Arduino和Processing.Arduibo相信很多人都用过,机器人.四轴飞行器等电子产品不少与Arduino这个浪漫的编译器有联系,为什么说浪漫呢,这不得不从它的开发者说起,Arduino的开发者可以说是艺术家出身,所以Arduino总给人一种浪漫高贵的感觉,不得不吐槽一下Keil,界面确实不怎么好

Kienct与Arduino学习笔记(2) 深度图像与现实世界的深度图的坐标

转载请注明出处:http://blog.csdn.net/lxk7280 首先,要接触一下KinectOrbit这个摄像机库,这篇文章中有这个库的下载网址和简单的介绍:http://blog.csdn.net/lxk7280/article/details/38184355.将下载得到的文件放到对应的Processing的一个子目录后,就可以使用.    KinectOrbit库下的鼠标和键盘的操作方法: 1.右键拖拽:摄像机摇拍. 2.左键拖拽:绕对象旋转. 3.滚动:缩放操作. 4.P键保存