Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2020/10/14 19:37:49

MixJuice GET URL : kidspod.club/mj/1020

スロット用 表示器 STM32L010F4P6

おもむきを変えてソフトウェアシリアル通信で
0から9までを表示

全てソフトウェアで実現

苦労した的
Ichigojamの処理速度が遅くて少しずつ
立ち下りトリガーが始まってキャプチャの
ポイントがビットがずれていく。
論理値は、0.033秒だが誤差の範囲の
0.035秒にしたらうまくいった。
あまり調整すると別の処理系で問題に
なるでこの値にした。
あまり大きくすることストップビットが
終わる前にトリガーを検出してもう一文字
来たと認識してしまう。
オシロは使っていないので確証はでかない


!!2020/10/24
!!stm32l010f4p6は、USARTシリアル書き込み出来ました。
!!(st-link nBOOT0を立ててください。)古いねた
!!ユーチューブ キーワード STM32L010F4P6
!!新品 USART書き込み成功

ピンは上から
1SWDCLK
2SWDIO
3 X2
4 X1
5 3.3V
6 GND

ソフトウェアシリアル通信で0から9までを表示
あまり速くない ビット60分の2の速さ 

OUT 11,1:WAIT 15:REM BUF CLER
OUT 11,0:WAIT 1
REM R=9
OUT 11,0:WAIT 2
OUT 11,1:WAIT 2
OUT 11,1:WAIT 2
OUT 11,0:WAIT 2
OUT 11,1:WAIT 2:REM STOP BIT

  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

SOURCE CODE

#include "mbed.h"

DigitalOut myled1(PA_1);
DigitalOut myled2(PA_2);
DigitalOut myled3(PA_3);
DigitalOut myled4(PA_4);
DigitalOut myled5(PA_5);
DigitalOut myled6(PA_6);
DigitalOut myled7(PA_7);

DigitalOut myled8(PB_1);

//DigitalIn myin10(PA_10);
DigitalIn myin9(PA_9);

char seg[16][8] = {
 { 0,0,0,1,0,0,0,1 }, //0
 { 1,0,1,1,1,1,0,1 }, //1  
 { 0,0,1,0,0,0,1,1 }, //2 
 { 0,0,1,0,1,0,0,1 }, //3
 { 1,0,0,0,1,1,0,1 }, //4
 { 0,1,0,0,1,0,0,1 }, //5  
 { 0,1,0,0,0,0,0,1 }, //6
 { 0,0,0,1,1,1,0,1 }, //7
 { 0,0,0,0,0,0,0,1 }, //8
 { 0,0,0,0,1,1,0,1 }, //9

 { 1,1,1,1,1,1,1,1 }, //10
 { 1,1,1,1,1,1,1,1 }, //11
 { 1,1,1,1,1,1,1,1 }, //12
 { 1,1,1,1,1,1,1,1 }, //13
 { 1,1,1,1,1,1,1,1 }  //14
};

int main() {
    int a;
    int b;
    int c;
    int d;
    int s;

s=8;
//while(1) {
   myled1 = seg[s][0];myled2 = seg[s][1];myled3 = seg[s][2];myled4 = seg[s][3];
   myled5 = seg[s][4];myled6 = seg[s][5];myled7 = seg[s][6];myled8 = seg[s][7];

//   wait(1);
//   s=s+1;
//   if (s >=10) { s=0;}  
//}


    while(1) {
        
        while( myin9 == 1 ) {}
        wait(0.035);
        a=!(myin9);
        wait(0.035);
        b=!(myin9);
        wait(0.035);
        c=!(myin9);
        wait(0.035);
        d=!(myin9);
        wait(0.035);
        
        s=d*8+c*4+b*2+a;
    
        myled1 = seg[s][0];myled2 = seg[s][1];myled3 = seg[s][2];myled4 = seg[s][3];
        myled5 = seg[s][4];myled6 = seg[s][5];myled7 = seg[s][6];myled8 = seg[s][7];
      
        
    }
}


ichgojam 側

10 'START 0.5 DATA 4BIT SOTP 1
20 OUT 11,1:WAIT 15
30 R=RND(10)
40 GOSUB 100
50 IF BTN(0)=1 THEN BEEP:END
60 GOTO 30
100 '
110 OUT 11,0:WAIT 1
120 FOR S=0 TO 3
130 OUT 11,!( (R >> S)&1 )
140 WAIT 2
150 NEXT
160 OUT 11,1
170 WAIT 2
180 RETURN

COMMENT