2025年4月26日土曜日

unoR4wifiからuartでgoでdhtデータ受信(picocomで十分だが。。)

この方式なら万能とおもったが直接接続は失敗! 一旦SDcardなどにおとして

------go2uno.ino-----

115200ボーで送信に/dev/ACM0を用いるのでシリアルモニターでDHT11が

うまくデータをおくっていることを確認 あとはシリアルモニターを切ってポート開放へ

#include <DHT.h>
#define DHT11_PIN 2 // The Arduino UNO R4 pin connected to DHT11

DHT dht11(DHT11_PIN, DHT11);

void setup() {
Serial.begin(115200);
dht11.begin(); // initialize the sensor
}

void loop() {
// wait a few seconds between measurements.
delay(3000);

// read humidity
float humidity = dht11.readHumidity();
// read temperature as Celsius
float tempC = dht11.readTemperature();
// read temperature as Fahrenheit
float tempF = dht11.readTemperature(true);

// check if any reads failed
if (isnan(humidity) || isnan(tempC) || isnan(tempF)) {
Serial.println("Failed to read from DHT11 sensor!");
} else {
String result = String(tempC)+"/"+String(humidity);
Serial.println(result);
}
}
ーーーーーーーーgo2uno.goーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
上記をシリアルモニター切ってポート開放して、このコードをgo run
package main import ( "fmt" "log" "strings" "github.com/tarm/serial" ) func main() { c := &serial.Config{Name: "/dev/ttyACM0", Baud: 115200, Parity: serial.ParityNone, StopBits: serial.Stop1} s, err := serial.OpenPort(c) if err != nil { log.Fatal(err) } buf := make([]byte, 32) for { n, err := s.Read(buf) fmt.Println(n) //こうしないとエラー、nを_nにしてもいいが var sbuf = string(buf);  var sep = "/" var result = strings.Split(sbuf,sep) if err != nil { log.Fatal(err) } fmt.Println(result); // =>[23.00 46.44]とでる } }

0 件のコメント:

コメントを投稿