Arduino语法是基于C++的语法,C++又是c基础上增加了面向对象思想等进阶语言。那就只记录没见过的。
pinMode(pin,Mode):
参数:
Pin:引脚号;
Mode:INPUT、OUTPUT
digitalWrite(pin,value)
参数:
Pin:引脚号 ;
value:HIGH LOW
int digitalRead(pin)
参数:
Pin:引脚号
返回值:
int:1/0
int analogRead(pin)
参数:
Pin:引脚号
返回值:
二进制数值返回(0-1023)对应为0~5v
analogWrite(pin,value)
参数:
pin:引脚号 ;
value:具体的pwm值,(0~255对应表示一个周期的高电平占空比)
shiftOut(dataPin,clockPin,bitOrder,value)
参数:
dataPin:数据引脚
clockPin:时钟引脚
bitOrder:移位顺序(MSBFIRST-高;LSBFIRST-低)
value:需要进行移位传输的值
说明:
在输出数据时,当一位数据写入数据输出引脚时,时钟引脚将输出脉冲信号,指示该位数据已被写入数据输出引脚等待外设读取。并且在使用本函数之前datapin和clockpin引脚应该设置为输出状态。本函数一次只能输出一个字节的内容,也就是说最大一次只能输出255,如果大于255,就要多次调用这个函数。
unsigned long mills()
返回值:
unsigned long 单位:ms
delay(number)
参数:
number:其代表占用单片机的时间长度
delay Microseconds( number)
参数:
number:其代表占用单片机的时间
pulseIn(pin,state,timeout)
参数:
pin:模拟引脚号
state:读取脉冲的类型(高或者低)
timeout:等待脉冲读取完成的最长时间,如果参数中没有这一个,那么默认就是1min
函数原型:
map(value, fromLow, fromHigh, toLow, toHigh)
value:要映射的数
fromLow:当前值范围的下限
fromHigh:当前值范围的下限
toLow:目标值范围的下限
toHigh:目标值范围的上限
返回值:映射后的值
eg: (读取IO0的模拟电压(01023),并将其设置到IO9(0255)(其实也就是PWM))
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
设置串口波特率:
Serial.begin(9600);
读取某IO口参数:
int buttonState = digitalRead(pushButton);
读取A0脚输入值大小(0-5V对应0~1023):
int sensorValue = analogRead(A0);
串口显示器输出:
Serial.println()
产生pwm信号:
analogWrite(pin, val)//val 是 0~255 的整数值,对应电压从 0 到+5V
面包板用来快速搭接电路的工具;
优点:提高实验效率,减少实验故障发生率。
杜邦线用来连接元件,分为母母线,公母线,公公线(我目前没遇到过要使用公线的情况,所以买了一些母母线连接)
bug:
上传失败: 未提供上传端口
拿捏,粉色运行灯,蓝色是D2引脚的LED,板子上只有一个区,所以在代码中直接写整型即可。
//定义LED引脚
int LED_PIN=2;
void setup() {
// 开发板通电或者复位后执行,通常用来初始化,只运行一次
// 设定引脚为输出模式
pinMode(LED_PIN,OUTPUT);
// 点亮LED
digitalWrite(LED_PIN,HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
//一个死循环,不断的重复运行
}
Arduino已经集成了Wi-Fi模块,因此我们可以直接使用该模块。模块包含热点AP模式
和客户端STA模式
,
热点AP
是指电脑或手机端直接连接ESP32发出的热点实现连接,如果电脑连接模块AP热点,这样电脑就不能上网,
因此在使用电脑端和模块进行网络通信时,一般情况下都是使用STA模式
。也就是电脑和设备同时连接到相同网段的路由器上。
这里使用的是STA模式,在Arduino IDE中“文件 -> 示例(往下滑,找到Wifi。。。)”就可以找到示例代码,根据自己的晶振频率和wifi密码啥的就可以拿来用了。
没成功,别问我测试了多久,首先知道的有两个问题
现在是可以了,我崽尝试一下不同的波特率是不是可以随意设置,只要收发波特率相同就可以接受(默认是115200,教程中是9600,我再试试其他的),功能是可以实现的。然后打印出来的
- 晶振频率一直无法确定到底是9600还是115200
- AP模式是板子开热点,STA模式是手机或者路由器的热点
然后手机开热点的时候无意间发现一个“选择AP频段”,我才恍然醒悟,好像这个频段会有啥避讳,搜索后才知道,设置好了2.4Ghz我再去试试。
对于以上问题,只能说串口波特率的自适应(我以为是esp特有的波特率,我还在网上找资料来着,所以导致我以为这是每块板子都拥有唯一的波特率),现在测试的是STA模式,也是最常用的模式,AP模式的解释好像就是说用板子开热点,板子又没得网络,所以不常用。最后确实只支持2.4GHZ下连接,手机热点如果是5GHZ就搜不到(即使电脑连接上了也没用)。
代码如下,参考示例下的wifi模块代码
#include
//定义wifi名和密码
const char* ssid="wifi名称";
const char* password="88888888";
void setup()
{
Serial.begin(4800);
while(!Serial){delay(100);}
// We start by connecting to a WiFi network
Serial.println();
Serial.println("******************************************************");
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// put your main code here, to run repeatedly:
}
在STA模式的基础上将原本串口助手测试的写法,用板载LED来显示,实现只要通电就可以独立使用。
经过测试(用手机充电器插头插上之后,用手机先给板子拉黑名单,测试是否一闪一闪,然后再拉回来测试是否可以自动连接(亮15秒即已经连接))