Arduino在创客领域和简单的工业控制中得到了极为广泛的应用,Arduino使用的ATmega328p芯片,前面我有对ATmega328p芯片的系列教程讲解。今天我们主要看一下在Arduino 这个framework下的一些C语言编程规则,这个framework其实就是对ATmega328p的二次封装,才形成了现在的比较常见的arduino编程。

编程模板架构

主要涉及两个函数:void setup()

初始化变量,管脚模式,调用库函数等,只执行一次。void loop()

连续执行函数内的语句。这个是个while(1)

几个常量HIGH | LOW 表示数字IO口的电平,HIGH 表示高电平(1),LOW 表示低电平(0)。

INPUT | OUTPUT 表示数字IO口的方向,INPUT 表示输入(高阻态),OUTPUT 表示输出(5V电压 40mA电流)。

true | false true 表示真(1),false表示假(0)。

这几个没啥好说的,基本上都宏定义了。可以去看Arduino.h这个头文件,里面都有这几个的宏定义。

数字 I/OpinMode(pin, mode)

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

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

数字IO口读输入电平函数,pin表示为0~13,value表示为HIGH或LOW。比如可以读数字传感器。

模拟 I/Oint analogRead(pin)

模拟IO口读函数,pin表示为0~5(Arduino Diecimila为0~5,Arduino nano为0~7)。比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。analogWrite(pin, value)

数字IO口PWM输出函数,Arduino数字IO口标注了PWM的IO口可使用该函数,pin表示3, 5, 6, 9, 10, 11,value表示为0~255。比如可用于电机PWM调速或音乐播放。

扩展 I/OshiftOut(dataPin, clockPin, bitOrder, value)

SPI外部IO扩展函数,通常使用带SPI接口的74HC595做8个IO扩展,dataPin为数据口,clockPin为时钟口,bitOrder为数据传输方向(MSBFIRST高位在前,LSBFIRST低位在前),value表示所要传送的数据(0~255),另外还需要一个IO口做74HC595的使能控制。unsigned long pulseIn(pin, value)

脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。

时间函数unsigned long millis()

返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。delay(ms)

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

延时函数(单位us)。

数学函数min(x, y) 求最小值

max(x, y) 求最大值

abs(x) 计算绝对值

constrain(x, a, b) 约束函数,下限a,上限b,x必须在ab之间才能返回。

map(value, fromLow, fromHigh, toLow, toHigh) 约束函数,value必须在fromLow与toLow之间和fromHigh与toHigh之间。

pow(base, exponent) 开方函数,base的exponent次方。

sq(x) 平方

sqrt(x) 开根号

三角函数sin(rad)

cos(rad)

tan(rad)

随机数函数randomSeed(seed) 随机数端口定义函数,seed表示读模拟口analogRead(pin)函数 。

long random(max) 随机数函数,返回数据大于等于0,小于max。

long random(min, max) 随机数函数,返回数据大于等于min,小于max。

外部中断函数attachInterrupt(interrupt, , mode)

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

中断开关,interrupt=1 开,interrupt=0 关。

中断使能函数interrupts() 使能中断

noInterrupts() 禁止中断

串口收发函数·Serial.begin(speed) 串口定义波特率函数,speed表示波特率,如9600,19200等。

·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矩阵图象处理控制程序库

非官方库文件DateTime - a library for keeping track of the current date and time in software.

Debounce - for reading noisy digital inputs (e.g. from buttons)

Firmata - for communicating with applications on the computer using a standard serial protocol.

GLCD - graphics routines for LCD based on the KS0108 or equivalent chipset.

LCD - control LCDs (using 8 data lines)

LCD 4 Bit - control LCDs (using 4 data lines)

LedControl - for controlling LED matrices or seven-segment displays with a MAX7221 or MAX7219.

LedControl - an alternative to the Matrix library for driving multiple LEDs with Maxim chips.

Messenger - for processing text-based messages from the computer

Metro - help you time actions at regular intervals

MsTimer2 - uses the timer 2 interrupt to trigger an action every N milliseconds.

OneWire - control devices (from Dallas Semiconductor) that use the One Wire protocol.

PS2Keyboard - read characters from a PS2 keyboard.

Servo - provides software support for Servo motors on any pins.

Servotimer1 - provides hardware support for Servo motors on pins 9 and 10

Simple Message System - send messages between Arduino and the computer

SSerial2Mobile - send text messages or emails using a cell phone (via AT commands over software serial)

TextString - handle strings

TLC5940 - 16 channel 12 bit PWM controller.

X10 - Sending X10 signals over AC power lines

在写arduino代码时,pinMode, digitalWrite, digitalRead等这些函数用起来是不是非常顺手呢?有了这些函数,我们就不用关心AVR单片机的那些令人头疼寄存器了。我们向函数传入引脚在Arduino开发板上的引脚号,就能对这个引脚进行读写和设置操作了。那么这些函数是如何实现的呢?下面将陆续给大家出一个系列的教程专门讲讲这个framework里面的内容,这样的话那么我们就可以来定制自己的framework了,我们在基于ATmega328p自己做个板子,那就是一套全新的产品了。是不是很帅。。。。

