フォト
2018年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  
無料ブログはココログ

日記・コラム・つぶやき

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月30日 (火)

Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました

以前作成した Arduino用のUTF-8版の漢字フォントライブラリ SDカード版をベースにして
シフトJIS版の漢字フォントライブラリ SDカード版を作成しました。

指定したシフトJISコードに対応する漢字フォントデータを取得するAPIを提供します。
漢字フォントは8、10、12、14、16、20、24ドットのサイズの利用が可能です。
フォントデータはSDカード上に配置して利用します。

公開ページ
・Arduino用SJIS漢字フォントライブラリ SDカード版
  https://github.com/Tamakichi/Arduino-SJISKanjiFont-Library-SD

ライブラリの利用にはSDカードが必要となります。

02_2

02

ライブラリに添付しているサンプルプログラム

// SJIS版フォントライブラリ利用サンプル
// 作成 2018/10/27  by Tamakichi
//

#include "SDSfonts.h"

// ビットパターン表示
// d: 8ビットパターンデータ
//
void bitdisp(uint8_t d) {
  for (uint8_t i=0; i<8;i++) {
    if (d & 0x80>>i) 
      Serial.print("#");
    else
      Serial.print(".");
  }
}

//
// フォントデータの表示
// buf(in) : フォント格納アドレス
//
void fontdisp2(uint8_t* buf) {
  uint8_t bn= SDSfonts.getRowLength();                // 1行当たりのバイト数取得
  Serial.print(SDSfonts.getWidth(),DEC);             // フォントの幅の取得
  Serial.print("x");      
  Serial.print(SDSfonts.getHeight(),DEC);            // フォントの高さの取得
  Serial.print(" ");      
  Serial.println((uint16_t)SDSfonts.getCode(), HEX); // 直前し処理したフォントのコード表示

  for (uint8_t i = 0; i < SDSfonts.getLength(); i += bn ) {
      for (uint8_t j = 0; j < bn; j++) {
        bitdisp(buf[i+j]);
      }
      Serial.println("");
  }
  Serial.println("");
} 

//
// 指定した文字列を指定したサイズで表示する
// pSJIS(in) SJIS文字列
// sz(in)    フォントサイズ(8,10,12,14,16,20,24)
//
void fontDump(char* pSJIS, uint8_t sz) {
  uint8_t buf[MAXFONTLEN]; // フォントデータ格納アドレス(最大24x24/8 = 72バイト)

  SDSfonts.open();                                   // フォントのオープン
  SDSfonts.setFontSize(sz);                          // フォントサイズの設定
  while ( pSJIS = SDSfonts.getFontData(buf, pSJIS) ) // フォントの取得
    fontdisp2(buf);                                 // フォントパターンの表示
  SDSfonts.close();                                  // フォントのクローズ
}

void setup() {
  Serial.begin(115200);                   // シリアル通信の初期化
  SDSfonts.init(10);                        // フォント管理の初期化
  Serial.println(F("sdfonts liblary"));
  char str[] = {0x7a,0x7b,0x7c,0x7d,0x7e,0xa2,0xb1,0xb2,0xb3,0};// z{|}~「アイウ
  fontDump(str,14);
  fontDump("\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8",16);//あいうえお
  fontDump("\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8",20);//あいうえお
  fontDump("\x8d\xe9\x8B\xCA\x81\x99\x82\xB3\x82\xA2\x82\xBD\x82\xDC", 24); // 埼玉☆さいたま
}

void loop() {
}

実行結果

01


このライブラリは豊四季Tiny BASIC for Arduino STM32に組み込むために作成しました。
TFT、NTSC、OLED画面に日本語文字列を表示したいと思っています。
BASICにてアドベンチャーゲーム的なものが作れないかなぁっと。

Arduino IDEでは、文字列にUTF-8を利用しているため、
このシフトJIS版でのフォントデータの扱いはちょっと面倒です。
通常は、UTF-8版を使った方が良いでしょう。

2018年10月29日 (月)

