在之前的章节中,小编带领大家学习了:如何构建arduino的c++开发环境-CSDN博客
今天小编带领大家开始学习c++编程的第一节,玩转led电灯。arduino uno核心板是一个高度集成,功能丰富的模块,来看下他的功能分布:
小编之前为大家展示的arduino核心板是国产化的板子,通用引脚排列和功能是相同。完全兼容。同样提供了丰富的外设,串口uart、i2c、spi、adc和pwm等,这些外设,在后续的课程中,都会为大家一一讲解。
大家可以看到我们arduino工程的初始代码,主要用两个默认函数组成,分别是:setup()和loop()。通过英文单词可以翻译为 设置(初始化)、循环。如果学习过小编之前的课程,大家就会发现,这两个函数和我们的microbit的开发环境的两个指令很相似的。
没有错,他们两个语句是相同功能的。setup和当开机时,作用都是在系统上电时立马执行一遍,可以把我们初始化代码放到这里,进行执行。
loop和无限循环,作用都是当系统上电时,无限循环的执行,我们可以把我们的核心代码放到这里执行。
学习控制小灯,就必须要了解我们主控芯片(单片机),的通用引脚概念和作用,大家可以参考学习之前的教程:智能硬件之通用引脚(GPIO)-CSDN博客
这节项目会应用到智能模块中的智能电路(1)之指示灯模块-CSDN博客,大家可以参考学习,就知道该如何将主控芯片和指示灯模块进行连线了。
控制led灯亮灭,将arduino核心板上的GND和流水灯模块的GD连接,将核心板的0脚和流水灯的L1连接。
void setup() {
pinMode(0, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH);
delay(500);
digitalWrite(0, LOW);
delay(500);
}
①pinMode(0, OUTPUT); 设置引脚0为输出模式;
②digitalWrite(0, HIGH); 设置引脚0为高电平,也就是状态1,输出3.3V电压;
实际效果如下:
控制多个led灯,依次点亮,将arduino核心板上的GND和流水灯模块的GD连接,将核心板的0、1、2脚分别与流水灯的L1、L2、L3连接。
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
delay(500);
digitalWrite(0, LOW);
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
delay(500);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
delay(500);
}
实际效果如下:
控制led灯,由暗到亮,将arduino核心板上的GND和流水灯模块的GD连接,将核心板的3脚和流水灯的L1连接,因为3脚支持PWM输出,呼吸灯的原来就是通过给led输出0-3.3V的电压,让其亮度从暗渐渐变亮,PWM相关知识点会在后续章节分享。
int led = 3;
int brightness = 0;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
analogWrite(led, brightness);
brightness++;
if (brightness >= 255) {
brightness = 0;
}
delay(20);
}
analogWrite(led, brightness);函数作用就是给引脚输入不同的电压,因为brightness变量是一个变换的值,从0-255依次加1。增加延时20ms,作用是为了让大家看到呼吸灯变换的过程,否则亮度会变换的很快,肉眼看不出来,可能只能看到小灯一直亮着。
if语句是一个逻辑判断,保证brightness值不能大于255,否者从新赋值0。
实际效果如下:
顾名思义,变量(Variable)是可以改变的量,与之相对的是不可改变的常量。变量可以理解为数据的容器。
变量名是由用户自己定义的标识符。其命名规则如下:
①首字符:变量名必须以字母或下划线(_)开始。数字不能作为变量名的首字符。
②字母和数字:变量名的其余部分可以由字母、数字和下划线组成。这意味着变量名可以包含字母(大写或小写)、数字和下划线。
③关键字冲突:变量名不能与 C++ 的保留关键字相同。例如,int, class, return 等都是 C++ 的关键字,不能用作变量名。
④大小写敏感:C++ 是一种区分大小写的编程语言。因此,Variable 和 variable 是两个不同的变量名。
⑤长度限制:理论上,变量名的长度没有限制,但应避免使用过长的变量名,以便提高代码的可读性。
⑥语义命名:虽然不是严格的规则,但建议变量名能够反映其用途或存储的内容。使用描述性的变量名可以使代码更易于理解和维护。
⑦命名约定:不同的组织和项目可能有自己的命名约定。这些约定可能涉及单词之间的分隔(例如使用下划线或驼峰命名)以及大小写的使用。
合法变量名: _ab、abc、ABC、ab123等
不合法变量名:1abc、@abc、class等
库的作用,就是把写好的代码封装好成库,后面在使用的时候,就可以通过导入库,来进行调用使用了,不用重复写代码了。c++提供倒入库的语法是通过#include语句
预处理阶段,#include会将头文件拷贝到本文件内进行运行。
#include有两种格式:
格式①:#include
如果我们在编译的时候用/home/tarena/include hello.c路径文件,那么系统会先到指定的目录找头文件进行复制,如果在指定文件里面找不到头文件,那么再去系统目录里面找。
格式②:#include “xxx.h”
如果我们在编译的时候用/home/tarena/include hello.c路径文件,那么系统会先到指定的目录找头文件进行复制,如果在指定文件里面找不到头文件,再去当前目录去找,当前目录也找不到,再去系统目录里面找。
其实这两种模式,对于第二种格式,他包含了第一种格式。
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。这个函数的基本结构完成以后,你可以通过另一个函数调用执行。如下实例调用了printme()函数:
#include
using namespace std;
// 函数返回两个数中较大的那个数
int max(int num1, int num2)
{
// 局部变量声明
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
int ret;
// 调用函数来获取最大值
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
更多的c++的语法,可以参考这个学习,简单明了:C++ 教程 | 菜鸟教程 (runoob.com)
,小编后续课程会以应用为主,编程语言的实战应用。更多语言的语法问题可以参考其他文章学习。