フォト
2023年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

ARM

2020年3月24日 (火)

PocketGoで遊んでみる(1)

先日入手したPockerGo、早速遊んでみました。

まずは、分解!

Dscn2614

基板1枚、液晶パネル(日本製)、バッテリー、ケースとシンプルな構成です。

Dscn2615

ARM系CPU F1C100sが乗ています。
右横にはSPI接続フラッシュメモリ用のランドのようです。
システムの起動はSDカードからのみのようです。

Dscn2617

写真の赤枠部分からシリアル接続が可能のようです。

Dscn2618

内部にシリアル・USB変換ICを組み込んで、USB端子経由でパソコンに接続しようと思い、
USB端子のD+、Dーの状況を調べてみると、CPU F1C100sのD+、Dーの端子に繋がっていました。
ソフトウェア的に、USB端子経由でのシリアル接続が出来る可能性はありそうです。

シリアル接続を試みる

ケースに少々穴を開けて、シリアル端子に接続出来るようにしました。

Dscn2620
先ほどのシリアル接続用の端子の裏側です。

Dscn2621

こんな感じに、コネクタを付けしました。

Dscn2623
ケースに穴を開けて、ケースの外から接続出来るようにします。

Dscn2624
ケースの裏から端子へのアクセスが出来ます。

Dscn2626
接続はこんな感じ

Dscn2628

さて早速、TeraTermで接続してみます。
04_20200324155001

115200bpsで接続すると、ブート時のメッセージが表示されてログインプロンプトが表示されました。
ただし、文字入力は出来ず... 残念

とりあえず、今回はここまで

2019年4月 1日 (月)

Arduino用 MML文演奏ライブラリの作成 その1

Arduino および Arduino STM32環境で利用できる
MML(Music Macro :ミュージック・マクロ・ランゲージ) 演奏ライブラリを作成中です。
ゲームなんかでも利用できるよう、バックグラウンド演奏にも対応予定です。

01

ハードウェア依存部分を切り離して利用できるようにと、
音を出す処理(実際は関数)をアタッチして利用する形式にしています。
これにより、Arduino、Arduino STM32やMIDI出力等に柔軟に対応できると思います。
02_1

ほぼ完成で、マニュアル作成および動作確認を残すのみです。
ArduinoTVoutとの併用も出来るか等、動作確認をやろうと思っています。

サンプルプログラム
Arduino STM32環境にてBluePillボードを使った単音演奏のサンプルプログラムです。

とりあえず、こんな感じです。
ココログのシステムリニューアルで、不具合が続出で<pre>での
プログラムソースの表示がおかしくなります。

<pre></pre>の中に<br>が追加されたりと、分断されたりと
<pre></pre>ブロックを認識出来ないようです。
システム不具合が改善されてから、改めて修正します。

直接挿入は諦めて、GitHubのgistを使ったソース挿入に変更しました。

2019年3月21日 (木)

BluePillボードで4桁7セグLEDの制御

先日のArduino STM32用タイマー割り込みライブラリを使って、
BluePillボードを使って、4桁7セグLEDをダイナミック点灯にて制御してみました。

Dscn9818

動いている様子



以前、秋月電子で入手して放置していた 4桁7セグLEDはOSL40562-IG を利用しました。
このOSL40562-IGアノードコモンでVFが3.3Vと高く 少々使いにくです。

  ダイナミック接続4桁高輝度緑色7セグメントLED表示器 アノードコモン アノード共通接続 OSL40562-IG

  01


03

とりあえず、次のような回路で駆動させてみました。

02

BluePillボードの5Vトレラント対応のピンを使って駆動させます。
各LEDに流れる電流は5mA程度にしています。
I = (5[V] - Vf[V] ) / 330[Ω]  = (5 - 3.3) /330 = 0.00515[A] ≒ 5[mA]

各桁セグメントDIG1 ~ DIG4は、LED8個分の40mAが流れます。 
BluePillボードでは20mAまでしか流せないため、PNPトランジスタ 2SA1015を使って
駆動させるようにしました。