Windows 10上にWSLを使ってUbuntuをインストールする

メインで使っているパソコンの切り替え」にともない、
新しいパソコンにもWindows 10上で動作するUbuntu環境をインストールしました。
その際のメモです。

参考にした文献
・1)Windows 10でLinuxプログラムを利用可能にするWSLをインストールする(バージョン1803以降対応版)

・2)WSLのUbuntu環境を日本語化する


まずは、Windows 10の環境の確認。

02

Windows 10 Pro バージョン 1809、WSLが利用出来る環境です。

早速、文献1)を参考に、WSLサクッとインストールしました。
次に、マイクロソフト ストアからUbuntuをインストールします。

01_2


インストールして早速起動すると、初回は下記のように、Ubuntuのインストールが
行われ、少々時間を要します。

03

その後、ユーザーIDとパスワードの設定となります。
このユーザーIDは、Ubuntu 専用のIDでWindows 10とは別のものです。

06

この段階では、メッセージや時刻等、日本語が利用できません。
文献2を参考にして、環境を日本語化します。

更に、フォントを「MS ゴシック」等の日本語対応フォントに変更します。

09

これで、環境が日本語化出来ました。

08

ちなにみ、バージョンを確認すると、Ubuntu 18.04.1 LTSです。

10

ついでに、gcc関連の開発環境をインストールします。
$ sudo apt install build-essential

さらに、FDcloneもインストール
$ sudo apt install fdclone

fdコマンドを実行すると、FDっぽいCUIベースのファイルマネージャーが起動します。

11



2018年10月23日 (火)

Aliexpressでプラねじ・スペーサセットを購入

電子工作で、M3のプラねじ・スペーサをよく利用します。
いつもはaitendoや秋月電子で購入するのですが、Aliexpressで良さげなセットを見つけ
試しに購入してみました。

01

サイズの異なるプラねじやスペーサ300個でこの値段で、商品画像の品質なら安いです。
購入者の評価も良いようです。

注文して、20日で届きました。
見本の画像通り、ケース付きです。

Dscn8926

ふたを開けると、
「う~ん、非常に微妙」

Dscn8927

成型不良の製品が結構、混ざってます。

他の購入者がレビューに添付している製品画像はもっと良い状態が多数です。
私だけがはずれを引いたのでしょうか?

いくつか、ランダムに取り出してみます。
やはり、これは売り物になるレベルではないのでは..

Dscn8923

6mmのスペーサだけ取り出して並べてみました。

Dscn8928

Dscn8929

不揃いの高さのスペーサたち(斜めもあるよ)。
利用するには、やすりがけ等の修正が必要ですね。

まあ、とりあえず使えそうなので良しとします。


2018年10月20日 (土)

ハイフン、ハイフンマイナス、ダッシュの文字

パソコンで使う文字で、横棒形状の文字があります。
ハイフン、ハイフンマイナス、ダッシュの文字がその文字に該当するのですが、
使い分けが今一分かりません。

Windows 10にてIMEを使って入力する際、とりあえずマイナスを入力して変換しようとすると、

02

似たような候補がいっぱい出てきますが、違いが今一分かりません。

そこでざっと、洗い出してみました。

01

洗い出してみたものの、ますます、分からなくなりました。

とりあえず、プログラミングの演算子で使うマイナス記号は、U+002Dです。
その全角はU+FF0Dのようです。


以前作成したフォントライブラリやPS/2キーボードライブラリ等にも影響しそうなので、
もうちょっと、掘り下げて調べてみたいと思います。


参考文献
ハイフン(Wikipedia)
ハイフンマイナス(Wikipedia)
プラス記号とマイナス記号(Wikipedia)
ダッシュ(記号)(Wikipedia)

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ボードをターゲットとした内容で良い感じなのですが..

2018年10月 3日 (水)

メインで使っているパソコンの切り替え

ちょと前に、メインで使っていたパソコンを中古で買ったHP Compaq 8300 Elite USに変更しました。

