(持續更新中)
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等相關知識。