スケッチ
//
// 4桁高輝度緑色7セグメントLED表示器(アノードコモン) OSL40562-IG の制御
// 2019/03/17 たま吉さん 
// 利用パーツ
//  BluePillボード
//  4桁7セグメントLED  OSL40562-IG x 1
//  桁制御用トランジスタ    2SA1015L-GR x 4
//  LED電流制御用抵抗       330Ω x 8
//  トランジスタベース抵抗  10kΩ x 4
//

#include "TimerEvent.h"

// タイマー割り込み管理
TimerEvent ticker;     
#define REFTIME 4

// デジタルピンの定義
#define DIG1  PB12
#define DIG2  PB13
#define DIG3  PB14
#define DIG4  PB15
#define SEGA  PB3
#define SEGB  PB4
#define SEGC  PB6
#define SEGD  PB7
#define SEGE  PB8
#define SEGF  PB9
#define SEGG  PB10
#define SEGP  PB11

// 桁表示ON・OFF
#define DIG_ON   0
#define DIG_OFF  1

// セグメント表示ON・OFF
#define SEG_ON   0
#define SEG_OFF  1

// セグメントビット定義
#define BIT_A 0b10000000
#define BIT_B 0b01000000
#define BIT_C 0b00100000
#define BIT_D 0b00010000
#define BIT_E 0b00001000
#define BIT_F 0b00000100
#define BIT_G 0b00000010
#define BIT_P 0b00000001

// フォントの定義
const uint8_t font[12] = {
  BIT_A|BIT_B|BIT_C|BIT_D|BIT_E|BIT_F,       // 0
  BIT_B|BIT_C,                               // 1
  BIT_A|BIT_B|BIT_G|BIT_E|BIT_D,             // 2
  BIT_A|BIT_B|BIT_G|BIT_C|BIT_D,             // 3
  BIT_F|BIT_B|BIT_G|BIT_C,                   // 4
  BIT_A|BIT_F|BIT_G|BIT_C|BIT_D,             // 5
  BIT_A|BIT_F|BIT_E|BIT_D|BIT_C|BIT_G,       // 6
  BIT_A|BIT_B|BIT_C,                         // 7
  BIT_A|BIT_B|BIT_C|BIT_D|BIT_E|BIT_F|BIT_G, // 8
  BIT_A|BIT_B|BIT_C|BIT_D|BIT_F|BIT_G,       // 9
  0,                                         // ブランク
  BIT_G,                                     // -
};

// 桁制御ピン
const uint8_t pin_dig[4] = {
  DIG1, DIG2, DIG3, DIG4,
};

// セグメント制御ピン
const uint8_t pin_seg[8] = {
  SEGA, SEGB, SEGC, SEGD, SEGE, SEGF, SEGG, SEGP,
};

// 表示用データ
volatile uint8_t digit[4];

// タイマー割り込み呼び出し関数
void dinamic_update() {
  static uint8_t cnt = 0;
  for (uint8_t i = 0; i < 4; i++)
    digitalWrite(pin_dig[i], DIG_OFF); 
  for (uint8_t i = 0; i < 8; i++)  
     digitalWrite(pin_seg[i], digit[cnt] & (0x80>>i) ? SEG_ON:SEG_OFF);
  digitalWrite(pin_dig[cnt], DIG_ON); 
  cnt++; if (cnt == 4) cnt = 0;
}

// データのクリア
void cls() {
  digit[0] = 0; digit[1] = 0; digit[2] = 0; digit[3] = 0;
}

// 数値の設定
void setNumber(uint16_t n, uint8_t dt = 0) {
  if (n>9999)
    return;

  cls();
  uint8_t dec = 0;
  // 4桁目
  if (n >= 1000) {
    digit[0] =font[ n / 1000]; n = n % 1000; dec = 1;
  }
  // 3桁目
  if (n >= 100) {
    digit[1] = font[n / 100]; n = n % 100; dec = 1;
  } else if (dec) {
    digit[1] = font[0];
  }
  // 2桁目
  if (n >= 10) {
    digit[2] = font[n / 10]; n = n % 10; dec = 1;
  } else if(dec) {
    digit[2] = font[0];
  }
  // 1桁目
  digit[3] = font[n];

  // 小数点
  if(dt && dt <=4) {
    digit[4-dt] |= BIT_P;
  }
}

