(持续更新中)
1 arduino
arduino较为简单。其是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于爱好者、艺术家、设计师和对于“互动”有兴趣的朋友们。
通俗的讲:arduino就是主要以以AVR单片机为核心控制器的单片机应用开发板(当然也有其他核心的例如STM32版本的,但不是官方的,还有intel的伽利略),Arduino开发人员开发了简单的函数,还有许多应用库,简洁的IDE(集成开发环境)等等,能够便捷的和加速传感器、压力传感器、温湿度传感器、震动传感器、噪音传感器等组合。
先下载 Arduino IDE 1.8.18 Arduino IDE下载(9月15日更新到2.0)-Arduino爱好者 - Powered by Discuz!
常用函数参考:https://wiki.arduino.cn/?file=home-%E9%A6%96%E9%A1%B5
图形化编程软件:ArduBlock、啃萝卜
2 结构案例
// 给13号引脚连接的设备设置一个别名“led”
int led = 13;
// 在板子启动或者复位重启后, setup部分的程序只会运行一次
void setup(){
pinMode(led, OUTPUT); // 将“led”引脚设置为输出状态
}
// setup部分程序运行完后,loop部分的程序会不断重复运行
void loop()
{
digitalWrite(led, HIGH); // 点亮LED
delay(5000); // 等待五秒钟
digitalWrite(led, LOW); // 通过将引脚电平拉低,关闭LED
delay(5000); // 等待五秒钟
2.1 (数字)按键控制灯亮灭
// 通过2号引脚连接的按键,控制13号引脚连接的LED // 设置各引脚别名 const int buttonPin = 2; // 连接按键的引脚 const int ledPin = 13; // 连接LED的引脚 // 变量定义 int buttonState = 0; // 存储按键状态的变量 void setup() { pinMode(ledPin, OUTPUT); // 初始化LED引脚为输出状态 pinMode(buttonPin, INPUT); // 初始化按键引脚为输入状态 } void loop(){ // 读取按键状态并存储在变量中 buttonState = digitalRead(buttonPin); // 检查按键是否被按下 // 如果按键按下,那buttonState应该为高电平 if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); // 点亮LED } else { digitalWrite(ledPin, LOW); // 熄灭LED } }
2.2 温度传感器DS18B20+lora模块
DS18B20 有TO 92、SOIC 及CSP 封装。
其中VDD 为外接供电电源输入端(5V),GND 为公共地(GND),DQ为数字信号输出端(3);
先引入相关的库, <OneWire.h><DallasTemperature.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3 //数据总线连接在IO3
OneWire oneWire(ONE_WIRE_BUS); //声明
DallasTemperature sensors(&oneWire); //声明
void setup(void) //初始化总线
{
Serial.begin(9600);
Serial.println("Initialization succeeded");
sensors.begin();
digitalWrite(3, HIGH);
}
void loop(void)
{
Serial.print("Initiate stem flow data transfer");
sensors.requestTemperatures();
Serial.println("Stem flow data conversion is complete");
Serial.print("The current stem flow is: ");
Serial.print(sensors.getTempCByIndex(0));
delay(3000);
}
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
sensors.begin();
}
void loop(void)
{
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures();
Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
Serial.print(sensors.getTempCByIndex(0));
delay(500);
}
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3 //数据总线连接在IO3
OneWire oneWire(ONE_WIRE_BUS); //声明
DallasTemperature sensors(&oneWire); //声明
void setup() {
Serial.begin(9600);
pinMode(3, INPUT);
digitalWrite(3, HIGH);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
Serial.print(sensors.getTempCByIndex(0));
unsigned char tempers[10];
tempers[0]=0x10;
tempers[1]=0x00;
tempers[2]=0x10;
tempers[3]=(unsigned char)(sensors.getTempCByIndex(0));
tempers[4]=(sensors.getTempCByIndex(0)-tempers[3])*100;
Serial.write(tempers,5);
delay(3000);
}
因为我没有用lora的定向传输,直接用了透明传输,所以没有用到temper1.2等相关知识。