Arduino的安装和编译
/* Blink 等待一秒钟,点亮LED,再等待一秒钟,熄灭LED,如此循环 */ // 在大多数Arduino控制板上 13号引脚都连接了一个标有“L”的LED灯 // 给13号引脚连接的设备设置一个别名“led” int led = 13; // 在板子启动或者复位重启后, setup部分的程序只会运行一次 void setup(){ // 将“led”引脚设置为输出状态 pinMode(led, OUTPUT); } // setup部分程序运行完后,loop部分的程序会不断重复运行 void loop() { digitalWrite(led, HIGH); // 点亮LED delay(1000); // 等待一秒钟 digitalWrite(led, LOW); // 通过将引脚电平拉低,关闭LED delay(1000); // 等待一秒钟 }
第一个程序Blink
0.安装
1.安装IDE(官网下载,下一步,下一步,下一步) 2.安装驱动(下一步,下一步,下一步)
1.什么是Arduino语言
Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言,C语言是一种面向过程的编程语言,C++是一种面向对象的编程语言。早期的Arduino核心库使用C语言编写,后来引进了面向对象的思想,目前最新的Arduino核心库采用C与C++混合编写而成。
通常我们说的Arduino语言,是指Arduino核心库文件提供的各种应用程序编程接口(Application Programming Interface,简称API)的集合。这些API是对更底层的单片机支持库进行二次封装所形成的。例如,使用AVR单片机的Arduino的核心库是对AVR-Libc(基于GCC的AVR支持库)的二次封装。
传统开发方式中,你需要厘清每个寄存器的意义及之间的关系,然后通过配置多个寄存器来达到目的。
pinMode(13,OUTPUT); //pinMode(13,OUTPUT)即是设置引脚的模式,这里设定了13脚为输出模式; digitalWrite(13,HIGH);//让13脚输出高电平数字信号;
最重要最必须的两个函数
void setup() { // 只需运行一次的代码,如设置板子: //Arduino控制器通电或复位后,即会开始执行setup() 函数中的程序,该部分只会执行一次。
通常我们会在setup() 函数中完成Arduino的初始化设置,如配置I/O口状态,初始化串口等操作 } void loop() { // 重复运行的代码,,如灯光闪烁: //注:在setup() 函数中的程序执行完后,Arduino会接着执行loop() 函数中的程序。而loop()函数是一个死循环,其中的程序会不断的重复运行。
通常我们会在loop() 函数中完成程序的主要功能,如驱动各种模块,采集数据等 }
底层原理(main()函数去哪里了)
int main(void){ init(); setup(); for(;;) loop(); return 0;
}
#include <Arduino.h> // Declared weak in Arduino.h to allow user redefinitions. int atexit(void (* /*func*/ )()) { return 0; } // Weak empty variant initialization function. // May be redefined by variant files. void initVariant() __attribute__((weak)); void initVariant() { } void setupUSB() __attribute__((weak)); void setupUSB() { } int main(void) { init(); initVariant(); #if defined(USBCON) USBDevice.attach(); #endif setup(); for (;;) { loop(); if (serialEventRun) serialEventRun(); } return 0; }
main.cpp源码分析
Arduino程序中编写的setup和loop函数,都在main函数中调用了。loop的循环执行,是通过for循环实现的,且每次loop结束后,都会进行串口事件判断,也正是因为这种设计,串口事件不能实时响应。
2.程序语言入门
一.使用变量
特点:单个数值
int整形 long长整型 float浮点型 double浮点型(同float(在arduino中!)) boolean(布尔值(false(0)或true(1))) char字符型 -128~127之间的有符号值 Byte比特型(类似于char,只是无符号值)
二.使用数组
特点:一组数值,从索引0开始
0.创建数组
用{}表示如:int balabala~[]={1,2,3,4,5}表示一个[1,2,3,4,5]的列表 int balabala~[4]表示[0,0,0,0]的列表
1.读取数组
for(int index=0;index<4;index++){
pinMode(balabala[index],OUTPUT)代表索引的引脚进行的操作
}
2.将数组元素数目定义为常量来避免访问的实际大小超过数组长度
const int PIN_COUNT = 4;
int balabala~[]={1,2,3,4}
for(int index=0;index<PIN_COUNT;index++){pinMode(balabala[index],OUTPUT)
三.字符串
1.使用arduino的String字符串
加载Basic_Strings程序并查看输出内容
2.使用C字符串
四.数字与字符串的转换
1.数字转换为字符串,为了在LCD或者其他显示器显示这个数字
String变量可以自动将数字转换为字符串 例如: String myNumber = 123456;
2.字符串转换为数字
String aNumber = "1234" int value = aNumber.toInt();
五.函数
1.不带参数 void blink1(){} 2.带一个参数 viod blink(int count){} 3.带一个参数并返回一个值 int blink(int period)
4.返回多个值
改变全局变量从而改变多个值
六.流程控制
if条件语句 if(条件){执行代码}
else{执行代码}//else否则执行这一行代码
switch语句
switch(条件)
case:分支条件
while循环 while(条件){执行代码} do..while循环类似于while循环 do{}//先执行do再执行while while()
跳出循环
break;
for循环 for(int i=0;i<4;i++)