完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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度 } } } |
|
|
|
只有小组成员才能发言,加入小组>>
3311 浏览 9 评论
2994 浏览 16 评论
3493 浏览 1 评论
9058 浏览 16 评论
4087 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
598浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:46 , Processed in 1.101451 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号