first commit

This commit is contained in:
编码猿
2024-09-27 01:22:07 +08:00
commit 1360daaab0
931 changed files with 131068 additions and 0 deletions

1
代码案例/.pydio Normal file
View File

@@ -0,0 +1 @@
1c6699e5-965e-4657-8bec-f0a7fbade14f

View File

@@ -0,0 +1 @@
20ca03df-fee0-4398-bad8-eb6edc015a57

View File

@@ -0,0 +1 @@
3429dc01-405f-49e4-9f33-4daae2dd83a0

View File

@@ -0,0 +1 @@
d9c07498-b7dc-45c0-918c-c204eb375deb

View File

@@ -0,0 +1,34 @@
/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
读取引脚2的数字输入将结果显示在串口监视器中
This example code is in the public domain.
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
//引脚2连接有按键开关给它一个名字
int pushButton = 2;
// the setup routine runs once when you press reset:
//当你按下复位按钮后setup流程运行一次
void setup() {
// initialize serial communication at 9600 bits per second:
//串口通讯初始化每秒9600位
Serial.begin(9600);
// make the pushbutton's pin an input:
//设置按键引脚为输入
pinMode(pushButton, INPUT);
}
// the loop routine runs over and over again forever:
// loop 流程会永远的反复运行
void loop() {
// read the input pin:
//读取输入引脚:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
// 显示按键状态
Serial.println(buttonState);
delay(1); // delay in between reads for stability 为确保程序稳定运行进行短暂停止
}

View File

@@ -0,0 +1 @@
18119106-3ec7-4b37-bb21-a7b6d0cc1df5

View File

@@ -0,0 +1 @@
3fdd9f7e-f0b4-4253-bfee-5694844a9991

View File

@@ -0,0 +1,49 @@
/*
Input Pullup Serial
本示例展示如何使用pinMode(INPUT_PULLUP)。通过本程序Arduino将读取引脚2
的数字输入并将结果显示在串口监视器中。
电路:
* 引脚2连接轻触开关开关另一端接地
* 引脚13上安装有开发板内置LED
与使用pinMode(INPUT)不同我们在使用pinMode(INPUT_PULLUP)时不需要外接上拉或下拉电阻。
开发板内置一个20K欧姆电阻该电阻将引脚上拉到5V。开关在打开时引脚读取到高电平。开关闭合后引脚读取到低电平。
created 14 March 2012
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/InputPullupSerial
This example code is in the public domain
本示例程序的注释文字中文翻译由太极创客提供
www.taichi-maker.com
*/
void setup() {
//开始串口通讯
Serial.begin(9600);
//将引脚2设置为输入上拉模式
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
//将开关状态数值读取到变量中
int sensorVal = digitalRead(2);
//输出开关状态数值
Serial.println(sensorVal);
//请留意在上拉模式下,按钮的逻辑状态是反的。
//即:开关断开时引脚读取到高电平。开关被按下后引脚读取到低电平。
//按钮被按下后引脚13连接的LED将被点亮。按钮没有按下时LED熄灭。
//如果按钮没有按下熄灭LED。否则点亮LED
if (sensorVal == HIGH) { //按钮没有按下
digitalWrite(13, LOW); //熄灭LED
} else { //否则
digitalWrite(13, HIGH); //点亮LED
}
}

View File

@@ -0,0 +1 @@
4ce1f3c4-b947-433a-9af5-d19c32827057

View File

@@ -0,0 +1 @@
bd724121-00b2-4d18-9d3e-aa04303b05fa

View File

@@ -0,0 +1,33 @@
/*
* 布尔变量应用示例
*
* 本示例程序演示如何使用布尔型数据变量。通过本程序Arduino将利用
* 布尔型变量存储引脚2的电平状态并根据变量数值点亮或熄灭引脚13上
* 连接的LED。
*
* 电路:
* 引脚2连接轻触开关开关另一端接地
* 引脚13上安装有开发板内置LED
*
*
* This example code is in the public domain
* 太极创客
* 2017-01-18
* www.taichi-maker.com
*/
boolean pushButton; // 创建布尔型变量
void setup() {
pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式
pinMode(13, OUTPUT); //将引脚13设置为输出模式
}
void loop() {
pushButton = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量
if (pushButton){ //根据布尔变量数值点亮或者熄灭LED
digitalWrite(13, HIGH); //布尔变量数值为真true时点亮LED
} else {
digitalWrite(13, LOW); //布尔变量数值为假false时熄灭LED
}
}

View File

@@ -0,0 +1 @@
a2cdee58-3be6-4a2e-8946-8e6131be6e24

View File

@@ -0,0 +1 @@
17816a03-895d-48be-bc13-0c25aa749347

View File

@@ -0,0 +1,45 @@
/*
* 逻辑与布尔运算
*
* 本示例程序演示逻辑与布尔运算。通过本程序Arduino将对引脚2和引脚8的电平状态
* 进行逻辑与布尔运算并根据运算结果点亮或熄灭引脚13上连接的LED。
*
* 电路:
* 引脚2连接按键开关1开关1另一端接地
* 引脚8连接按键开关2开关2另一端接地
* 引脚13上安装有开发板内置LED
*
*
* This example code is in the public domain
* 太极创客
* 2017-01-18
* www.taichi-maker.com
*/
boolean pushButton1; // 创建布尔型变量用来存储按键开关1的电平状态
boolean pushButton2; // 创建布尔型变量用来存储按键开关2的电平状态
void setup() {
pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式
pinMode(8, INPUT_PULLUP); //将引脚8设置为输入上拉模式
pinMode(13, OUTPUT); //将引脚13设置为输出模式
}
void loop() {
pushButton1 = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量
pushButton2 = digitalRead(8); //读取引脚8电平状态并将其赋值给布尔变量
if (!pushButton1 && !pushButton2){ //根据逻辑与运算结果点亮或者熄灭LED
digitalWrite(13, HIGH); //两个布尔变量数值都为假false时点亮LED
} else {
digitalWrite(13, LOW); //否则熄灭LED
}
}
/*
逻辑与运算说明
!pushButton1 = 1, !pushButton2 = 1 ---> !pushButton1 && !pushButton2 = 1
!pushButton1 = 0, !pushButton2 = 1 ---> !pushButton1 && !pushButton2 = 0
!pushButton1 = 1, !pushButton2 = 0 ---> !pushButton1 && !pushButton2 = 0
!pushButton1 = 0, !pushButton2 = 0 ---> !pushButton1 && !pushButton2 = 0
*/

View File

@@ -0,0 +1 @@
3263fb1d-c01a-431a-ae63-9dd4bf59bb2c

View File