arduino编程语言教程_Arduino|编程语言说明相关推荐

  1. arduino编程语言教程_Arduino编程从零开始_IT教程网

    资源名称:Arduino编程从零开始 内容简介: <Arduino编程从零开始>从C语言基础开始,深入浅出地介绍了Arduino编程,对于零基础的初学者和有一定基础的Arduino玩家都有 ...

  2. arduino analogread_Arduino编程语言教程,Arduino和单片机的区别

    众所周知,Arduino是一个开放性源码电子平台,拥有灵活.易用的硬件和软件.Arduino作为知名度很高的微控制器,已经融入到好多领域.现在很多中小学生.老师.创客们.设计师.艺术家等都在玩ardu ...

  3. 史上最全编程语言教程

    史上最全编程语言教程 1.javascript视频教程 链接: https://pan.baidu.com/s/1slYX3Ff 密码: jn92 2.JPA视频教程 链接: https://pan. ...

  4. 微信公众号开发java流程_微信公众号开发教程java 编程语言的特点及选择

    微信公众号开发教程java 编程语言的特点及选择 微信公众号为用户提供了相关的工具,来对微信公众号进行一个简单的开发.但是如果想实现一些复杂的功能,其实还是要借助于一些编程语言的使用.所以要了解,在微 ...

  5. arduino入门教程系列一:初识arduino

    为了照顾新手小伙伴,DF创客社区开始陆续更新一些arduino系列基础教程,帮助大家更好地入门! 先从Arduino入门教程开始吧. Arduino是什么? Arduino是一个开放源码电子原型平台, ...

  6. 少儿编程语言python-2019儿童编程语言大全

    原标题:2019儿童编程语言大全 除了要学英语外,对于一些高中生,甚至小学生来说,他们未来很可能还要多学一门"外语"-- Python.近日,山东省在其最新出版的小学信息技术六年级 ...

  7. 编程语言优缺点_R编程语言的优缺点

    编程语言优缺点 In general, the R programming language is considered as the machine learning language. This ...

  8. Arduino开发教程

    Arduino开发教程 0 前言 0.1 须知 0.2 常见Arduino系列 1.基础篇 2.提高篇 3.进阶篇 4.MATLAB工具 5.小结 0 前言 0.1 须知 作为单片机初学者

  9. arduino入门教程!保姆级细致教学!

    Arduino入门教程 前言 arduino作为全球知名的开源电子平台,它的诞生,为广大电子爱好者提供了一个大展拳脚的机会,可以以较为简单的编程能力制作出属于自己的项目,将许多有趣的想法通过编程和ar ...

最新文章

  1. python画图代码彩虹-Python利用turtle库绘制彩虹代码示例
  2. java bigdecimal乘法_Java BigDecimal类型的 加减乘除运算
  3. oracle10g sys密码忘记,Oracle 10g忘记system,sys密码的解决办法。
  4. 10自带sftp服务器_WinSCP v5.15.3 免费的 开源图形化 SFTP 客户端
  5. python扫描ip的端口打开情况
  6. Jquery一些常见性能的问题
  7. 5部高分学科纪录片,在家也能受益良多!
  8. Python 拯救你的人生颓
  9. 逆向生成的Dimac.JMail工程及测试项目
  10. android ndk 多线程mk,Android NDK 开发教程六: application.mk
  11. PCA 主成分分析Principal components analysis
  12. 转 Java多线程中Sleep与Wait的区别
  13. 高等代数第3版下 [丘维声 著] 2015年版_全国硕士研究生入学统一考试管理类联考综合能力考试大纲(2021年版)...
  14. 3dmax森林树木植物插件 Forest Pack Pro 6.3.1
  15. 什么是栈,栈及其特点和应用详解
  16. 接口测试——并行上传文件
  17. Enterprise Architect学习(1)
  18. SDN交换机在云计算网络中的应用场景
  19. 3dmark android 中文,貌似不靠谱,Android平台3DMark测试版初体验
  20. mysql建学生-课程数据库_有一个“学生-课程”数据库,数据库中包括三个表:...

热门文章

  1. OpenCV学习笔记:矩阵/向量处理
  2. oracle报表文件,如何使用.NET代码从Crystal报表文件获取Oracle包名称
  3. Python模块和包:导入制作模块、name、模块定位顺序(文件名与模块名重复、功能名与功能名重复、函数名与功能名重复、变量名与模块名重复)、from 模块名 import *__all__列表、包
  4. python用什么电脑配置好_学python用什么配置的电脑
  5. Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.
  6. npm run dev报错_React + TypeScript 从零开发Popup组件并发布到 npm
  7. python语法报错_Python语法的常见错误和处理异常
  8. 黑莓桌面管理器4.2_虚拟桌面管理器行业现状调研分析及发展趋势预测报告(2020)...
  9. c语言突然出现图片,c语言能显示图片吗
  10. c语言学习-使用指针对三个变量互相赋值