2022年5月26日木曜日

uart latest:: PC->UNO,UNO->ESPR2 バイブル改変

TERATERMは以下を参照https://www.blogger.com/blog/post/edit/7870955253680497274/2387149773725564929

----- ubuntu with uno -----------------------------------------------------

amazon手持ちのrtcはespr developperではうまくいかんのでarduinoからuartでおくる!

sdcもそうするつもり! 両者は鬼門のようだ。

そのまえに以下をもとにUARTを体験(https://okchan08.hateblo.jp/entry/2019/01/27/2343039)

const int LED_PIN = 13;

  void setup(){

   Serial.begin(9600);                // シリアル通信の開始(ボーレート9600bps)

   pinMode(LED_PIN, OUTPUT);

}

 void loop(){

   while(Serial.available() > 0){    // 入力された文字が何バイトか調べ

     int val = Serial.read();        // 1バイト分のデータを読み取る

     if(val == '1'){                 // "1"ならLEDを点灯,"0"ならLEDを消灯

       digitalWrite(LED_PIN, HIGH);

     } else if(val == '0'){

       digitalWrite(LED_PIN, LOW);

     }

   }

}

で、RX,TX,GNDをつないでGTKTERMを起動 PORT,BAUD=9600を指定

LOCAL ECHO,CR LF AUTOをセットする 1をいれるとledオン!

---------------------------------------------------------------------

unoはハードシリアル1個だけ、esp2も同様のようだ なおesp8266 code は

esp32バイブルのesp32 code の改変である ボタンを押している間だけ光る!

まずunoは以下 
#include <SoftwareSerial.h>
#define SW_PIN 2
#define RX_PIN 3
#define TX_PIN 4

// 3番ピン(受信)/4番ピン(送信)でソフトウェアシリアルを行う
SoftwareSerial Serial2(RX_PIN, TX_PIN);

int sw_stat;

void setup() {
  Serial.begin(115200);          // シリアルモニタの初期化
  Serial2.begin(9600);           // ソフトウェアシリアルの初期化
  pinMode(SW_PIN, INPUT_PULLUP); // スイッチのピンを入力用にする、もう一方はGndへ
  sw_stat = HIGH;                // スイッチが押されていないことにする
}

void loop() {
  int sw;

  sw = digitalRead(SW_PIN);     // スイッチのピンの値を読み取る
  if (sw != sw_stat) {          // スイッチの状態が変化したかどうかを調べる
    sw_stat = sw;               // スイッチの状態を更新する
    if (sw == LOW) {            // スイッチが押された場合
      Serial.println("On");     // シリアルモニタに「On」と出力
      Serial2.print("on");      // ESP32に「on」を送信
    }
    else {                      // スイッチが離された場合
      Serial.println("Off");    // シリアルモニタに「Off」と出力
      Serial2.print("off");     // ESP32に「off」を送信
    }
  }
}

Espr developperは以下、ハードのtx,rxとクロス接続する
gndは共通化する必要ありと思われる
Espr developperでもserial monitorするので3vをunoから取ってはいけない
#include <SoftwareSerial.h>
#define Rx 12
#define Tx 13
#define LED_PIN 2
SoftwareSerial Serial2(Rx,Tx);
void setup() {

Serial.begin(115200); // for monitor
  Serial2.begin(9600);      // Serial2を初期化
  pinMode(LED_PIN, OUTPUT); // LEDを消灯
}

void loop() {
  String str;

  if (Serial2.available()) {       // Serial2にデータを受信している?
    str = Serial2.readString();    // 受信した文字列を変数strに代入
Serial.println(str);
    if (str.equals("on")) {        // 受信した文字列が「on」の場合
      digitalWrite(LED_PIN, HIGH); // LEDを点灯する
    }
    else if (str.equals("off")) {  // 受信した文字列が「off」の場合
      digitalWrite(LED_PIN, LOW);  // LEDを消灯する
    }
  }
}



0 件のコメント:

コメントを投稿