core i5-3470S 2.9GHz、RAM 4Gバイト、HDD 320Gバイトと、まあまあのスペックです。
送料込みで1,6800円にポイントを使って1,3000円くらいで購入した。

ビジネスパソコンのリース流れの製品と思われますが、
かなり状態が良く、新品に近い状態でした。
どこかのお役所であたりで使われていたものと推測出来ます。

コンパクトで、デザインも良くいい感じのPCです。
フロント上部のSDカードスロットがオプションで利用出来ない機種だったのがちょっと残念です。

Dscn8768

拡張性はほとんどないですが、余っていた4Gバイト RAMを追加してメモリは 8Gバイトにしました。

デフォルトの320Gバイト HDDが遅い感があり、
専用mSATAスロットに240GバイトSSDを追加して、OSを移行しました。

ちょっと冒険して下記の製品を利用しました。
Dogfish Msata 240GB 内蔵型 ミニ ハードディスク Msta SSD Disk (240GBK1)

01

中華製でちょっと不安ですが今のところ問題なしです。アクセス速度も速いです。
SSD mSATA SSD(MLC) 240Gバイトでこの値段、激安ですね。

SSDに買えると、かなり快適になりました。

2018年9月26日 (水)

豊四季Tiny BASIC for Arduino STM32 での単音演奏

豊四季Tiny BASIC for Arduino STM32 のV0.86で追加した、
PLAYコマンドで「ハレ晴レユカイ」を演奏してみました。

Dscn8878

演奏の様子


MML文で使用ているデータは「主体性の無いページ」さん公開が公開しているものを利用しました。
・主体性の無いページ(http://astr.me.land.to/
    MML(http://astr.me.land.to/tool/mabi/)
     ハレ晴レユカイ!(http://astr.me.land.to/tool/mabi/mml/hareyukai.htm)


この曲はアニメ 「涼宮ハルヒの憂鬱」のエンディング曲です。
勝手に使わせて頂き申し訳ないので、宣伝を入れておきます。
(バナーをクリックすると、各サイトにジャンプします)

Banner_sp_haruhi

Fanclub

Banner_kyoani_haruhi

Banner_kyoani_haruhimov

MML文はマビノギMMLに対応しています(ただし同時に1音しか出せません)。
MML文中の頭に"?"を付けると音を出す都度MML文を表示するようにしました。

01


豊四季Tiny BASIC for Arduino STM32では、NTSC、OLED、TFT等色々とサポートしていますが、
今回は最小構成+圧電スピーカーのシリアルコンソール画面の構成を使っています。

Serialconsole

MML文の音の大きさ指定のV(ボリューム)命令は、PWMのパルス幅の大きさで簡易的に対応しました。
引数の0~15のうち、0~5くらいは強弱が聞いて分かるのですが、
6~15は違いが判りません。まあ、おまけ機能的なものということで勘弁して下さい。


ちなみに、V0.86では、シリアルコンソール画面上で全角文字(シフトJIS)に対応しました。

02

2018年9月25日 (火)

3Dプリンターでの試行錯誤 その2

3Dプリンタ利用の練習として、
以前製作した下の写真 「I2C接続 16x8ドット LEDマトリックス」のケースを製作してみました。

Dscn4264_2

Dscn4266_2

3D図形の作成はTinkercadにて行いました。
形状は単純なので、割と簡単に作成出来ました。

03

ここで、寸法は実際の寸法よりも、縦横0.4mmほど大きくしています。
試行錯誤の結果、ノズル幅分の約0.4mm小さくなることが分かり、その調整をしています。

データを、STL形式でエクスポートして3Dプリンタに読み込ませて出力開始、
1時間ほどで出力出来ました。

Dscn8857

寸法はドンピシャ、ジャストフィットで収まりました。
いい感じにできました。

Dscn8864

とりあえずIchigoJamで動作、問題無く動作しました。
基板剥き出しから一転して、ちょっとおしゃれな感じになりました。

Dscn8877

動作はこんな感じです。



3Dプリンタ、色々と活用出来そうです。

より以前の記事一覧