x 参考
x 各自、勝手に微調整してね!!
目的
カラー液晶の開発用のため
デバッグ用にソフトウェアシリアルを導入する
いろいろ
たぶん、細かい修正と
タイミングの調整だけでいける。
完成した。
メインのプログラム
main.cpp
//SER_LB_9600_ESP32_1
#include <Arduino.h>
#include "SER_9600_ESP32_1.h"
//初期化
void setup()
{
//シリアルの初期化
pc.beginNS(9600);
} //setup
//メインループ
void loop()
{
//データの表示
pc.printNS("HELLO WORLD\r\n");
delay(1000);
} //loop
SER_9600_ESP32_1.hのプログラム
SER_9600_ESP32_1.h
#ifndef TEST_H
#define TEST_H
//SER_9600_ESP32_1.h
#define TX1 23 // ?pin
//#define UART_DELAY 96 // 9600bps NG
//#define UART_DELAY 97 // 9600bps NG
//#define UART_DELAY 98 // 9600bps NG
//#define UART_DELAY 99 // 9600bps NG
//#define UART_DELAY 100 // 9600bps NG
//#define UART_DELAY 101 // 9600bps OK 1
//#define UART_DELAY 102 // 9600bps OK 2
//#define UART_DELAY 103 // 9600bps OK 3
//#define UART_DELAY 104 // 9600bps OK 4
#define UART_DELAY 105 // 9600bps OK 5
//#define UART_DELAY 106 // 9600bps OK 6
//#define UART_DELAY 107 // 9600bps OK 7
//#define UART_DELAY 108 // 9600bps OK 8
//#define UART_DELAY 109 // 9600bps OK 9
//#define UART_DELAY 110 // 9600bps NG
//#define UART_DELAY 111 // 9600bps NG
//#define UART_DELAY 1000 // 9600bps ok E
#define DW digitalWrite
//クラスの定義
struct _pc
{
void beginNS(int sp); //メソッドの宣言
int putcNS(char ch); //メソッドの宣言
int printNS(char *str1); //メソッドの宣言
};
//ポートをhiにする 初期化
//メソッドの定義
void _pc::beginNS(int sp)
{
//ポートをhiにする初期化
pinMode(TX1, OUTPUT);
DW(TX1, HIGH);
}
//仮想シリアルへの一文字出力 9600bps
//メソッドの定義
int _pc::putcNS(char ch)
{
DW(TX1, HIGH);
DW(TX1, LOW);//START
delayMicroseconds(UART_DELAY); //START BIT WAIT
for (int ii = 0; ii < 8; ii++) {
DW(TX1, (ch >> ii) & 1 );
delayMicroseconds(UART_DELAY); //DATA 1-8BIT WAIT
}//for
DW(TX1, HIGH);//Stop
delayMicroseconds(UART_DELAY); //StOP BIT WAIT
return (0);
}
//文字列の表示
//メソッドの定義
int _pc::printNS(char *str1)
{
//文字の中身がゼロか
while (*str1) {
//一文字出力
putcNS(*str1 ++);
} //while
//戻り値
return (0);
}
//実体の作成
_pc pc;
#endif