@@ -0,0 +1,32 @@
/*
* 逻辑非布尔运算
*
* 本示例程序演示逻辑非布尔运算。通过本程序Arduino将对引脚2的电平状态
* 进行逻辑非布尔运算并根据运算结果点亮或熄灭引脚13上连接的LED。
*
* 电路:
* 引脚2连接轻触开关开关另一端接地
* 引脚13上安装有开发板内置LED
*
*
* This example code is in the public domain
* 太极创客
* 2017-01-18
* www.taichi-maker.com
*/
boolean pushButton; // 创建布尔型变量
void setup() {
pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式
pinMode(13, OUTPUT); //将引脚13设置为输出模式
}
void loop() {
pushButton = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量
if (!pushButton){ //对布尔变量进行逻辑非运算并根据运算结构点亮或者熄灭LED
digitalWrite(13, HIGH); //布尔变量数值为假false时点亮LED
} else {
digitalWrite(13, LOW); //布尔变量数值为真true时熄灭LED
}
}

View File

@@ -0,0 +1 @@
786a6580-1a7c-4d38-b982-5e804abf9d60

View File

@@ -0,0 +1,44 @@
/*
* 逻辑或布尔运算
*
* 本示例程序演示逻辑或布尔运算。通过本程序Arduino将对引脚2和引脚8的电平状态
* 进行逻辑或布尔运算并根据运算结果点亮或熄灭引脚13上连接的LED。
*
* 电路:
* 引脚2连接按键开关1开关1另一端接地
* 引脚8连接按键开关2开关2另一端接地
* 引脚13上安装有开发板内置LED
*
*
* This example code is in the public domain
* 太极创客
* 2017-01-18
* www.taichi-maker.com
*/
boolean pushButton1; // 创建布尔型变量用来存储按键开关1的电平状态
boolean pushButton2; // 创建布尔型变量用来存储按键开关2的电平状态
void setup() {
pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式
pinMode(8, INPUT_PULLUP); //将引脚8设置为输入上拉模式
pinMode(13, OUTPUT); //将引脚13设置为输出模式
}
void loop() {
pushButton1 = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量
pushButton2 = digitalRead(8); //读取引脚8电平状态并将其赋值给布尔变量
if (!pushButton1 || !pushButton2){ //根据逻辑或运算结果点亮或者熄灭LED
digitalWrite(13, HIGH); //两个布尔变量数值任何一个为假false时点亮LED
} else {
digitalWrite(13, LOW); //否则熄灭LED
}
}
/*
* 逻辑或运算说明
!pushButton1 = 1, !pushButton2 = 1 ---> !pushButton1 || !pushButton2 = 1
!pushButton1 = 0, !pushButton2 = 1 ---> !pushButton1 || !pushButton2 = 1
!pushButton1 = 1, !pushButton2 = 0 ---> !pushButton1 || !pushButton2 = 1
!pushButton1 = 0, !pushButton2 = 0 ---> !pushButton1 || !pushButton2 = 0
*/

View File

@@ -0,0 +1 @@
101e7f4d-1ffa-4b4d-be1e-a1a32e59e8ae

View File

@@ -0,0 +1 @@
8140c8a9-5d2e-4749-919b-795f9258cd7a

View File