void setup() { 
  //  桁ピンの初期化
  for (uint8_t i = 0; i < 4; i++) {
    pinMode(pin_dig[i], OUTPUT_OPEN_DRAIN);
    digitalWrite(pin_dig[i], DIG_OFF);
  }

  //  セグメントピンの初期化
  for (uint8_t i = 0; i < 8; i++) {
    pinMode(pin_seg[i], OUTPUT_OPEN_DRAIN);
    digitalWrite(pin_seg[i], SEG_OFF);
  }

  // 表示データの初期化
  for (uint8_t i = 0; i < 4; i++) {
    digit[i] = 0;
  }

  // LEDダイナミック点灯用割り込み設定
  ticker.set(REFTIME, dinamic_update);  // REFTIME間隔で dinamic_update()を呼び出す
  ticker.start();                       // タイマー割り込み実行開始
}

void loop() {
  static uint16_t n = 0;
  setNumber (n,millis()%1000>500?1:0);
  delay(100);
  n++; if (n>9999) n = 0;
}

タイマー割り込みは4m秒間隔で実行させています。
一回の割り込みで4桁のうちの1つを表示させています。
全桁更新周期は 4m秒 x 4 = 16m秒 ≒ 1/60秒 です。
これは、人間の目がちらつきを感じない周期です。
これ以上遅くすると、ちらついて見えます。

電圧を5Vではなく、3.3Vにしても問題なく点灯出来ました。
VF 3.3Vとありますが、実際はもっと低い値のようです。

2019年2月 6日 (水)

Arduino Basicを改良してシリアルコンソール対応

Robin Edwards氏が開発し、公開している「Arduino Basic」を
シリアルコンソールで使えるように改良しました(ArduinoArduino STM32対応)。

Dscn9589

オリジナル版
・Arduino Basic

改良版
・Arduino Basic (シリアルコンソール対応版)
  https://github.com/Tamakichi/ArduinoBASIC


Arduino BASICは、Tiny BASICとは異なり、小数、文字列、多次元配列が利用出来ます。
変数名も8文字まで付けられます。かなり本格的なBASIC言語です。

オリジナル版は、OLED画面+PS/2キーボードで利用する形式なのですが、
プログラミング言語としてどれくらい使えるのかを評価するため、
プログラミング効率向上のために、シリアルコンソール利用に変更しました。

こんな感じで、TermTerm等で利用出来ます。

01

簡単なスクリーン制御(CLS、POSITIONコマンド、BSキーで文字削除)にも対応しました。
ただし、オリジナル版と同様にスクリーンエディタは未対応です。

02

改良点
  ・画面表示をOLEDからシリアルコンソールに変更
  ・PS/2キーボード利用は廃止(シリアルコンソールから入力)
  ・コマンド実行後、OKプロンプトを表示するように変更
  ・Arduino STM32 (Blue Pill対応) 、ただしLOAD、SAVE、TONEピンは未対応
  ・プログラムソースに日本語コメント追加、ソースの整形
  ・ファイル名arduino_BASIC.ino をarduinoBASIC.ino に変更
  ・プログラムの中断は[ESC]キーまたは、[CTRLC]で行う。

今後の改良を考えて、コメントに日本語訳、説明追記を行いました。

03

Blue Pillボード(STM32F103C8T6)でも、I/Oピンを使ったデジタル入出力が可能です。

Lチカプログラム

10 pc13=32
20 PINMODE pc13,1
30 PIN pc13,1
40 PAUSE 500
50 PIN pc13,0
60 PAUSE 500
70 GOTO 30

スクリーンエディタ対応は、やってみようと思います。
利用出来るコマンドについては、配布ページのドキュメントに記載しています。

追記

プログラムソースを読んでいると、このArduino BASIC
変数の管理方式があまり良くないです。
中間コード方式を採用しているのに、変数名はコード化せず、
そのまま文字列で管理しています。

マズい処理方式
・実行時に、変数テーブルに変数を変数名(文字列)で登録
・変数参照の都度、変数テーブルを単純文字列検索でなめて該当変数にアクセスする

この作りだと、変数を多用すると指数的(実際は2乗)に実行速度が落ちると思われます。
行入力時の中間コード化の時点で、変数テーブルへの登録を行い、
変数はコード化して、中間コード化したプログラムに埋め込み等の修正が必要です。

