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 件のコメント:
コメントを投稿