Skip to content

Commit

Permalink
add more docs
Browse files Browse the repository at this point in the history
  • Loading branch information
MR-Addict committed May 10, 2023
1 parent 057dc2a commit 8b8439d
Show file tree
Hide file tree
Showing 234 changed files with 7,810 additions and 108 deletions.
2 changes: 1 addition & 1 deletion babel.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
presets: [require.resolve("@docusaurus/core/lib/babel/preset")],
};
28 changes: 14 additions & 14 deletions docs/electronics/arduino/chapter1.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,35 +10,35 @@ Arduino 至今拥有非常多的开发板,其中最为流行的就是 8 位的

AVR 开发板:

| Arduino Uno | Arduino Nano | Arduino Mega |
| :----------------------------: | :-----------------------------: | :------------------------------ |
| ![Arduino Uno](images/1-1.png) | ![Arduino Nano](images/1-2.png) | ![Arduino Mega](images/1-3.png) |
| Arduino Uno | Arduino Nano | Arduino Mega |
| :------------------------------: | :-------------------------------: | :-------------------------------- |
| ![Arduino Uno](./images/1-1.png) | ![Arduino Nano](./images/1-2.png) | ![Arduino Mega](./images/1-3.png) |

Arduino Nano 33 系列开发板:

| Arduino Nano 33 IOT | Arduino Nano 33 BLE | Arduino Nano 33 BLE Sense |
| :------------------------------------: | :------------------------------------: | :------------------------------------------- |
| ![Arduino Nano 33 IOT](images/1-4.png) | ![Arduino Nano 33 BLE](images/1-5.png) | ![Arduino Nano 33 BLE Sense](images/1-6.png) |
| Arduino Nano 33 IOT | Arduino Nano 33 BLE | Arduino Nano 33 BLE Sense |
| :--------------------------------------: | :--------------------------------------: | :--------------------------------------------- |
| ![Arduino Nano 33 IOT](./images/1-4.png) | ![Arduino Nano 33 BLE](./images/1-5.png) | ![Arduino Nano 33 BLE Sense](./images/1-6.png) |

Arduino 还有一些工业级的开发板:

| Arduino MKR Vidor 4000 | Arduino MKR NB 1500 | Arduino Portenta H7 |
| :----------------------------------------: | :-------------------------------------: | :-------------------------------------: |
| ![Arduino MKR Vidor 4000](images/1-11.png) | ![Arduino MKR NB 1500](images/1-12.png) | ![Arduino Portenta H7](images/1-13.png) |
| Arduino MKR Vidor 4000 | Arduino MKR NB 1500 | Arduino Portenta H7 |
| :------------------------------------------: | :---------------------------------------: | :---------------------------------------: |
| ![Arduino MKR Vidor 4000](./images/1-11.png) | ![Arduino MKR NB 1500](./images/1-12.png) | ![Arduino Portenta H7](./images/1-13.png) |

以及一批不再生产的退休开发板:

| Arduino Lilypad | Arduino ESPLORA | Arduino YUN Shiled |
| :--------------------------------: | :--------------------------------: | :------------------------------------: |
| ![Arduino Lilypad](images/1-7.png) | ![Arduino ESPLORA](images/1-8.png) | ![Arduino YUN Shield](images/1-14.png) |
| Arduino Lilypad | Arduino ESPLORA | Arduino YUN Shiled |
| :----------------------------------: | :----------------------------------: | :--------------------------------------: |
| ![Arduino Lilypad](./images/1-7.png) | ![Arduino ESPLORA](./images/1-8.png) | ![Arduino YUN Shield](./images/1-14.png) |

## 2. Arduino Uno

Arduino Uno 可以说是 Arduino 开发板家族中最为流行的一款,可以说是每个 Arduino 初学者都会拥有的一款开发板,我们就以 Uno 板为例对 AVR 芯片硬件进行一些介绍。

下面是 Arduino Uno 的引脚图:

![Arduino引脚图](images/1-9.png)
![Arduino引脚图](./images/1-9.png)

可以发现 Arduino Uno 有以下几个引脚分布:

Expand Down Expand Up @@ -74,7 +74,7 @@ Arduino IDE 是一个开源的软件,它使编写代码和上传到开发板