本格的に改造して利用しようと思ったのですが、
ちょっとテンション(モチベーション)下落、ちょっと微妙になってきました。

追記 2019/02/08

別途、Arduino STM32対応版をおこしました。

・Arduino Basic シリアルコンソール対応(Arduino STM32専用)
https://github.com/Tamakichi/ArduinoBASIC_STM32

変更点
  ・プログラム領域を4096バイトに増量
  ・フルスクリーンエディタ対応(全角文字 シフトJISも利用可能)
  ・LOAD [n] 、SAVE [n] でロード、セーブ対応(nは0~ 5)

コンパイルにはArduino STM32が必要です。
Blue Pillボード(STM32F103C8T6)、フラシュメモリ128kバイト利用です。




2018年12月13日 (木)

豊四季Tiny BASIC for Arduino STM32 をV0.87に更新しました

豊四季Tiny BASIC for Arduino STM32 をV0.87に更新しました。

 

公開サイト
・豊四季タイニーBASIC for Arduino STM32V0.87β
  https://github.com/Tamakichi/ttbasic_arduino_stm32

 

  テストが不十分でβ版です^^;

マニュアルの作成がまだまだ進まないのですが、とりあえすコマンドリファレンスを
V0.87対応に更新しました。

・「豊四季タイニーBASIC for Arduino STM32」 コマンドリファレンス(更新中)

 

 


V0.87の主な追加機能


・漢字フォント利用の対応(SDカード上のシフトJISコードフォントファイルを利用)
   - KANJI コマンドによる全角文字列の描画が出来る
   - SETKANJI コマンドで全角文字描画時のフォントサイス等の設定が出来る
   - KFONT コマンドによる、漢字フォントデータの取得が出来る

・内部フラッシュメモリのプログラム保存領域の直接書き換え対応
   - 仮想化ドレスPRG2 の追加
   - BANK コマンドの追加
   - FWRITE コマンドの追加、
   - BLOAD コマンドの機能強化でバイナリファイルに直接書き込みに対応

   この機能は少々危険ですが、プログラム保存領域4096バイト x 6本の領域を
   有効利用するために、データを配置して利用出来たら.. と思い追加しました。
   
   SDカード上のバイナリーファイルをBLOADコマンドでフラッシュメモリに
   読み込んだり出来ちゃいます。
   ファイルからちょっとした画像や文書データを読み込んで配置出来ます。

・バイナリファイル操作の機能強化
   - BLOADBSAVE コマンドで、ファイル内読み書き位置を指定可能にしました

   ちょっとしたレコードファイルの構造を実現できると思います。

・文字列比較関数の追加
   - STRCMP 関数を追加しました

・グラフィック描画関連のコマンド追加
   - GCOLOR GCLS コマンドの追加

・その他

 

   いくつかの不具合対応を行いました


ここで、あらためて補足ですが、

 

豊四季Tiny BASICのオリジナル版開発は私ではなく、鈴木氏です。

 

私は、オリジナル版をSTM32対応し、機能拡張しているのみです。
オリジナル版  https://github.com/vintagechips/ttbasic_arduino


今後の予定としては、機能追加はこのあたり迄として、
ドキュメントの充実、BASICプログラムの作成、基板作成を行っていこうと思っています。

 

 

 

 

2018年12月 7日 (金)

豊四季Tiny BASIC for Arduino STM32で日本語フォント利用対応中(4)

豊四季Tiny BASIC for Arduino STM32の日本語フォント対応版、
ちびちびとドキュメント類を作成しています。
ドキュメント作成は、モチベ―ジョンが下がり、なかなか作業が進みません。

今回は、リファレンスマニュアルよりも先に「早見表」(クイックリファレンス)を
先に作成しました。PDF化して添付を予定しています。

 

Dscn9093

パウチして、傍らにおいて参照する感じでの利用を想定しています。

 

Dscn9091

コマンド、編集キー、ボードピン配置、ピン用途一覧、結線図の
7ページにまとめています。

 

01

コマンド一覧を1枚に収めるのにちょっと苦労しました。

 

02

ピン割り付けと、起動時のコンソール選択の設定関連のシート

 

03

英語版も作成したいところですが、とりえずは後回しです。

追記

このドキュメントをブランチの方に追加しました。
ttbasic_arduino_stm32/TinyBASIC早見表.pdf

 

 

