この方式なら万能とおもったが直接接続は失敗! 一旦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 件のコメント:
コメントを投稿