单片机学习小组
登录
直播中
李丹
7年用户
1413经验值
私信
关注
什么是arduino呢?arduino有何作用呢
开启该帖子的消息推送
单片机
嵌入式
Arduino
什么是arduino呢?
arduino有何作用呢?如何利用arduino去编写程序呢?
回帖
(1)
李健
2022-1-24 09:55:24
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
#include
//以这种方式调用,它使用默认地址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度
}
}
}
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
#include
//以这种方式调用,它使用默认地址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度
}
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
单片机
嵌入式
Arduino
请问一下
Arduino
单片机
有
何
功能
呢
2021-11-02
1757
怎样在两个
Arduino
之间实现SPI通信并进行仿真
呢
2022-01-24
1647
怎样去使用在
arduino
中的看门狗
呢
2021-09-26
1131
怎样通过
Arduino
IDE对
Arduino
UNO进行编程
呢
2022-01-24
1314
什么是
Arduino
?
Arduino
的优点
有
哪些
2022-01-24
1866
Arduino
与单片机等
有
什么不同点吗
2021-08-20
1356
如何去实现基于
Arduino
IDE软件的STM32串口通信程序
呢
2021-12-07
930
Arduino
开发板
有
哪些主要技术参数
呢
2021-10-28
1857
Arduino
是什么?如何对
Arduino
进行编程
呢
2021-12-08
1519
Arduino
是什么?
Arduino
有
哪些主要技术参数?
2021-07-06
1631
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分