arduino的初步学习

arduino的初步学习

arduino简介:
由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序 的开发环境组成。它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机,arduino与其他设备进行通讯。
运用的编程软件为:arduino ide

Arduino对库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管。大大降低了软件开发难度,适宜非专业爱好者使用。优点和缺点并存,因为是二次编译封装,代码不如直接使用AVR代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。

函数介绍:
void setup() 初始化变量,调用库函数等

void loop() 连续执行函数内的语句 (循环)

pinMode(pin, mode) 数字IO口输入输出模式定义函数,pin表示为0~13, mode表示为INPUT或OUTPUT。

digitalWrite(pin, value) 数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。(HIGH 为高电平,LOW为低电平。)

int digitalRead(pin) 数字IO口读输入电平函数,pin表示为0~13,value表示为HIGH或LOW。

analogRead(pin) 模拟IO口读函数,pin表示为0~5。

analogWrite(pin, value) - PWM 数字IO口PWM输出函数,Arduino数字IO口标注了PWM的IO口可使用该函数,pin表示3, 5, 6, 9, 10, 11,value表示为0~255。

unsigned long millis() 返回时间函数(单位ms),该函数是当程序运行就开始计时并返回记录的参数

delay(ms) 延时函数(单位ms)

delayMicroseconds(us) 延时函数(单位us)。

attachInterrupt(interrupt, , mode) 外部中断只能用到数字IO口2和3,interrupt表示中断口初始0或1,表示一个功能函数,mode:LOW低电平中断,CHANGE有变化就中断,RISING上升沿中断,FALLING 下降沿中断。

detachInterrupt(interrupt) 中断开关,interrupt=1 开,interrupt=0 关。

Serial.begin(speed) 串口定义波特率函数,speed表示波特率,如9600

int Serial.available() 判断缓冲器状态。

int Serial.read() 读串口并返回收到参数。

Serial.flush() 清空缓冲器。

Serial.print(data) 串口输出数据

Serial.println(data) 串口输出数据并带回车符。

需要的库文件介绍:
EEPROM - EEPROM读写程序库

Ethernet - 以太网控制器程序库

LiquidCrystal - LCD控制程序库

Servo - 舵机控制程序库

SoftwareSerial - 任何数字IO口模拟串口程序库

Stepper - 步进电机控制程序库

Wire - TWI/I2C总线程序库

Matrix - LED矩阵控制程序库

Sprite - LED矩阵图象处理控制程序库
写程序:
步骤:
1、声明变量及接口名称(int val;int ledPin=13;)。
2、setup()——函数在程序开始时使用,可以初始化变量、接口模式、启用库等(例如:pinMode(ledPin,OUTUPT);)。
3、loop()——在setup()函数之后,即初始化之后,loop() 让你的程序循环地被执行。

我写了一个程序,来解释说明一下

这个程序的目的是检测火焰,如果火焰达到阈值,则启动舵机

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
//以这种方式调用,它使用默认地址0x40。
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
int flame=A5;//定义火焰接口为模拟0 接口
int Beep=8;//定义舵机接口 接口
int val=0;//定义数字变量
void setup() 
{
 pinMode(Beep,OUTPUT);// 为输出接口
 pinMode(flame,INPUT);//为输入接口
 Serial.begin(9600);
 pwm.begin();
  pwm.setPWMFreq(50); //模拟伺服在60赫兹更新下运行
} 
void loop()
{ 
val=analogRead(flame);//读取火焰传感器的模拟值 
Serial.println(val);//输出模拟值, 
 if(val>=600)//当模拟值大于600 时舵机转
 {
  pwm.setPWM(Beep, 0, 180);//转动180度
 }
 }
 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值