2018/12/08 修正

マスターブランチにマージしました。
早見表は下記のリンクからの参照となります。
ttbasic_arduino_stm32/TinyBASIC早見表.pdf

キーワード一覧(簡易コマンドリファレンス) キーワード.html追加しました。

 

 

04

 

 

2018年11月30日 (金)

豊四季Tiny BASIC for Arduino STM32で日本語フォント利用対応中(3)

豊四季Tiny BASIC for Arduino STM32の日本語フォント乗せ対応、
追加したい機能の実装はほぼ完了し、マニュアル作成と動作確認中です。
文字列比較関数等も追加しました。

動作の様子


NTSC版で全角フォントを表示するデモです。
全角フォントは8、10、12、14、16、20、24ドットの7種類が利用出来ます。
また、倍角、四倍角等の拡大表示も可能です。

デモのプログラムソース

10 CONSOLE 0
20 GCLS
30 SETKANJI 20,1,0,0
40 KANJI 10,0,"こんにちは、埼玉!"
50 SETKANJI 10,1,2,1
60 KANJI 10,30,"7種類の漢字フォントを使って、"
70 KANJI 10,42,"全角表示が出来るようになりました。"
80 SETKANJI 24,2,2,2
90 KANJI 0,60,"豊四季"
100 SETKANJI 20,2,0,0
110 KANJI 0,106,"Tiny BASIC"
120 SETKANJI 16,1,0,0
130 KANJI 0,150,"for Arduino STM32"
140 SETKANJI 24,2,0,0
150 KANJI 90,170,"V0.87"
160 WAIT 2000
170 FOR I=1 TO GW
180 GSCROLL 0,0,GW-1,GH-1,LEFT
190 WAIT 10
200 NEXT I
210 WAIT 2000
220 GOTO 20

マニュアル作成とテストにちょっと手こずっています。

現時点のバージョンは、GitHubのブランチからダウンロード可能です。
(このブランチは随時更新しています)
https://github.com/Tamakichi/ttbasic_arduino_stm32/tree/add_SDSfonts

   2018/12/08 修正 マスターブランチにマージしました(上記ブランチは削除します)。
                     => https://github.com/Tamakichi/ttbasic_arduino_stm32

ただし、ファームウェア・マニュアル等は旧版のままです。
ソースからコンパイルする必要があります。

フォント利用には、解凍したfontbinの下にあるSFONT.BINをSDカードに入れる必要があります。

描画速度をもう少し何とかしたいです。
漢字フォントをSPI接続のフラッシュメモリに配置すれば高速化出来るのですが、
フラッシュメモリの入手と書き込みがちょっと面倒なので悩みどころです。

また、BASICプログラムのソースが英字大文字だと可読性が悪いので、
GOTO => GoTo
WAIT => Wait
SETKANJI => SetKanji
IF => If
FOR I=0 TO 10 STEP  2:NEXT I => For I=0 To 10 Step 2: Next I
のように大文字小文字を混ぜる感じにしようかと検討中です。

2018年11月15日 (木)

豊四季Tiny BASIC for Arduino STM32で日本語フォント利用対応中(2)

前回からの修正、全角文字列を表示できるコマンドを追加しました。

表示している様子

01

プログラム

02

10 'OLED日本語表示デモ
20 @(0)=8,10,12,14,16,20,24
30 S="吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。"
40 L=LEN(S)
50 FOR J=0 TO 6
60 SETKANJI @(J):CLS 1:KANJI 0,0,STR$(S):WAIT 500
70 NEXT J
80 GOTO 50

KANJIコマンドで指定した座標に文字列を描画します。
  KANJI x,y,"文字列"
  KANJI x,y,STR$(文字列を格納した変数)

SETKANJIコマンドは、フォントサイズ等の設定を行います。

これで、簡単に全角文字列を描画出来るようになりました。
前回と同じことやってますが、プログラムがかなり短く出来ます。

OLED版では、CONSOLEコマンドにてプログラム編集画面をシリアルターミナルに
切り替えることが出来ます。
この場合でも、OLEDディスプレイへのグラフィック描画を行うことが出来ます。

2018年11月 7日 (水)

豊四季Tiny BASIC for Arduino STM32で日本語フォント利用対応中