@@ -0,0 +1,128 @@
/*
19 MC猜数字 - 1 电路搭建
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>中
MC猜数字电路测试使用。
2017-04-21
*/
void setup() {
pinMode(2, INPUT_PULLUP);
for (int i = 2; i <= 9; i++) {
pinMode(i, OUTPUT);
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = 0;
while(myNumber <= 9){
displayNumber(myNumber);
delay(500);
displayClear();
myNumber++;
while(!digitalRead(2)){
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
delay(500);
}
}
void displayClear(){
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void displayNumber(int number){
switch(number){
case 1:
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 4:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
break;
case 5:
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 6:
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 7:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 8:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 9:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 0:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
default:
digitalWrite(5, HIGH);
}
}

View File

@@ -0,0 +1 @@
9bdb9f1c-0410-4c37-8af0-f2bf3ad203c0

View File

@@ -0,0 +1 @@
db38ec89-ced3-4658-ace0-0a7371f67011

View File

@@ -0,0 +1,85 @@
/*
20 MC猜数字 - 2 LED数码管
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
20 MC猜数字 - 2 LED数码管
课程的演示实验使用。
2017-04-21
*/
void setup() {
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
// 显示 1:
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
delay(500);
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(500);
// 显示 2:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delay(500);
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(500);
// 显示 3:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(500);
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(500);
}

View File

@@ -0,0 +1 @@
85766331-29aa-40ad-bcc6-ee02b810d047

View File

@@ -0,0 +1 @@
17e4cc92-dc97-41b7-90a9-7979a74624ef

View File

@@ -0,0 +1,79 @@
/*
21 MC猜数字 - 3 while循环
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
21 MC猜数字 - 3 while循环
课程的演示实验使用。
2017-04-21
*/
void setup() {
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
void loop() {
// 显示 1:
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
delay(500);
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(500);
// 显示 2:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delay(500);
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(500);
// 显示 3:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(500);
// 清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(500);
}

View File

@@ -0,0 +1 @@
0cbe8e30-b680-4fd0-82b8-73fc8e843f38

View File

@@ -0,0 +1 @@
11c32385-01a8-4a9a-baa7-7fb70bb9a002

View File

@@ -0,0 +1,53 @@
/*
22 MC猜数字 - 4 switch case语句(1) if
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
22 MC猜数字 - 4 switch case语句
课程的演示实验使用。
2017-04-21
*/
void setup() {
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = 3;
if (myNumber == 1) {
// 显示 1:
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
}
if (myNumber == 2) {
// 显示 2:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
if (myNumber == 3) {
// 显示 3:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
}

View File

@@ -0,0 +1 @@
340a377d-0f0b-4f01-9351-b5edda1a0fdb

View File

@@ -0,0 +1,52 @@
/*
22 MC猜数字 - 4 switch case语句(2) if...else
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
22 MC猜数字 - 4 switch case语句
课程的演示实验使用。
2017-04-21
*/
void setup() {
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = 2;
if (myNumber == 1) {
// 显示 1:
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
} else if (myNumber == 2) {
// 显示 2:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
} else if (myNumber == 3) {
// 显示 3:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
}

View File

@@ -0,0 +1 @@
7aa552ae-35f0-42be-8bb5-f16efcce65d9

View File

@@ -0,0 +1,51 @@
/*
22 MC猜数字 - 4 switch case语句(3) switch
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
22 MC猜数字 - 4 switch case语句
课程的演示实验使用。
2017-04-21
*/
void setup() {
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = 9;
switch(myNumber) {
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
default:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
}

View File

@@ -0,0 +1 @@
00c6dd59-de6c-4a3b-b75c-f7b60a052166

View File

@@ -0,0 +1,63 @@
/*
22 MC猜数字 - 4 switch case语句(4) switch...random
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
22 MC猜数字 - 4 switch case语句
课程的演示实验使用。
2017-04-21
*/
void setup() {
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = random(0, 4);
switch(myNumber) {
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
default:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
delay(500);
//清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(500);
}

View File

@@ -0,0 +1 @@
e40e74b1-816a-47e8-af3d-f946ad694fbf

View File

@@ -0,0 +1 @@
f97acd02-f653-402a-8fb2-0e8cd351676b

View File

@@ -0,0 +1,62 @@
/*
23 MC猜数字 - 5 建立函数-1
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>23 MC猜数字 - 5 建立函数 课程
演示如何建立没有返回值也没有参数的用户自定义函数。
2017-04-21
*/
void setup() {
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = random(0, 4);
switch(myNumber) {
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
default:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
delay(500);
displayClear();
delay(500);
}
void displayClear(){ //清理显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}

View File

@@ -0,0 +1 @@
7a3a795a-ceea-4e2b-bf19-72368d0006f2

View File

@@ -0,0 +1,66 @@
/*
23 MC猜数字 - 5 建立函数 - 2
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>23 MC猜数字 - 5 建立函数
演示如何建立有参数的用户自定义函数。
2017-04-21
*/
void setup() {
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = random(0, 4); //产生随机1-3数字
displayNumber(myNumber); //显示数字
delay(500);
displayClear(); //清理显示
delay(500);
}
void displayNumber(int ledNumber){ //LED数码管显示数字
switch(ledNumber) {
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
default: //默认显示
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
}
void displayClear(){ //清理LED数码管显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}

View File

@@ -0,0 +1 @@
90c3ed97-b5f2-4403-a318-8c8e82c11364

View File

@@ -0,0 +1,72 @@
/*
23 MC猜数字 - 5 建立函数 - 3
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>23 MC猜数字 - 5 建立函数
演示如何建立既有返回值又有参数的用户自定义函数。
2017-04-21
*/
void setup() {
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = getRandomNumber(1, 4); //产生随机1-3数字
displayNumber(myNumber); //显示数字
delay(500);
displayClear(); //清理显示
delay(500);
}
int getRandomNumber(int minNumber, int maxNumber){ //产生随机数字
int randomNumber;
randomNumber = random(minNumber, maxNumber);
return randomNumber;
}
void displayNumber(int ledNumber){ //LED数码管显示数字
switch(ledNumber) {
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
default: //默认显示
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
}
void displayClear(){ //清理LED数码管显示内容
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}

View File

@@ -0,0 +1 @@
61c12970-6eac-4b88-b2db-efb9bb2673f6

View File

@@ -0,0 +1 @@
e62024c3-e5a7-4645-ba36-475e0074f3b7

View File

@@ -0,0 +1,222 @@
/*
* MC猜数字 Ver. 1.0
*
* 本程序用于太极创客制作的《零基础入门学用Arduino教程》中
* MC猜数字小制作。通过学习和搭建这个小装置我们希望您能够
* 学会以下内容:
*
* - LED数码管的原理和使用
* - if...else if的概念和应用
* - while循环的概念和应用
* - switch case控制语句
* - random函数的使用
* - 建立和使用自定义函数(三种形式:无参数无返回值,有参数无返回值,有参数有返回值)
* - 通过串口监视器观察调试程序运行状况
*
* 电路连接:
* 有关本制作的详细电路连接资料请参阅太极创客网站的《零基础入门学用Arduino教程》相关网页。
*
*
* 太极创客网站地址:
* www.taichi-maker.com
*
* 如您对我们有任何建议或意见,请发邮件至:
* taichimaker@163.com
*
* 同时您也可以通过我们的微信公众号以及微博获得更多太极创客的最新信息。
*
* This example code is in the public domain.
*
* 2017-04-23
*
* 注:
* 目前科学技术尚无法实现意念控制。
* 科技可以改变世界,但也有心怀不轨的人会利用科技制作
* 我们不宜察觉的装置。而这些装置会被用于赌博或诈骗。
* 我们一定要远离赌博,相信科学。:)
*/
int thisResult; //存储按键按下以后显示在数码管的数字。
int nextResult; //存储作弊数字,也就是下一次按键按下后即将显示的数字。
void setup() {
pinMode(2, INPUT_PULLUP); //2号引脚上连接有按键开关将2号引脚设置为输入上拉模式
int pinNumber = 3; //设置3-9号引脚为输出模式
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
randomSeed(analogRead(A0)); //为了每一次复位或断电后产生不同顺序的随机数字
}
// the loop function runs over and over again forever
void loop() {
if (!digitalRead(2)){ //读取2号引脚电平状态
getRandomNumber(0,10); //用户按下按键后,开始新一次猜数字游戏
}
displayNumber(thisResult); //将猜数字游戏"结果"显示在数码管中
}
/*
用户在每一次按下按键后随机产生的数字将存储于nextResult变量中。
而实际显示在数码管上的数字是thisResult变量。
当thisResult即将显示在数码管前程序会将下一次显示的数字通过
图形暗示的形式显示在数码管上。具体程序如何显示暗示图形,
请参阅displayCheat()函数说明。
*/
void getRandomNumber(int minNumber, int maxNumber){
thisResult = nextResult;
int i;
while(i < 15){
i = i + 1;
nextResult = random(0, 10);
displayRandom(); //显示随机图案,混淆注意力
delay(50 + i * 10); //让随机图案显示时间由快到慢,增加混淆
displayClear();
}
displayCheat(nextResult); //显示作弊图案,用户可通过此函数所显示的图案
//获知下次按键后将要出现在LED数码管上的数字。
//此图案是在用户每次按下按键后显示新的数字
//前的最后一次图案显示
delay(500);
displayClear();
}
//根据参数数值在LED数码管上显示数字
void displayNumber(int ledNumber){
switch(ledNumber){
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 4: //显示4
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
break;
case 5: //显示5
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 6: //显示6
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 7: //显示7
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 8: //显示8
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 9: //显示9
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 0: //显示默认
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
default:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
}
//清理显示内容
void displayClear(){
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
//显示随机图案以混淆注意力
//使作弊图案显示时不易察觉。
void displayRandom(){
int randomPin = random(3,9);
digitalWrite(randomPin, HIGH);
}
//显示作弊图案。
void displayCheat(int number){
switch(number){
case 1: // 显示数字1作弊图案
digitalWrite(3, HIGH);
break;
case 2: // 显示数字2作弊图案
digitalWrite(6, HIGH);
break;
case 3: // 显示数字3作弊图案
digitalWrite(4, HIGH); ;
break;
case 4: // 显示数字4作弊图案
digitalWrite(5, HIGH);
break;
case 5: // 显示数字5作弊图案
digitalWrite(9, HIGH);
break;
case 6: // 显示数字6作弊图案
digitalWrite(7, HIGH);
break;
case 7: // 显示数字7作弊图案
digitalWrite(8, HIGH);
break;
case 8: // 显示数字8作弊图案
digitalWrite(6, HIGH);
digitalWrite(4, HIGH);
break;
case 9: // 显示数字9作弊图案
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
break;
case 0: // 显示数字0作弊图案
digitalWrite(3, HIGH);
digitalWrite(8, HIGH);
break;
}
}

View File

@@ -0,0 +1 @@
73bf751a-8a67-440b-bc09-e354113f5452

View File

@@ -0,0 +1,128 @@
/*
24 MC猜数字 - 5 完成制作 - 1
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
24 MC猜数字 - 5 完成制作 - 1
增加显示数字为0-9
并且在串口监视器上显示
2017-04-23
*/
void setup() {
Serial.begin(9600);
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
}
// the loop function runs over and over again forever
void loop() {
int myNumber = getRandomNumber(0, 10);
displayNumber(myNumber);
delay(500);
displayClear();
delay(500);
}
int getRandomNumber(int minNumber, int maxNumber){
int randomNumber;
randomNumber = random(minNumber, maxNumber);
Serial.print("randomNumber = ");
Serial.println(randomNumber);
Serial.println("");
return randomNumber;
}
void displayNumber(int ledNumber){
switch(ledNumber){
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 4: //显示4
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
break;
case 5: //显示5
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 6: //显示6
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 7: //显示7
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 8: //显示8
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 9: //显示9
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 0: //显示0
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
default: //显示默认
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
}
void displayClear(){
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}

View File

@@ -0,0 +1 @@
0e3a4f60-4e80-4736-97b6-b28b15e566a0

View File

@@ -0,0 +1,143 @@
/*
24 MC猜数字 - 5 完成制作 - 2
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
24 MC猜数字 - 5 完成制作 - 2
修改了getRandomNumber函数。目前该函数每次调用后将显示5个随机数字。
这五个随机数字将通过串口监视器显示出来。并且最后一个随机数字将显示在LED数码管上。
2017-04-23
*/
void setup() {
Serial.begin(9600);
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
randomSeed(analogRead(A0));
}
// the loop function runs over and over again forever
void loop() {
int myNumber = getRandomNumber(0, 10);
displayNumber(myNumber);
delay(5000);
displayClear();
delay(500);
}
int getRandomNumber(int minNumber, int maxNumber){
int randomNumber;
int i;
while(i < 5){
i = i + 1;
randomNumber = random(minNumber,maxNumber);
displayNumber(randomNumber);
delay(100);
displayClear();
delay(100);
Serial.print("i = ");
Serial.println(i);
Serial.print("randomNumber = ");
Serial.println(randomNumber);
Serial.println("");
}
return randomNumber;
}
void displayNumber(int ledNumber){
switch(ledNumber){
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 4: //显示4
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
break;
case 5: //显示5
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 6: //显示6
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 7: //显示7
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 8: //显示8
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 9: //显示9
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 0: //显示0
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
default: //显示默认
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
}
void displayClear(){
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}

View File

@@ -0,0 +1 @@
9695a903-5413-46f9-b14a-d30327b02864

View File

@@ -0,0 +1,149 @@
/*
24 MC猜数字 - 5 完成制作 - 3
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
24 MC猜数字 - 5 完成制作 - 3
每次按键后闪动随机图案,最后停留在一个数字上面
此版本已基本实现猜数字游戏装置功能。
2017-04-23
*/
int myNumber;
void setup() {
pinMode(2, INPUT_PULLUP);
Serial.begin(9600);
int pinNumber = 3;
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
randomSeed(analogRead(A0));
}
// the loop function runs over and over again forever
void loop() {
if (!digitalRead(2)){
myNumber = getRandomNumber(0, 10);
}
displayNumber(myNumber);
}
int getRandomNumber(int minNumber, int maxNumber){
int randomNumber;
int i;
while(i < 15){
i = i + 1;
randomNumber = random(minNumber,maxNumber);
//displayNumber(randomNumber);
displayRandom();
delay(100);
displayClear();
delay(100);
Serial.print("i = ");
Serial.println(i);
Serial.print("randomNumber = ");
Serial.println(randomNumber);
Serial.println("");
}
return randomNumber;
}
void displayNumber(int ledNumber){
switch(ledNumber){
case 1: //显示1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: //显示2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: //显示3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 4: //显示4
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
break;
case 5: //显示5
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 6: //显示6
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 7: //显示7
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 8: //显示8
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 9: //显示9
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 0: //显示默认
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
default:
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
}
void displayClear(){
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void displayRandom(){
int randomPin = random(3,9);
digitalWrite(randomPin, HIGH);
}

View File

@@ -0,0 +1 @@
2d1ff133-49b8-492b-8f46-d8a40e480069

View File

@@ -0,0 +1 @@
5dc80687-77d6-4251-9d93-acaa9ff71abd

View File

@@ -0,0 +1,43 @@
/*
25 模拟输出1 - analogWrite
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
25 模拟输出1 - analogWrite
演示如何通过两个按键开关通过analogWrite指令
进行模拟输出操作。具体电路和其它信息请参考
太极创客网站本教程相关页面。
2017-04-28
*/
boolean pushButton1; // 创建布尔型变量用来存储按键开关1的电平状态
boolean pushButton2; // 创建布尔型变量用来存储按键开关2的电平状态
int ledPin = 9; //LED引脚号
int brightness = 128; //LED亮度参数
void setup() {
// put your setup code here, to run once:
pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式
pinMode(8, INPUT_PULLUP); //将引脚8设置为输入上拉模式
pinMode(ledPin, OUTPUT); //将LED引脚设置为输出模式
Serial.begin(9600); //启动串口通讯
}
void loop() {
// put your main code here, to run repeatedly:
pushButton1 = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量
pushButton2 = digitalRead(8); //读取引脚8电平状态并将其赋值给布尔变量
if (!pushButton1 && brightness > 0){ // 当按下按键开关1并且LED亮度参数大于0
brightness--; // 减低LED亮度参数
//brightness-- 相当于 brightness = brightness - 1;
} else if (!pushButton2 && brightness < 255) { //当按下按键开关2并且LED亮度参数小于255
brightness++; //增加LED亮度参数
//brightness++ 相当于 brightness = brightness + 1;
}
analogWrite(ledPin, brightness); //模拟输出控制LED亮度
Serial.println(brightness); //将LED亮度参数显示在串口监视器上
delay(10);
}

View File

@@ -0,0 +1 @@
381193fe-ea51-49c5-ac5f-15b96e88bc27

View File

@@ -0,0 +1 @@
19696a5b-9d0f-4a42-ad42-d17c65069b61

View File

@@ -0,0 +1,32 @@
/*
27 模拟输出3 - for
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
27 模拟输出3 - for
演示如何通过for循环语句实现LED明暗交替呼吸灯效果。
2017-04-28
*/
void setup() {
pinMode(9, OUTPUT); //设置9号引脚为输出模式
Serial.begin(9600); //启动串口通讯
}
void loop() {
// LED由暗到明
for (int brightness = 0; brightness <= 255; brightness++){
analogWrite(9, brightness);
Serial.println(brightness);
delay(10);
}
// LED由明到暗
for (int brightness = 255; brightness >=0 ; brightness--){
analogWrite(9, brightness);
Serial.println(brightness);
delay(10);
}
}

View File

@@ -0,0 +1 @@
be794239-9b7a-4c2c-9d2e-685215064103

View File

@@ -0,0 +1,32 @@
/*
27 模拟输出3 - for-2
太极创客
www.taichi-maker.com
此程序用于太极创客<<零基础入门学用Arduino教程>>
27 模拟输出3 - for-2
演示如何通过修改for循环语句表达式来调整程序运行状态。
2017-04-28
*/
void setup() {
pinMode(9, OUTPUT); //设置9号引脚为输出模式
Serial.begin(9600); //启动串口通讯
}
void loop() {
// LED由暗到明
for (int brightness = 0; brightness <= 255; brightness+=5){
analogWrite(9, brightness);
Serial.println(brightness);
delay(10);
}
// LED由明到暗
for (int brightness = 255; brightness >=0 ; brightness-=5){
analogWrite(9, brightness);
Serial.println(brightness);
delay(10);
}
}

View File

@@ -0,0 +1 @@
0b9e8643-efff-4015-b874-5af1381542c2

View File

@@ -0,0 +1 @@
0319c1b5-fda1-4821-a831-e8511e940c46

View File

@@ -0,0 +1,30 @@
/*
模拟输入
本程序旨在演示如何使用analogRead()读取Arduino的引脚电平。
通过调节电位器, A0引脚的输入电压将在0V5V之间。
该输入电压将被映射到数值0-1023之间并显示在串口监视器中。
电路连接:
电位器中间引脚连接到模拟输入A0引脚
电位器两端引脚分别连接在Arduino +5V和接地引脚
太极创客 www.taichi-maker.com
2017-01-08
This example code is in the public domain.
*/
void setup() {
// 串口通讯初始化(9600 bps):
Serial.begin(9600);
}
void loop() {
// 读取模拟输入值:
int analogInputVal = analogRead(A0);
// 将结果通过串口监视器显示:
Serial.println(analogInputVal);
}

View File

@@ -0,0 +1 @@
6211f243-27b6-4d8e-b3cf-ecb4f4109b9b

View File

@@ -0,0 +1 @@
9cce2d5e-9e5c-43b8-919e-69a927fe0ee2

View File

@@ -0,0 +1,42 @@
/*
电位器模拟输出
读取模拟输入引脚并将读取到的数值映射到0 - 255之间。然后用该映射结果设置
引脚9的LED亮度同时通过串口监视器显示这一映射结果。
电路连接:
电位器中间引脚连接到模拟输入A0引脚
电位器两端引脚分别连接在Arduino +5V和接地引脚
* LED正极通过 限流电阻连接在Arduino的9号引脚
LED负极接地
太极创客
2017-01-08
<blockquote data-secret="W1T9d0SaZ7" class="wp-embedded-content"><a href="http://www.taichi-maker.com/">欢迎来到太极创客网站!</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" src="http://www.taichi-maker.com/embed/#?secret=W1T9d0SaZ7" data-secret="W1T9d0SaZ7" width="600" height="338" title="《欢迎来到太极创客网站!》—太极创客" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
This example code is in the public domain.
*/
void setup() {
Serial.begin(9600); // 串口通讯初始化(9600 bps)
pinMode(9, OUTPUT); // 设置9号引脚为输出模式
}
void loop() {
int analogInputVal = analogRead(A0); // 读取模拟输入值
int brightness = map(analogInputVal, 0, 1023, 0, 255); //将模拟输入数值0 - 1023等比映射到模拟输出数值区间0-255
analogWrite(9, brightness); //根据模拟输入值调节LED亮度
// 将结果通过串口监视器显示:
Serial.print("analogInputVal = ");
Serial.println(analogInputVal);
Serial.print("brightness = ");
Serial.println(brightness);
Serial.println("");
}

View File

@@ -0,0 +1 @@
8d37103d-6aea-4fb5-b058-8f29a19b4c2a

View File

@@ -0,0 +1 @@
265bb6c1-15dd-496c-8a5a-a9ab7317d348

View File

@@ -0,0 +1,46 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
反复的点亮LED一秒钟然后关闭LED一秒钟。
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino model, check
the Technical Specs of your board at https://www.arduino.cc/en/Main/Products
很多Arduino开发板上带有一个你可以控制的LED. 在UNO, MEGA 和 ZERO型号的开发板上
这个LED连在了引脚13上。 在MKR1000型号的开发板上这个连在了引脚上。无论使用哪
种型号的开发板LED_BUILTIN可以代表正确的LED引脚编号。
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
注释中文翻译:太极创客
www.taichi-maker.com
*/
// the setup function runs once when you press reset or power the board
//当你给开发板通电后或者按下复位按钮后setup函数运行一次。
void setup() {
// initialize digital pin LED_BUILTIN as an output.
// 初始化LED_BUILTIN数字引脚为输出模式
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
// loop 函数永远会反复的运行
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // 点亮LED高电平turn the LED on (HIGH is the voltage level)
delay(1000); // 等待1秒 wait for a second
digitalWrite(LED_BUILTIN, LOW); // 将电平设置为低来熄灭LED turn the LED off by making the voltage LOW
delay(1000); // 等待1秒 wait for a second
}

View File

@@ -0,0 +1 @@
e840df71-6c84-4814-a1d3-6ff177c80233

View File

@@ -0,0 +1 @@
5f3c6951-e0af-4c70-bb05-65f382250a86

View File

@@ -0,0 +1,48 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
反复的点亮LED一秒钟然后关闭LED一秒钟。
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino model, check
the Technical Specs of your board at https://www.arduino.cc/en/Main/Products
很多Arduino开发板上带有一个你可以控制的LED. 在UNO, MEGA 和 ZERO型号的开发板上
这个LED连在了引脚13上。 在MKR1000型号的开发板上这个连在了引脚上。无论使用哪
种型号的开发板LED_BUILTIN可以代表正确的LED引脚编号。
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
注释中文翻译:太极创客
www.taichi-maker.com
*/
int delayTime;
// the setup function runs once when you press reset or power the board
//当你给开发板通电后或者按下复位按钮后setup函数运行一次。
void setup() {
// initialize digital pin LED_BUILTIN as an output.
// 初始化LED_BUILTIN数字引脚为输出模式
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
// loop 函数永远会反复的运行
void loop() {
delayTime = delayTime + 1000;
digitalWrite(LED_BUILTIN, HIGH); // 点亮LED高电平turn the LED on (HIGH is the voltage level)
delay(1000); // 等待1秒 wait for a second
digitalWrite(LED_BUILTIN, LOW); // 将电平设置为低来熄灭LED turn the LED off by making the voltage LOW
delay(1000); // 等待1秒 wait for a second
}

View File

@@ -0,0 +1 @@
44f61638-c91f-4f5c-a2d1-d616da9ae7ac

View File

@@ -0,0 +1 @@
96b107ca-f84f-4e08-b7ae-2cc30a37d8c9

View File

@@ -0,0 +1,46 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
反复的点亮LED一秒钟然后关闭LED一秒钟。
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino model, check
the Technical Specs of your board at https://www.arduino.cc/en/Main/Products
很多Arduino开发板上带有一个你可以控制的LED. 在UNO, MEGA 和 ZERO型号的开发板上
这个LED连在了引脚13上。 在MKR1000型号的开发板上这个连在了引脚上。无论使用哪
种型号的开发板LED_BUILTIN可以代表正确的LED引脚编号。
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
注释中文翻译:太极创客
www.taichi-maker.com
*/
// the setup function runs once when you press reset or power the board
//当你给开发板通电后或者按下复位按钮后setup函数运行一次。
void setup() {
// initialize digital pin LED_BUILTIN as an output.
// 初始化LED_BUILTIN数字引脚为输出模式
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
// loop 函数永远会反复的运行
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // 点亮LED高电平turn the LED on (HIGH is the voltage level)
delay(1000); // 等待1秒 wait for a second
digitalWrite(LED_BUILTIN, LOW); // 将电平设置为低来熄灭LED turn the LED off by making the voltage LOW
delay(1000); // 等待1秒 wait for a second
}

View File

@@ -0,0 +1 @@
5bd7c8f1-f0c9-46b4-9fc5-8b98d22712a9

View File

@@ -0,0 +1 @@
03135306-03a2-472a-a067-57d67b1552b2

View File

@@ -0,0 +1,46 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
反复的点亮LED一秒钟然后关闭LED一秒钟。
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino model, check
the Technical Specs of your board at https://www.arduino.cc/en/Main/Products
很多Arduino开发板上带有一个你可以控制的LED. 在UNO, MEGA 和 ZERO型号的开发板上
这个LED连在了引脚13上。 在MKR1000型号的开发板上这个连在了引脚上。无论使用哪
种型号的开发板LED_BUILTIN可以代表正确的LED引脚编号。
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
注释中文翻译:太极创客
www.taichi-maker.com
*/
// the setup function runs once when you press reset or power the board
//当你给开发板通电后或者按下复位按钮后setup函数运行一次。
void setup() {
// initialize digital pin LED_BUILTIN as an output.
// 初始化LED_BUILTIN数字引脚为输出模式
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
// loop 函数永远会反复的运行
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // 点亮LED高电平turn the LED on (HIGH is the voltage level)
delay(1000); // 等待1秒 wait for a second
digitalWrite(LED_BUILTIN, LOW); // 将电平设置为低来熄灭LED turn the LED off by making the voltage LOW
delay(1000); // 等待1秒 wait for a second
}

View File

@@ -0,0 +1 @@
e4a68fa0-c5da-4b17-8b94-7de63d81efbe

View File

@@ -0,0 +1,128 @@
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WebServer.h>
#include <FS.h>
ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象,对象名称是 'wifiMulti'
ESP8266WebServer esp8266_server(80); // 建立网络服务器对象该对象用于响应HTTP请求。监听端口80
void setup() {
Serial.begin(9600); // 启动串口通讯
Serial.println("");
pinMode(LED_BUILTIN, OUTPUT); // 初始化NodeMCU控制板载LED引脚为OUTPUT
digitalWrite(LED_BUILTIN, HIGH);// 初始化LED引脚状态
wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1"); // 将需要连接的一系列WiFi ID和密码输入这里
wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); // ESP8266-NodeMCU再启动后会扫描当前网络
wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); // 环境查找是否有这里列出的WiFi ID。如果有
Serial.println("Connecting ..."); // 则尝试使用此处存储的密码进行连接。
int i = 0;
while (wifiMulti.run() != WL_CONNECTED) { // 尝试进行wifi连接。
delay(1000);
Serial.print(i++); Serial.print(' ');
}
// WiFi连接成功后将通过串口监视器输出连接成功信息
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID()); // 通过串口监视器输出连接的WiFi名称
Serial.print("IP address:\t");
Serial.println(WiFi.localIP()); // 通过串口监视器输出ESP8266-NodeMCU的IP
if(SPIFFS.begin()){ // 启动闪存文件系统
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
esp8266_server.on("/setLED", handleLED);
esp8266_server.on("/readADC", handleADC);
esp8266_server.onNotFound(handleUserRequest); // 处理其它网络请求
// 启动网站服务
esp8266_server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
esp8266_server.handleClient();
}
void handleLED() {
String ledState = "OFF";
String LED_State = esp8266_server.arg("LEDstate"); //参考xhttp.open("GET", "setLED?LEDstate="+led, true);
Serial.println(LED_State);
if(LED_State == "1"){
digitalWrite(LED_BUILTIN,LOW); //LED 点亮
ledState = "ON"; //反馈参数
} else {
digitalWrite(LED_BUILTIN,HIGH); //LED 熄灭
ledState = "OFF"; //反馈参数
}
esp8266_server.send(200, "text/plain", ledState); //发送网页
}
void handleADC() {
int a = analogRead(A0);
String adcValue = String(a);
esp8266_server.send(200, "text/plain", adcValue); //发送模拟输入引脚到客户端ajax请求
}
// 处理用户浏览器的HTTP访问
void handleUserRequest() {
// 获取用户请求资源(Request Resource
String reqResource = esp8266_server.uri();
Serial.print("reqResource: ");
Serial.println(reqResource);
// 通过handleFileRead函数处处理用户请求资源
bool fileReadOK = handleFileRead(reqResource);
// 如果在SPIFFS无法找到用户访问的资源则回复404 (Not Found)
if (!fileReadOK){
esp8266_server.send(404, "text/plain", "404 Not Found");
}
}
bool handleFileRead(String resource) { //处理浏览器HTTP访问
if (resource.endsWith("/")) { // 如果访问地址以"/"为结尾
resource = "/index.html"; // 则将访问地址修改为/index.html便于SPIFFS访问
}
String contentType = getContentType(resource); // 获取文件类型
if (SPIFFS.exists(resource)) { // 如果访问的文件可以在SPIFFS中找到
File file = SPIFFS.open(resource, "r"); // 则尝试打开该文件
esp8266_server.streamFile(file, contentType);// 并且将该文件返回给浏览器
file.close(); // 并且关闭文件
return true; // 返回true
}
return false; // 如果文件未找到则返回false
}
// 获取文件类型
String getContentType(String filename){
if(filename.endsWith(".htm")) return "text/html";
else if(filename.endsWith(".html")) return "text/html";
else if(filename.endsWith(".css")) return "text/css";
else if(filename.endsWith(".js")) return "application/javascript";
else if(filename.endsWith(".png")) return "image/png";
else if(filename.endsWith(".gif")) return "image/gif";
else if(filename.endsWith(".jpg")) return "image/jpeg";
else if(filename.endsWith(".ico")) return "image/x-icon";
else if(filename.endsWith(".xml")) return "text/xml";
else if(filename.endsWith(".pdf")) return "application/x-pdf";
else if(filename.endsWith(".zip")) return "application/x-zip";
else if(filename.endsWith(".gz")) return "application/x-gzip";
return "text/plain";
}

View File

@@ -0,0 +1 @@
23810dcb-e110-4ab0-90bc-89f7d4510f92

View File

@@ -0,0 +1 @@
45fbab3c-e223-42b3-a8bb-6d993c815119

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>太极创客-零基础入门学用物联网教程</title>
</head>
<body>
<center>
<a href="http://www.taichi-maker.com" target="_blank"><img src="/img/taichi-maker.jpg" alt="太极创客"></a>
<div id="demo">
<h1>以下按钮可控制ESP8266开发板引脚</h1>
<br>
<button type="button" onclick="sendData(1)">点亮 LED</button>
<button type="button" onclick="sendData(0)">关闭 LED</button><br>
</div>
<div>
LED引脚状态 : <span id="LEDState">NA</span><br>
</div>
<br><br>
<div id="demo">
<h1>以下为模拟输入引脚A0的实时读数</h1>
<div>
A0引脚读数 : <span id="ADCValue">0</span><br>
</div>
<p>此页面用于演示如何通过网页控制LED引脚以及将A0引脚读数实时显示于网页中。</p>
<p>本教程可在太极创客网站免费获取。太极创客网址: <a href="http://www.taichi-maker.com" target="_blank">www.taichi-maker.com</a></p>
<script>
function sendData(led) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("LEDState").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "setLED?LEDstate="+led, true);
xhttp.send();
}
setInterval(function() {
// Call a function repetatively with 2 Second interval
getData();
}, 2000); //2000mSeconds update rate
function getData() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("ADCValue").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "readADC", true);
xhttp.send();
}
</script>
</center>
</body>
</html>

View File

@@ -0,0 +1 @@
f2c2e01d-722f-4ed9-967f-a80d1a40d0dd

View File

@@ -0,0 +1,139 @@
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WebServer.h>
#include <FS.h>
ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象,对象名称是 'wifiMulti'
ESP8266WebServer esp8266_server(80); // 建立网络服务器对象该对象用于响应HTTP请求。监听端口80
File fsUploadFile; // 建立文件对象用于闪存文件上传
void setup() {
Serial.begin(9600);
Serial.println("");
wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1"); // 将需要连接的一系列WiFi ID和密码输入这里
wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); // ESP8266-NodeMCU再启动后会扫描当前网络
wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); // 环境查找是否有这里列出的WiFi ID。如果有
Serial.println("Connecting ..."); // 则尝试使用此处存储的密码进行连接。
int i = 0;
while (wifiMulti.run() != WL_CONNECTED) { // 尝试进行wifi连接。
delay(1000);
Serial.print(i++); Serial.print('.');
}
// WiFi连接成功后将通过串口监视器输出连接成功信息
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID()); // 通过串口监视器输出连接的WiFi名称
Serial.print("IP address:\t");
Serial.println(WiFi.localIP()); // 通过串口监视器输出ESP8266-NodeMCU的IP
if(SPIFFS.begin()){ // 启动闪存文件系统
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
esp8266_server.on("/upload.html", // 如果客户端通过upload页面
HTTP_POST, // 向服务器发送文件(请求方法POST)
respondOK, // 则回复状态码 200 给客户端
handleFileUpload);// 并且运行处理文件上传函数
esp8266_server.onNotFound(handleUserRequest);
esp8266_server.begin(); // 启动网站服务
Serial.println("HTTP server started");
}
void loop() {
esp8266_server.handleClient();
}
// 处理上传文件函数
void handleFileUpload(){
HTTPUpload& upload = esp8266_server.upload();
if(upload.status == UPLOAD_FILE_START){ // 如果上传状态为UPLOAD_FILE_START
String filename = upload.filename; // 建立字符串变量用于存放上传文件名
if(!filename.startsWith("/")) filename = "/" + filename; // 为上传文件名前加上"/"
Serial.println("File Name: " + filename); // 通过串口监视器输出上传文件的名称
fsUploadFile = SPIFFS.open(filename, "w"); // 在SPIFFS中建立文件用于写入用户上传的文件数据
} else if(upload.status == UPLOAD_FILE_WRITE){ // 如果上传状态为UPLOAD_FILE_WRITE
if(fsUploadFile)
fsUploadFile.write(upload.buf, upload.currentSize); // 向SPIFFS文件写入浏览器发来的文件数据
} else if(upload.status == UPLOAD_FILE_END){ // 如果上传状态为UPLOAD_FILE_END
if(fsUploadFile) { // 如果文件成功建立
fsUploadFile.close(); // 将文件关闭
Serial.println(" Size: "+ upload.totalSize); // 通过串口监视器输出文件大小
esp8266_server.sendHeader("Location","/success.html"); // 将浏览器跳转到/success.html成功上传页面
esp8266_server.send(303); // 发送相应代码303重定向到新页面
} else { // 如果文件未能成功建立
Serial.println("File upload failed"); // 通过串口监视器输出报错信息
esp8266_server.send(500, "text/plain", "500: couldn't create file"); // 向浏览器发送相应代码500服务器错误
}
}
}
//回复状态码 200 给客户端
void respondOK(){
esp8266_server.send(200);
}
// 处理用户浏览器的HTTP访问
void handleUserRequest(){
// 获取用户请求网址信息
String webAddress = esp8266_server.uri();
// 通过handleFileRead函数处处理用户访问
bool fileReadOK = handleFileRead(webAddress);
// 如果在SPIFFS无法找到用户访问的资源则回复404 (Not Found)
if (!fileReadOK){
esp8266_server.send(404, "text/plain", "404 Not Found");
}
}
bool handleFileRead(String path) { //处理浏览器HTTP访问
if (path.endsWith("/")) { // 如果访问地址以"/"为结尾
path = "/index.html"; // 则将访问地址修改为/index.html便于SPIFFS访问
}
String contentType = getContentType(path); // 获取文件类型
if (SPIFFS.exists(path)) { // 如果访问的文件可以在SPIFFS中找到
File file = SPIFFS.open(path, "r"); // 则尝试打开该文件
esp8266_server.streamFile(file, contentType);// 并且将该文件返回给浏览器
file.close(); // 并且关闭文件
return true; // 返回true
}
return false; // 如果文件未找到则返回false
}
// 获取文件类型
String getContentType(String filename){
if(filename.endsWith(".htm")) return "text/html";
else if(filename.endsWith(".html")) return "text/html";
else if(filename.endsWith(".css")) return "text/css";
else if(filename.endsWith(".js")) return "application/javascript";
else if(filename.endsWith(".png")) return "image/png";
else if(filename.endsWith(".gif")) return "image/gif";
else if(filename.endsWith(".jpg")) return "image/jpeg";
else if(filename.endsWith(".ico")) return "image/x-icon";
else if(filename.endsWith(".xml")) return "text/xml";
else if(filename.endsWith(".pdf")) return "application/x-pdf";
else if(filename.endsWith(".zip")) return "application/x-zip";
else if(filename.endsWith(".gz")) return "application/x-gzip";
return "text/plain";
}

View File

@@ -0,0 +1 @@
8fd89742-7fa9-406e-88af-5b777aaedf96

View File

@@ -0,0 +1 @@
843e65e3-1a68-48c7-b2a0-6b4bcf27034d

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="main.css">
<title>太极创客-零基础入门学用物联网教程</title>
</head>
<body>
<center>
<a href="http://www.taichi-maker.com" target="_blank"><img src="/img/taichi-maker.jpg" alt="太极创客"></a>
<h1>ESP8266 SPIFFS 文件上传</h1>
<p>此页面用于演示如何通过浏览器向ESP8266开发板的SPIFFS上传文件。</p>
<p></p>
<p>本教程可在太极创客网站免费获取。太极创客网址: <a href="http://www.taichi-maker.com">www.taichi-maker.com</a> .
<p> <a href="/upload.html">点击此处进入文件上传页面</a> </p>
</center>
</body>
</html>

View File

@@ -0,0 +1,4 @@
body {
font-family: sans-serif;
color: #444;
}

View File

@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="main.css">
<title>太极创客-零基础入门学用物联网教程</title>
</head>
<body>
<a href="http://www.taichi-maker.com" target="_blank"><img src="/img/taichi-maker.jpg" alt="太极创客"></a>
<h1>ESP8266 SPIFFS 文件上传成功</h1>
<p><a href="/">返回首页</a></p>
</body>
</html>

View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="main.css">
<title>太极创客-零基础入门学用物联网教程</title>
</head>
<body>
<center>
<a href="http://www.taichi-maker.com" target="_blank"><img src="/img/taichi-maker.jpg" alt="太极创客"></a>
<h1>ESP8266 SPIFFS 文件上传</h1>
<p>点击按钮选择需要上传的文件</p>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="data">
<input class="button" type="submit" value="上传">
</form>
</center>
</body>
</html>

View File

@@ -0,0 +1 @@
610bc272-e001-4b70-b397-ddefbec96981

View File

@@ -0,0 +1 @@
8827daee-485e-4012-a0c9-4d4f85222032

View File

@@ -0,0 +1,112 @@
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WebServer.h>
#include <FS.h>
ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象
ESP8266WebServer esp8266_server(80);// 建立esp8266网站服务器对象
void setup() {
Serial.begin(115200);
Serial.println("");
pinMode(LED_BUILTIN, OUTPUT); // 设置开发板内置LED引脚为输出模式
wifiMulti.addAP("bmy", "lb714500"); // 将需要连接的一系列WiFi ID和密码输入这里
Serial.println("Connecting ..."); // 则尝试使用此处存储的密码进行连接。
int i = 0;
while (wifiMulti.run() != WL_CONNECTED) { // 尝试进行wifi连接。
delay(1000);
Serial.print(i++); Serial.print(' ');
}
// WiFi连接成功后将通过串口监视器输出连接成功信息
Serial.println('\n');
Serial.print("Connected to ");
Serial.println(WiFi.SSID()); // 通过串口监视器输出连接的WiFi名称
Serial.print("IP address:\t");
Serial.println(WiFi.localIP()); // 通过串口监视器输出ESP8266-NodeMCU的IP
if(SPIFFS.begin()){ // 启动闪存文件系统
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
//初始化网络服务器
esp8266_server.on("/setLED",handlePWM); // 处理PWM设置请求
esp8266_server.onNotFound(handleUserRequest); // 处理网络请求
// 启动网站服务
esp8266_server.begin();
Serial.println("HTTP server started");
}
void loop() {
esp8266_server.handleClient(); // 处理客户端请求
}
// 处理PWM设置请求并对引脚进行PWM设置
void handlePWM(){
String pwmStr = esp8266_server.arg("pwm"); // 获取用户请求中的PWM数值
int pwmVal = pwmStr.toInt(); // 将用户请求中的PWM数值转换为整数
Serial.print("pwmVal ====== ");
Serial.println(pwmVal);
analogWrite(LED_BUILTIN, pwmVal); // 实现PWM引脚设置
esp8266_server.send(200, "text/plain");//向客户端发送200响应信息
}
// 处理用户浏览器的HTTP访问
void handleUserRequest() {
// 获取用户请求资源(Request Resource
String reqResource = esp8266_server.uri();
Serial.print("reqResource: ");
Serial.println(reqResource);
// 通过handleFileRead函数处处理用户请求资源
bool fileReadOK = handleFileRead(reqResource);
// 如果在SPIFFS无法找到用户访问的资源则回复404 (Not Found)
if (!fileReadOK){
esp8266_server.send(404, "text/plain", "404 Not Found");
}
}
bool handleFileRead(String resource) { //处理浏览器HTTP访问
if (resource.endsWith("/")) { // 如果访问地址以"/"为结尾
resource = "/index.html"; // 则将访问地址修改为/index.html便于SPIFFS访问
}
String contentType = getContentType(resource); // 获取文件类型
if (SPIFFS.exists(resource)) { // 如果访问的文件可以在SPIFFS中找到
File file = SPIFFS.open(resource, "r"); // 则尝试打开该文件
esp8266_server.streamFile(file, contentType);// 并且将该文件返回给浏览器
file.close(); // 并且关闭文件
return true; // 返回true
}
return false; // 如果文件未找到则返回false
}
// 获取文件类型
String getContentType(String filename){
if(filename.endsWith(".htm")) return "text/html";
else if(filename.endsWith(".html")) return "text/html";
else if(filename.endsWith(".css")) return "text/css";
else if(filename.endsWith(".js")) return "application/javascript";
else if(filename.endsWith(".png")) return "image/png";
else if(filename.endsWith(".gif")) return "image/gif";
else if(filename.endsWith(".jpg")) return "image/jpeg";
else if(filename.endsWith(".ico")) return "image/x-icon";
else if(filename.endsWith(".xml")) return "text/xml";
else if(filename.endsWith(".pdf")) return "application/x-pdf";
else if(filename.endsWith(".zip")) return "application/x-zip";
else if(filename.endsWith(".gz")) return "application/x-gzip";
return "text/plain";
}

View File

@@ -0,0 +1 @@
ac01c4c1-3211-480e-8501-216be22ecd8c

View File

@@ -0,0 +1 @@
3e46a81c-ab84-4c88-a8de-a866c0a70aba

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>太极创客-零基础入门学用物联网教程</title>
<script src="jquery.min.js"></script>
<script src="knob.js"></script>
<script>
$(".dial").trigger("configure", {
min: 0,
max: 255,
width: 150,
fgColor: "#ffec03",
skin: "tron",
thickness: 0.2,
displayPrevious: true,
cursor: true,
});
</script>
</head>
<body>
<center>
<a href="http://www.taichi-maker.com" target="_blank"
><img src="/img/taichi-maker.jpg" alt="太极创客"
/></a>
<h1>以下旋钮可控制ESP8266开发板LED亮度</h1>
<input
type="text"
class="dial"
data-displayPrevious="true"
data-fgColor="#00A8A9"
data-thickness=".3"
value="29"
/>
<script>
$(".dial").knob({
change: function (v) {
console.log(Math.round(v, 0));
$.ajax({
url: "/setLED?pwm=" + Math.round(v, 0),
success: function (result) {
$("#div1").html(result);
},
});
},
});
</script>
<p style="text-align: center">
此页面用于演示如何通过网页控制ESP8266引脚的PWM数值。
本教程可在太极创客网站免费获取。
</p>
<p style="text-align: center">
太极创客网址:
<a href="http://www.taichi-maker.com" target="_blank"
>www.taichi-maker.com</a
>
</p>
</center>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More