信号機のプログラムを作成した。
4ビット ソフトウェアシリアル通信
メインテーマは、
STM32 CubeProgrammer -> OB ->NRET をモード2のGPIOにして
PA0をGPIOとして使える様にした。
サブテーマは、
STM32G031 のUSARTシリアル書き込みの実施
問題点は、事前にST-LINKを使ってnBOOT_SELをチェックを外しておかないと
USARTシリアル書き込みができない。
チェックを外したあとは、boot0は、Hでマイコン側PA9(TX),PA10(RX)で
書き込みができる。ユーチューブに動画をアップした。
キーワードは、STM32G031J6M6
1 が青
2 が黄色
4 が赤
青の時
OUT 11,0:WAIT 1
OUT 11,1:WAIT 2
OUT 11,0:WAIT 2
OUT 11,0:WAIT 2
OUT 11,0:WAIT 2
OUT 11,1:WAIT 2



arduino側
#include <Arduino.h>
#define led1 PA8
#define led2 PA12
#define led3 PA0
#define in7 PB7
void setup() {
// put your setup code here, to run once:
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(in7,INPUT_PULLUP);
}
int a;
int b;
int c;
int d;
void loop() {
//a=digitalRead(in7);
//digitalWrite(led1,0);
//digitalWrite(led2,1);
//digitalWrite(led3,1);
//delay(1000);
//digitalWrite(led1,1);
//digitalWrite(led2,0);
//digitalWrite(led3,1);
//delay(1000);
//digitalWrite(led1,1);
//digitalWrite(led2,1);
//digitalWrite(led3,0);
//delay(1000);
// init led
digitalWrite(led1,0);
digitalWrite(led2,1);
digitalWrite(led3,1);
delay(500);
while(1) {
while( digitalRead(in7) == 1 ) {}
delay(35);
a=!(digitalRead(in7));
delay(35);
b=!(digitalRead(in7));
delay(35);
c=!(digitalRead(in7));
delay(35);
d=!(digitalRead(in7));
delay(35);
digitalWrite(led1, !(a) );
digitalWrite(led2, !(b) );
digitalWrite(led3, !(c) );
}
}
ichigojam 側
10 'SINNGOUKI
20 FOR I=0 TO 2
30 S=1<<I
40 WAIT 60:GOSUB 100
50 NEXT
60 GOTO 20
100 '
110 OUT 11,0
120 WAIT 1
130 FOR J=0 TO 3
140 OUT 11,!( (S>>J)&1 )
150 WAIT 2
160 NEXT
170 OUT 11,1
180 WAIT 2
190 RETURN