先日作成した「Arduino用SJIS漢字フォントライブラリ SDカード版」を
豊四季Tiny BASIC for Arduino STM32に組み込んで日本語表示対応を試みています。

(現時点の修正案は下記のリンク先にまとめています。
  ttbasic_arduino_stm32のプロジェクトのissues#58にまとめています^^)

日本語表示が出来れば、簡単なアドベンチャーゲームが作成出来ると思います。


日本語表示表示の雰囲気は次のような感じです。

OLED版の表示デモ


プログラムソース

10 'OLED日本語表示デモ
20 @(0)=8,10,12,14,16,20,24
30 S="吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。"
40 L=LEN(S)
50 FOR J=0 TO 6
60 Z=@(J):X0=0:X=X0:Y=0
70 CLS 1
80 FOR I=1 TO L
90 R=KFONT(MEM,ASC(S,I),Z)
100 BITMAP X,Y,MEM,0,Z,Z,1
110 IF (X+Z*2+1)>(GW-1) X=0:Y=Y+Z ELSE X=X+Z+1
120 IF Y+Z>GH-1 I=L
130 NEXT I
140 WAIT 500
150 NEXT J
160 GOTO 160

プログラムはKFONT関数で1文字ずつフォントデータを取得して表示しています。
フォントをSDカードから逐次参照して表示しているため、表示は遅いです。

表示専用のKANJIコマンドを追加予定です。
これを使えばもう少しプログラムが短くなり、表示も早くなると思います。

OLEDの他に、NTSC画面、TFT画面にも表示出来ます。


NTSCビデオ出力画面での表示デモ

プログラムソース

5 CONSOLE 0
10 CLS
20 S="日本語表示にほんご"
30 L=LEN(S):X0=0:X=X0:Y=30:@(0)=8,10,12,14,16,20,24
35 FOR J=0 TO 6
40 FOR I=1 TO L
50 R=KFONT(MEM,ASC(S,I),@(J))
60 BITMAP X,Y,MEM,0,@(J)/R,@(J),1
70 X=X+@(J)/R+0
80 NEXT I
90 X=X0:Y=Y+@(J)+10
100 NEXT J
110 GOTO 110

プログラムの日本語入力は、NTSC、OLED、TFT画面では入力出来ないため、
シリアル接続したTeraTermにて行います。

01


TFT版ではカラー表示に対応しています。

Dscn8965

2018年10月11日 (木)

Beginning STM32という電子書籍を楽天で購入したのですが..

("楽天kobo糞過ぎ"というお話です^^)

少し前に、「Beginning STM32 Developing with FreeRTOS, libopencm3 and GCC」という
書籍を見つけ、出版元から直接、PDF版を買わずに楽天からkobo版を買ったところ大失敗でした。

出版元の販売ページ
apress Beginning STM32 Developing with FreeRTOS, libopencm3 and GCC

  https://www.apress.com/la/book/9781484236239

02

Windows上で「Rakuten Kobo Desktop」を使って閲覧しているのですが、
PDFみたいな感覚での利用が全くできません(当然ですが)。

書籍記載のサンプルソースをエディターにコピーしたり、図(ピンレイアウト図)を印刷したり等
一切できません。これは技術書・リファレンスマニュアルとして使うにはちょっと辛い。
コピペしてグーグル翻訳が出来ないのも辛い。
kobo糞過ぎる。

スクリーンショットを取り、利用すればと思いやってみると、

表示内容が真っ黒になり画像化出来ません。

01

引用の手段として出来るのは、ディスプレイに映った内容をデジカメで撮影するくらいです。

Dscn8911

こんな面倒なことをするくらいなら、
新たにapress サイトからPDF版を買った方を購入した方がましですね。

技術書で一切の引用禁止は無茶苦茶使いにくいです。

楽天 kobo版の技術書買わない方が良さそうです。

楽天ポイントを使って割引購入したのですが、大失敗でした。

購入レビューにkoboの不満を書いたらいつの間にか、非公開にされていたので、
先ほど書き直しました。また非公開にされるかもしれません。

今回は勉強代として、apress サイトからPDF版を買いなおすかなぁ..
書籍自体は、BluePillボードをターゲットとした内容で良い感じなのですが..

より以前の記事一覧