下面是 Arduino IDE 的基本信息,关于该 IDE 的更多使用可以访问官方教程:[Arduino IDE Guide](https://www.arduino.cc/en/Guide)

![Arduino IDE](images/1-10.png)
![Arduino IDE](./images/1-10.png)

### Arduino 2.x

Expand Down
2 changes: 1 addition & 1 deletion docs/electronics/arduino/chapter2.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,4 @@ ms 参数:参数就是延时时间,单位是毫秒,数据类型为`unsigne
整个程序的流程示意图如下:
![Blink](images/2-1.png)
![Blink](./images/2-1.png)
12 changes: 6 additions & 6 deletions docs/electronics/arduino/chapter3.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ title: 使用按钮

下面是一个按钮接线图和使用按钮的一个程序,大家可以先看一下。

![按钮接线图](images/3-1.png)
![按钮接线图](./images/3-1.png)

```cpp
int button = 2;
Expand Down Expand Up @@ -52,7 +52,7 @@ digitalRead(pin);
所以在 loop 循环中,我们通过`bool buttonStatus = digitalRead(button)`来读取按钮的状态。当按钮按下时,5V 的电压会通过按钮输入到 2 号引脚,单片机读取引脚状态,存储到`buttonStatus`中。如果是高电平,就点亮板载 LED,低电平就熄灭 LED。
![按钮和LED](images/3-2.png)
![按钮和LED](./images/3-2.png)
## 3. 按钮进阶
Expand Down Expand Up @@ -138,23 +138,23 @@ Arduino 同时还有另一个记录时间的函数`micros()`,它的单位是 u

下面是按钮抖动的示意图:

![按钮抖动](images/3-3.png)
![按钮抖动](./images/3-3.png)

那我们如何解决这个问题呢,比较常用的方法就是加入**上拉电阻**或者**下拉电阻**帮助消抖。也就是让按钮在没有被完全按下的时候**保持高电平**或者**低电平**

下面是我们的按钮加入下拉电阻的接线图:

![下拉电阻](images/3-4.png)
![下拉电阻](./images/3-4.png)

原理图如下:

![下拉电阻原理图](images/3-5.png)
![下拉电阻原理图](./images/3-5.png)

由于下拉电阻的存在,当按钮还在波动的期间,IO 口都会被下拉电阻拉低,直到完全按下时,下拉电阻被短路,IO 口输入高电平。

同理有上拉电阻:

![上拉电阻](images/3-6.png)
![上拉电阻](./images/3-6.png)

在大部分应用中,上拉电阻的使用更多一些。同时,现在的单片机大多都有内部上拉电阻,有的也有内部下拉电阻,这就是`pinMode()`mode 参数的第三个可选值`INPUT_PULLUP`

Expand Down
2 changes: 1 addition & 1 deletion docs/electronics/arduino/chapter4.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ title: 中断Interrupt

下面是一个中断示意图:

![中断示意图](images/4-6.png)
![中断示意图](./images/4-6.png)

在单片机中有**硬件中断****软件中断**

Expand Down
2 changes: 1 addition & 1 deletion docs/electronics/arduino/chapter6.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Arduino 数字引脚只能输出 5V(当变为高电平时)或 0V(当变为

下面是 PWM 原理的示意图:

![PWM](images/6-1.png)
![PWM](./images/6-1.png)

## 2. 使用 PWM

Expand Down
2 changes: 1 addition & 1 deletion docs/electronics/arduino/chapter8.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,4 +137,4 @@ void loop() {

有关 Arduino 串口通信的其他函数可以参考以下内容:[Arduino Serial Function Lists](https://www.arduino.cc/reference/en/language/functions/communication/serial/)

这里只对 Arduino 的串口通信进行简单介绍,有关 UART 的通信机制及更多内容,请参考后面的章节([通讯专题/UART](./chapter1.md))
这里只对 Arduino 的串口通信进行简单介绍,有关 UART 的通信机制及更多内容,请参考后面的章节([通讯专题/UART](../communication/serial/uart/intro.md))
4 changes: 2 additions & 2 deletions docs/electronics/arduino/chapter9.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ title: 单片机的存储器和EEPROM

一般单片机的存储空间可以用下图表示:

![MCU Memory](images/9-2.png)
![MCU Memory](./images/9-2.png)

单片机中**SRAM(Static Random-Access Memory)**,主要是用于存储程序运行过程中的变量,因为 RAM 拥有读写速度快的优点,但是 RAM 的数据在掉电后会丢失。

Expand All @@ -22,7 +22,7 @@ EEPROM 的主要特点如下:

单片机中的 EEPROM 的由来和发展非常有意思,可以用下面的图表示:

![EEPROM由来](images/9-1.png)
![EEPROM由来](./images/9-1.png)

Flash 和 EEPROM 在某些方面比较相似。因为 Flash 就是由 EEPROM 发展而来,支持大擦除块,一般是**512 字节甚至更高**,EEPROM 不仅擦除块小,且每次擦除都需要大概 3.3ms 左右,因此,Flash 更适合用来做为程序储存空间。Flash 和 EEPROM 一样,掉电后数据不会丢失,属于**Non-Volatile Memory**,因此在一些没有 EEPROM 的单片机上,可以使用 Flash 代替 EEPROM,比如 ESP32。但是 Flash 的擦写周期要比 EEPROM 短,通常在**10,000**次。

Expand Down
2 changes: 1 addition & 1 deletion docs/electronics/arduino/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ Arduino 这个名字来自意大利伊夫雷亚的一家**酒吧**,该项目

在这里我们也只对 Arduino 这个硬件和软件平台作简单的介绍,嵌入式学习肯定不是学习 Arduino,只是 arduino 很适合入门,不需要配置环境,使用非常之简便,很适合教学,也很适合做项目。

同时本专题内容进队 Arduino 的基础硬件做简单介绍,有关 Arduino 硬件的通信内容可以学习后面的章节([通信专题](./chapter1.md))
同时本专题内容进队 Arduino 的基础硬件做简单介绍,有关 Arduino 硬件的通信内容可以学习后面的章节([通信专题](../communication/intro.md))
100 changes: 100 additions & 0 deletions docs/electronics/c-lang/chapter1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
title: C语言基本语法
---

# C 语言基本语法

## 1. 语句

C 语言的基本单位是语句,每条语句必须以`;`结束。它表明一个逻辑实体的结束。

多条语句在某些情况下,可以用`,`隔开合并成一条语句。

```c
#include <stdio.h>

int main() {
int input, ouput;
printf("Input your age:");
scanf("%d", &input);
ouput = input;
printf("Your age is:%d", ouput);
return 0;
}
```

## 2. 注释

注释是用来给代码添加解释,让自己或者其他人方便阅读或者方便自己今后修改代码,注释会被编译器忽略,对代码的运行没有影响。

C 语言注释有两种:

```c
//单行注释
//单行注释

/*
多行注释
多行注释
多行注释
*/
```

## 3. 关键字

关键字是 C 语言预定义的,对编译器有特殊意义的保留字,这些关键字是不能被用来当作变量名或者函数名等。

| 关键字 | 作用 |
| :----: | :----------------------------: |
| int | 声明整形变量或函数 |
| float | 声明浮点型变量或函数返回值类型 |
| long | 声明长整型变量或函数返回值类型 |
| void | 声明函数无返回值或无参数 |
| if | 条件判断语句 |
| else | 条件分支否定语句 |
| for | 一种循环语句 |
| while | 一种循环语句 |
| return | 子程序返回语句 |
| define | 定义一个标识符来表示一个常量 |

## 4. 函数

函数需要返回值,需要函数名,需要参数,C 语言的 main 函数就是一个标准的函数。

```c
#include <stdio.h>

int main(void) {
printf("Hello world!");
return 0;
}
```
多条语句可以用函数进行封装,封装可以简化代码,方便调用。
```c
#include <stdio.h>
void printHelloWorld() {
printf("Hello world!");
}
int main() {
printHelloWorld();
return 0;
}
```

## 5. 预处理(#)

预处理的特点:

- **为了区分一般的语句,预处理命令行都必须以#开始,结尾不加分号**
- **预处理命令可以放在程序中的任意位置**
- **在程序中凡是以#开始的语句都是预处理命令行**

预处理的作用:

- **宏定义:#define**
- **文件包含:#include <stdio.h\>**
- **条件编译:#ifdef #define #endif**
Loading

0 comments on commit 8b8439d

Please sign in to comment.