天天看點

【arduino】(1)介紹、lora和溫度傳感器的連接配接1 arduino2 結構案例

(持續更新中)

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等相關知識。 
           

繼續閱讀