/*
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++)

 

posted on 2018-11-06 14:51  仓鼠大人爱吃肉  阅读(829)  评论(0编辑  收藏  举报