フォト
2017年5月
  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 31      
無料ブログはココログ

« 2015年5月 | トップページ | 2015年7月 »

2015年6月の15件の記事

2015年6月28日 (日)

秀丸エディタでIchigojamのプログラムをアップロード/ダウンロードする

秀丸エディタからプログラムをIchigojamにアップロードおよびダウンロードするマクロを作成しましたので公開いたします。
下は実際の操作の様子です。


マクロから、別途公開しているツールを呼び出していますので下記のツールが必要です。
ツールもダウンロードして、任意のディレクトリに配置して下さい。
ダウンロードはこちら: IchgoTools06.zip

ツールについては下記を参照下さい。
  ・IchigoJamで作成したプログラムをパソコンにロード/セーブする
  ・サクラエディタでIchigoJamのブログラムをロード/セーブする
  ・エクスプローラの「送る」でIchigoJamにプログラムをアップロードする

マクロは下記からダウンロードして解凍して秀丸エディタに登録して下さい。
ダウンロード hidemaru_macro01.zip (1.8K)

解凍すると、次のファイルが得られます。
  \秀丸エディタ_マクロ
      download.mac  ・・ ダウンロード用
      upload.mac        ・・ アップロード用

マクロを利用するにあたり、マクロから呼び出すツールのパスの設定と
利用するcomポートの設定が必要となります。各自の環境に合わせて修正してください。
    
download.mac
  $tool_path="D:\\IchigoJam\\tools\\rcmd";
  $tool_com="com5";

upload.mac
  $tool_path="D:\\IchigoJam\\tools\\rload";
  $tool_com="com5";

マクロの登録は秀丸エディタのメニュー [マクロ] - [マクロ登録]を選択して、
マクロ登録画面を開いて行います。

10

これにより、メニューの[マクロ]に登録されて、同メニューから呼び出して実行出来ます。

マウス右メニューでマクロを実行したい場合は、メニュー [その他] - [メニュー編集]で
メニュー編集画面を開いて登録します。

11

ユーザーメニュータブを選択し、[メニュー]で[メニュー8:右ボタン]を選択し
[追加]ボタンを押して、登録したいマクロを選択します。

12





2015年6月27日 (土)

Raspberry PiでLチカ

新しいデバイスを導入した際は、やはりLチカです。
これをやると、脳内に次の一歩へのイメージが構築されます。

Dscn3919

GPIOを制御してLEDを1秒間隔でチカチカさせています。

プログラムの作成は色々と調べた結果、pythonを使うのが一番簡単そうです。
黒猫のデルタさんのHP「Make.」 の記事「[Raspberry Pi]GPIOでLEDの点滅(Python)」
大変参考になりました。

これを手がかりに、pythonのライブラリ 「RPi.GPIO」を使えば色々と出来そうなことが
分かりました。このライブラリで何が出来るかは、
「raspberry-gpio-python Examples」を参照すると分かります。PWM制御も出来るようです。

黒猫のデルタさんのHP「Make.」 には「[Raspberry Pi]GPIOでLEDの点滅(C言語)」
記事でC言語でwiringPiライブラリを使った実装方法も解説しています。
wiringPiライブラリはArduinoに似た関数です。比較的ステップ数の少ない記述で
GPIOの制御が行えます。





2015年6月25日 (木)

Raspberry Piはじめました

amazonでRaspberry Pi 2 Model Bを購入しました。
購入目的・用途は、I2Cデバイス製作のテスト環境構築です。

Dscn3911

土日に環境構築を行う予定です。
これだけ話題になっていて遅すぎる間はありますが、
なぜ今かというと、CPUがCortex-A7になったからですね。

2015年6月22日 (月)

IchigoJamで疑似グラフィックを使った文字表示

IchigoJamの疑似グラフィック(64x48ドット)を利用した文字表示です。
USR関数を使ってC言語で作成した関数を呼び出して高速表示を行っています。

01

実際の表示した動画です。

Icihojamのソースは下記の通りです。
バージョン1.0.1のみに対応しています。他のバージョンでは動作しません。
現状、VRAM、変数領域、フォントデータの格納アドレスがバージョンにより異なります。
この当たりはプログラムカウンタからの相対アドレスで対応出来るか検討中です。

1 '
2 CLS:CLV:CLP
10 POKE#700,#1b,#4b,#c0,#00,#f0,#b5,#c6,#18,#1a,#4b,#1c,#88,#1a,#4b,#64,#01
20 POKE#710,#1b,#88,#e4,#18,#19,#4b,#e4,#18,#19,#4b,#c0,#18,#00,#25,#06,#21
30 POKE#720,#32,#78,#6b,#00,#cb,#1a,#1a,#41,#d2,#b2,#01,#27,#9c,#46,#13,#1c
40 POKE#730,#03,#39,#3b,#40,#0a,#40,#fa,#40,#bb,#40,#61,#46,#13,#43,#80,#3b
50 POKE#740,#db,#b2,#63,#55,#72,#78,#0a,#41,#03,#21,#d2,#b2,#17,#40,#11,#40
60 POKE#750,#7f,#00,#49,#08,#39,#43,#89,#00,#5b,#18,#63,#55,#01,#35,#04,#2d
70 POKE#760,#dd,#d1,#02,#36,#20,#34,#86,#42,#d8,#d1,#00,#20,#f0,#bd,#c0,#46
80 POKE#770,#6c,#49,#00,#00,#8a,#02,#00,#10,#88,#02,#00,#10,#88,#03,#00,#10
90 POKE#780,#74,#49,#00,#00
100 [0]=0:[1]=0
110 for I=0 to255
120 [0]=(I MOD 8)*4
130 [1]=(I/8 MOD 6)*4
140 U=USR(#700,i)
150 IF I MOD 48=47 WAIT 5
160 NEXT
170 GOTO 100

呼び出しているC言語ソースは次のようになります。

#include "lpc_types.h"
#define VRAM_ADR	((uint8_t*)0x10000388)	// VRAM先頭アドレス
#define FONT_ADR 	((uint8_t*)0x0000496C)	// フォントデータ先頭アドレス
#define VALUE_ADR  ((uint16_t*)0x10000288)	// 変数格納アドレス
#define CHR_BNK 	0x80

uint16_t draw_font(uint16_t c) {
	uint8_t* 	f_p = FONT_ADR + c*8; 	// フォント格納アドレス
	uint16_t* 	h_p = VALUE_ADR; 		// 変数格納アドレス
	uint8_t* 	v_p = VRAM_ADR; 		// VRAMアドレス
	uint8_t		d;
	int i,j;

	v_p+= *h_p;
	v_p+= *(h_p+1)*32;
	for (i=0; i<4;i++) {
		for (j=0;j<4;j++) {
			d = ( *f_p >> (6-(j<<1)) ) &3;
			*v_p = (d>>1 | (d&1)<<1) + CHR_BNK;
			d = ( *(f_p+1) >> (6-(j<<1)) ) &3;
			*v_p += (d>>1 | (d&1)<<1)<<2;
			v_p++;
		}
		v_p+=28;
		f_p+=2;
	}
	return 0;
}

コンパイルはWindows8.1上のLPCXpressoでダミーのプロジェクトを作成し、
上記の関数を記述したdraw_font.cをコンパイルしてオブジェクトファイル draw_font.oを
作成し、そのファイルからobjdumpコマンドにてコードを取り出して、IchigoJamに
移植しています。

objdump -s -j .text.draw_font draw_font.o

draw_font.o:     file format elf32-littlearm

Contents of section .text.draw_font:
 0000 1b4bc000 f0b5c618 1a4b1c88 1a4b6401  .K.......K...Kd.
 0010 1b88e418 194be418 194bc018 00250621  .....K...K...%.!
 0020 32786b00 cb1a1a41 d2b20127 9c46131c  2xk....A...'.F..
 0030 03393b40 0a40fa40 bb406146 1343803b  .9;@.@.@.@aF.C.;
 0040 dbb26355 72780a41 0321d2b2 17401140  ..cUrx.A.!...@.@
 0050 7f004908 39438900 5b186355 0135042d  ..I.9C..[.cU.5.-
 0060 ddd10236 20348642 d8d10020 f0bdc046  ...6 4.B... ...F
 0070 6c490000 8a020010 88020010 88030010  lI..............
 0080 74490000 

LPCXpressoに添付のobjdumpコマンドにてコード部を出力して加工後、
IcigoJamに移植しています。

USR関数の呼び出し U=USR(#700,I)を実行するとIの値はレジスタr0にセットされます。
呼び出されたC言語実装による関数はレジスタr0を関数の第1引数で受け取ることが
出来ます。関数の戻り値(return 0)はr0レジスタにセットされU変数にセットされます。

今回作成した関数はIcihojamの変数[0]、[1]を参照してフォントを表示する横、縦位置を
取得しています。[0]が横、[1]が縦位置です。
USR関数の引数には表示したい文字のキャラクターコードを指定します。

2015年6月17日 (水)

IchigoJamのデジタル入力ピン(IN1~IN4)について

※2016/09/10 追記 この記事の内容は古いです。現時点のV1.2.1とは仕様が異なります。


IchigoJamのファームウェアが1.0.1となり、仕様ほぼ固まったと思われます。
そこで、いくつか仕様について確認して行きたいと思います。

まずは、入力ピン(IN1~IN4)について仕様確認です。
バージョン0.9.7から1.0.1へのアップデートの間、プルアップの仕様が変わりました。
  ・0.9.7 :IN124はプルダウン、IN3はプルアップもプルダウンもしていない
  ・1.0.1 :IN124はプルアップ、IN3はプルアップもプルダウンもしていない

IN124に何も接続していないで、IN()命令で値を読むとバージョン0.9.7では、
IN124の値は0(たぶん:済みません確認していません)となり、  バージョン1.0.1では1となります。
IN3は、一応0となりますが、浮いている状態なので不安定となります。
(IN3はちょっと特殊なピンです。マイコンによるプルアップ設定が出来きません)

ボタンをIN1~IN4に接続してON/OFFを状態を取得する場合は、
ファームウェアのバージョンに気を付けて接続する必要があります。

バージョン1.0.1の場合は、
  「1.0.1 :IN1,2,4はプルアップ、 IN3はプルアップもプルダウンもしていない」
仕様なので、ボタンを接続する場合は下図のよう接続します。

09

上記で点線は、IcigoJamマイコン内をあらわしています。
IN1IN2IN4はIcigoJamのマイコン内でプルアップ抵抗が接続されており、
ボタンが押されていない場合(端子が短絡の場合)は、Hレベル(1)となります。
なので、ボタンを押された場合はL(0)になるようにボタンの片方をGNDに接続します。
(片方をVCCに接続してもHのままなのは分かりますよね)

一方、IN3はIcigoJamのマイコン内で何もしてくれていないので、
IN1IN2IN4と同じ動作をさせるためには、自分で抵抗を接続する必要があります。

ちなみに、IN1~IN4になにもつなげないでIN命令で値を読むとその結果は次のようになります。

20150617214034

IN()はIN1~IN4を同時に読むコマンドです。
IN(n)のように中に数字を指定するとINnの値を取得します。
IN1,2,4は内部でプルアップされているので1(レベルH)となります。
IN3は、一応0となっていますが状況によってり値が不安定となります。

エクスプローラの「送る」でIchigoJamにプログラムをアップロードする

以前「IchigoJamで作成したプログラムをパソコンにロード/セーブする」にて公開いたしました
ツールを使って、エクスプローラの「送る」でIchigoJamにプログラムをロードする方法です。

操作は次のような感じです。
左上の画面はIcihojamのビデオ出力をパソコンに取り込んで表示しています。


エクスプローラ上でIcigoJamにロード(アップロード)したいプログラムファイル上で
マウス右ボタンでメニューを表示し、「送る」の中の「IcigoJamにアップロード」を選択します。

あとは、勝手にアップロードします。非常に簡単操作です。

01

一応、その逆のIcigoJamからプログラムを取得する機能(インポート)も用意しました。
ただし、指定ファイルに上書きとなるのでちょっと注意が必要です。

インポートは、ファイルを新規作成してからそのファイルにインポートした方が無難です。
具体的には、
マウス右ボタンメニューで、「新規作成」 - 「テキストドキュメント」を選択して
「新しいテキスト ドキュメント.txt」を作成し、そのファイルを「送る」で
「IchigoJamにからインポート」を選択することで「新しいテキスト ドキュメント.txt」に
プログラムをインポートします。

この操作を可能にするための設定方法を以下に説明します。
事前に「IchigoJamで作成したプログラムをパソコンにロード/セーブする」を参照して
ツールのダウンロード、インストール等は済んでいるものとします。

マウス右ボタンメニューの「送る」のメニューに追加する方法
1)ショートカットの作成
   ツールをインストールしたフォルダにてショートカットを作成します。
   rload.exeとrsave.exeをそれぞれ選択し、マウス右メニューの「ショートカットの作成」で
   作成します。 

03_2

次にショートカットファイルの名前を変更します。
rload.exe - ショートカット  => IchigoJamにアップロード
rsave.exe - ショートカット => IchigoJamからインポート

次に各ショートカットファイルの設定を行います。
ファイルを選択して、マウス右メニューの「プロパティ」でプロパティを開き編集します。
下記の画面の内容のように「リンク先」にcom5(各自の環境に合わせて設定)を
追加、「実行時の大きさ」を「最小化」を指定します。

04

05

2)ショートカットを「送る」に登録
  エクスプローラを開き、「アドレスバー」に"shell:sendto"を入力してEnterキーを押します。
    06

次のようなフォルダが表示されます。このフォルダにアプリケーションのショートカットを
置くと、「送る」メニューに登録されます。

07

このフォルダに先ほど作成したショートカットファイルをコピーします。

08

これで、マウス右メニューの「送る」に追加出来ます。

以上です。

2015年6月16日 (火)

こどもパソコン『IchigoJam』ver 1.0リリース

本日、IchigoJamのver 1.0がリリースされました。やっと1.0が出ました。

02

早速、ファームウェアをアップデートしました。

03

バージョンは1.0.1のようです。
私が購入した時点よりも、かなり良い製品(OS)となりました。
I2C、FOR~NEXT、外部メモリ、音楽再生(MML)、PEEK、POKE、仮想メモリアクセス、PCG、
マシン語利用(USR関数)、2進数表記、16進数表記、ELSE文等多くの機能が追加されました。

予想通り、じわじわと人気が出てきており、今後の更なる浸透に期待したいところです。

Aliexpressで注文商品に部品不足があり紛争をおこしました

Aliexpressでロボットカーを注文し、商品が到着したのですが、Speed Encoder用の
黒い部品が含まれていませんでした。

注文した商品詳細をみると、商品記載内容が入れ替わっており、「Speed Encoder」の
文言は削除されていました。

Page

この件に対して、「部品が足りない。不足分を送ってほしい。」と問い合わせるも、
全く回答が無く無視されました。

同売り手のフィードバックを見ると、問題発生時は全く対応しない「無視」を貫く
売り手のようです。

謝罪や交渉も無しです。
仕方がなく紛争を起こすことにしました。
こちらは、「不足分のパーツの送付、出来ないのであれば全額払い戻し」を
要求しました。

売り手の回答は「$2の払い戻し」での対応を要求してきました。
ただし、謝罪等は一切無しです。

不足分の部品は別途購入すると、送料込みで$5するのでこれは拒否し、
エスカレーション処理を行い、Aliexpressに間に入ってもらうことにしました。

紛争を「エスカレーション」処理したのは今回が初めてです。
この業者は何を考えているのだろう。勝ち目はないのに、
紛争に負け、評価も☆1つで良いことはないはずなのに...

Aliexpressには下記のことを連絡しました。
・今回の件は売り手の落ち度だが、その対応を売り手が怠っている。
・連絡を取ろうとしても売り手が拒絶しており、謝罪もない。
・商品説明の記載内容が私の指摘後に変更されている。
・不足分の部品がないと商品として機能しないので、不足分部品の送付を要求する。

この後も売り手からの謝罪、連絡は無かったものの、
Aliexpressからの謝罪があり、
「売り手に部品を送らせる指示をしました。10日以内に配送のトラッキング番号を
  あなたに示すように指示しました。」
とのことで私の言い分が通りました。

01

この売り手のフィードバックを見ると、不良品を売りつけるような悪質業者ではありませんが、
商品不良・欠品、商品不達等の問題が生じた場合は一切の対応を行っていないようです。
商品不良・欠品、商品不達発生率が低いため、評価は「96.3% Positive feedback」と
高くなっています。

今後は、問題発生時の対応についても確認して注文した方がよさそうです。

Aliexpressは色々と批判もあるようですが、証拠をちゃんと揃えて主張すれば
それなりの対応をしてくれます。まずは面倒でもちゃんと交渉をしましょう。

2015/07/9 追記
不足分の部品は「紛争」を起こしてから10日で到着しました。
そのため、「紛争」をキャンセルしとりあえず「Status:Finished」となり終了です。

本日、売り手評価の催促メールが送られてきたので
評価は「★☆☆☆☆」とし、業者への辛口のコメント+Aliexpressの仲介で
問題が解決できたことをコメントしました。

2015年6月14日 (日)

IchigoJamでDVR8830を使ったロボットカー制御(2)

ちょっと間が空きましたが、前回の続きです。

ロボットカーのキャスターが不調のため、ホームセンタで購入した別の物に交換しました。

        Dscn3895
                       (写真は構成を変更作業中の様子です)

更にブレットボードからユニバーサル基板実装に移行しました。
また電池をエネループ3本(3.6V)に変更してDC-DCコンバータを不要としました。
有線リモコンをこの前作成した、赤外線リモコンに変更しました。
  関連記事:LPC810を使ってIchigoJamで赤外線リモコン受信を行う
                 LPC810を使ってIchigoJamで赤外線リモコン受信を行う(2)

前回よりもコンパクトになりました。

Dscn3897

早速走行試験をしてみます。
今回、助手のるみちゃんは怯えて隠れてしまい手伝ってくれませんでした。



いい感じで動きました。赤外線リモコンでも2、3メートルくらいは離れていても
操作出来ています。

IchigoJamのプログラムはこんな感じです。
意外と短い記述で済みます。Arduinoを使うよりも簡単に動かせます。
1.0.0b16でバグがあり、ちょっとハマりました。110から190行で省略可能なTHENを
省略すると16進数の判定が正しく行われませんでした。なので省略しません。

10 CLS:CLV
20 POKE #700,0,0,0,0,0
30 LET[0],#F<<2+`10,0,#F<<2+`01,#0
40 'I2C IR remote
50 R=I2CR(#20,#704,1,#8CC,4)
60 LC 0,0:?HEX$(B,2);:?" ";:? A
70 IF A=1 GOTO 50
110 IF B=#08 THEN C=[0]:D=[1]:GOTO 200
120 IF B=#A8 THEN C=[1]:D=[1]:GOTO 200
130 IF B=#28 THEN C=[2]:D=[1]:GOTO 200
140 IF B=#88 THEN C=[0]:D=[0]:GOTO 200
160 IF B=#98 THEN C=[2]:D=[2]:GOTO 200
170 IF B=#48 THEN C=[1]:D=[0]:GOTO 200
190 IF B=#68 THEN C=[1]:D=[2]:GOTO 200
195 C=[1]:D=[1]
200 GOSUB 500
210 GOTO 50
500 'MTR DRV(C,D)
510 POKE #701,C:POKE #703,D
520 R=I2CW(#60,#700,1,#701,1)
530 R=I2CW(#64,#702,1,#703,1)
540 RETURN

もうちょっとアクションを増やしたり、センサー類を付けて遊んでみたいと思います。

2015年6月12日 (金)

IchigoJamの仮想アドレスの実アドレス

2016/03/31 追記
  この記事の内容は古いです。ファームウェアV1.1.β11以降では、USR関数の呼び出しで、
  マシン語プログラム側で実アドレスが取得可能となり、バージョンによる依存が無くなりました。

  => 関連記事:IchigoJamのマシン語呼び出しの機能追加の確認(ファームウェアV1.1β11)
      
IchigoJamでは、PEEK、POKE命令で、
VRAM、変数領域、プログラム領域、フォントデータ領域のアクセスが出来ます。
その領域のアドレスは仮想的なアドレスですが公開されています。

さらに、USR関数というマシン語(アセンブラコード)の呼び出しが出来る関数も利用できます。
ここでマシン語とはCPUが直接処理できる命令のことを言います。
このマシン語からVRAM、変数領域、プログラム領域、フォントデータ領域をアクセスする場合、
仮想アドレスではなく、実アドレスが必要となります。

この実アドレスをちょっと調べて見ました。次のような感じになります。
ただし、これはバージョン 1.0.0b16 の場合です。他のバージョンでは異なる可能性があります。
仮想アドレス                  用途                         実アドレス
#000-#6FF    キャラクターパターン #00-#DF (読取専用) 0x0000488c - 0x00004F8B
#700-#7FF    キャラクターパターン #E0-#FF            0x10000190 - 0x1000028F
#800-#8FF    変数[0]-[100]、A-Z                      0x10000290 - 0x1000038F   
#900-#BFF    画面(VRAM) 32x24                        0x10000390 - 0x1000048F
#C00-#FFF    プログラム領域             0x10000690 - 0x10000A8F

2015/06/19 追記
V1.0.1の実アドレスは次のようになります。
仮想アドレス                  用途                         実アドレス
#000-#6FF    キャラクターパターン #00-#DF (読取専用) 0x0000496c - 0x0000506B
#700-#7FF    キャラクターパターン #E0-#FF            0x10000188 - 0x10000287
#800-#8FF    変数[0]-[100]、A-Z                      0x10000288 - 0x10000387   
#900-#BFF    画面(VRAM) 32x24                        0x10000388 - 0x10000487
#C00-#FFF    プログラム領域             0x10000688 - 0x10000A87

実際にこの実アドレスをアクセスするマシン語(アセンブラコード)プログラムを作成し、
IchigoJamにて実行してみました。

注意:下記は1.0.0b16用です。
1 CLS
10 POKE #700,#0f,#4b,#c0,#00,#c0,#18,#0f,#4b
20 POKE #708,#0f,#4a,#1b,#88,#12,#88,#5b,#01
30 POKE #710,#9b,#18,#0e,#4a,#30,#b5,#9c,#18
40 POKE #718,#0d,#4a,#9a,#18,#00,#23,#80,#21
50 POKE #720,#19,#41,#05,#78,#29,#40,#00,#d0
60 POKE #728,#01,#21,#e1,#54,#01,#33,#08,#2b
70 POKE #730,#f5,#d1,#20,#34,#01,#30,#94,#42
80 POKE #738,#f0,#d1,#00,#20,#30,#bd,#c0,#46
90 POKE #740,#8c,#48,#00,#00,#92,#02,#00,#10
100 POKE #748,#90,#02,#00,#10,#90,#03,#00,#10
110 POKE #750,#90,#04,#00,#10 
120 [0]=0:[1]=0
130 FOR I=0 TO 255
140 U=USR(#700,I)
150 [0]=(I MOD 4)*8
160 [1]=(I/4 MOD 3)*8
170 IF I MOD 12=11 WAIT 5
180 NEXT
190 GOTO 120

注意:下記は1.0.1用です。 
1 CLS
10 POKE #700,#0f,#4b,#c0,#00,#c0,#18,#0f,#4b
20 POKE #708,#0f,#4a,#1b,#88,#12,#88,#5b,#01
30 POKE #710,#9b,#18,#0e,#4a,#30,#b5,#9c,#18
40 POKE #718,#0d,#4a,#9a,#18,#00,#23,#80,#21
50 POKE #720,#19,#41,#05,#78,#29,#40,#00,#d0
60 POKE #728,#01,#21,#e1,#54,#01,#33,#08,#2b
70 POKE #730,#f5,#d1,#20,#34,#01,#30,#94,#42
80 POKE #738,#f0,#d1,#00,#20,#30,#bd,#c0,#46
90 POKE #740,#6c,#49,#00,#00,#8a,#02,#00,#10
100 POKE #748,#88,#02,#00,#10,#88,#03,#00,#10
110 POKE #750,#88,#04,#00,#10
120 [0]=0:[1]=0
130 FOR I=0 TO 255
140 U=USR(#700,I)
150 [0]=(I MOD 4)*8
160 [1]=(I/4 MOD 3)*8
170 IF I MOD 12=11 WAIT 5
180 NEXT
190 GOTO 120

実行結果は次のような感じです。


マシン語からはIcigoJamの変数[0]、[1]の参照、VRAMへの書き込み、フォントデータ
の読み込みを行っています。

IcigoJamでUSR関数を使ってマシン語を実行すると高速な処理が行えます。


2015年6月 9日 (火)

IchigoJamでFizzBuzz

有名な「コード・ゴルフ」の「FizzBuzz」を
IchigoJamでやってみました。68文字で実装出来ました。
意外と短くてちょっと驚きです。

1 FORI=1TO100:IFI%3*I%5?I;
2 IFI%3=0?"Fizz";
3 IFI%5=0?"Buzz";
4 ?:NEXT

「FizzBuzz」問題は次の通りです。
  ・1から100までの整数を表示するプログラムである。
  ・ただし、3の倍数の時は整数の代わりに「Fizz」と表示する。
  ・5の倍数のときは「Buzz」と表示する。
  ・3と5の両方の倍数の場合は「FizzBuzz」と表示する。


結果
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
・・
97
98
Fizz
Buzz

これよりも、短く記述出来る方、コメント下さいね。

2015年6月 7日 (日)

サイクリングの途中で今戸神社に寄りました

今日は暑くもなく寒くもなくサイクリング日和。
ちょっとスカイツリー方面に出かけました。途中で、「今戸神社」に立ち寄りました。
猫好きには聖地の場所です。沖田総司のゆかりのある地でもあるようです。

02

03

04

05

10

おみくじ買ってきました。

Dscn3890


2015年6月 6日 (土)

LPC810を使ってIchigoJamで赤外線リモコン受信を行う(2)

この前ブレッドボード上に実装して赤外線リモコン受信をユニバーサル基板に実装しました。
秋月電子でちょうどいい感じの基板が売っていたの利用してみました。

Dscn3887

端子はVCC、GND、SDA、SCLです。ユニバーサル基板実装時のシリアル通信、
ISP用、リセット用のタクトスイッチは省略しました。

Dscn3888

IchigoJamに接続して問題なく動作することを確認しました。

Dscn3881


結線はこんな感じです。抵抗は2.2kΩ(1/6w)を利用。回路図は前回と同じですが、
シリアル、ISP用タクトスイッチは省略しています。

02

これを使って、以前試した「IchigoJamでDVR8830を使ったロボットカー制御」
有線リモコンを赤外線リモコンに置き換える予定です。


2015年6月 5日 (金)

STM32F103C8T6でVGA出力を試してみました

下記のサイト

  ARTEKIT VGA output using a 36-pin STM32
  http://www.artekit.eu/vga-output-using-a-36-pin-stm32

で公開されているSTM32F103C8T6によるVGA出力を試してみました。
回路は至ってシンプルです。公開されている接続だと液晶モニタにダメージを
与えそうななので、映像信号を3.3Vから0.7Vに落とすために300Ωの抵抗を入れています。
また、表示色を白にしたいためR、G、Bに同じ信号を与えるようにしました。

Dscn3867

一応、映ってくれました。映像的には若干右側にギザギザ表示が生じてあまり綺麗じゃないです。

Dscn3871

TV(パナソニック製)のVGA入力では同期がとれず正常に移りませんでした。

実際のデモ表示の動画です。


今回使用したSTM32F103C8T6 ミニボード、小さくて使い勝手もよいです。

映像表示処理はDMAを使ってデータ転送を行っているため、CPU負荷はあまり
かかっていないようです。日本語漢字フォントを表示したいところですが、
漢字フォント参照をどう実現するかが問題ですね。
もうちょっと勉強が必要ですね。

2015年6月 3日 (水)

Windows 8.1で中国語(簡体字)の手書き入力を行う

Windows 7ではIMEの手書きパッドで簡体字の手書き入力が出来たのですが、
Windows 8.1(アップデート済)でいつの間にか出来なくなっています。
これには困ってしまい、電子辞書を買うはめになってしまいました。

何とかならないだろうかと改めて調べて見ると、
「簡体字手書き入力を行う2つの方法」がありました。 以下その方法についてのメモです。
本設定は事前に、簡体字入力可能な状態に設定済でIMEの切り替えが下記のように
行える状態であることを前提とします。

IMEメニュー

以下に2つの方法の設定と使い方についてまとめました。
   方法1  IMEパッドを使う
   方法2  タッチキーボードを使う

方法1: 日本語入力モードでIMEパッドを使って簡体字を入力する

      この方法は日本語入力モードでないと入力出来ません。
      IMEを中国語(簡体字)入力モードにするとIMEバッドを表示することが出来ません。
      日本語入力モードでIMEパッドを表示していても、中国語入力モードにすると
      ウィンドウが閉じてしまいます。
      なんて不便(不具合?)な仕様なんでしょうかね。

      デフォルトでは、入力出来ないのでまずはその設定を行います。

      (1)タスクバーのIME上の「あ」または「A」の部分でマウス右ボタンクリックで
         メニューを表示し、「IMEパッド」をクリックします。これにより「IMEパッド」が
         表示されます。
    
      IMEメニュー

      (2)表示されたIMEパッドの「手書き」アイコンの上でマウス右ボタンクリックして
       次のようなメニューを表示して「ユーザー設定」を選択します。

      IMEパッド

      次のような「アプレット メニューの変更」画面が表示されます。
      
      04

      (3)ここで「利用できるアプレット」の中から「Hand Writing(CH)」を選択し「追加」ボタン
      をクリックして追加登録します。追加すると次のような感じになります。

      05

      この画面を閉じると、IMEパッドに「Hand Writing(CH)」が登録されます。
      このアイコンを選択すると簡体字の手書き入力が行えます。

      06


方法2: タッチキーボードを使った手書き入力

    
こちらの方法がおすすめです。

    
タッチキーボードはデスクトップ上に表示して文字入力が出来る次のような画面です。
     タブレットでは、文字入力においては無くてはならない機能です。
     デスクトップパソコン、ノートパソコンでも利用できます。

    07

    まず、次の設定を行っていつでも利用出来るようにします。
    タスクバー上で、マウス右ボタンクリックでメニューを表示し、「ツールバー」の
    「タッチ キーボード」に選択します。 

    08

  この設定により、タスクバーの右(ツールバー領域)に「タッチキーボード」のアイコン
    が表示されます。このアイコンをクリックすることで「タッチキーボード」の表示・非表示
    を行うことで出来るようになります(下図の左側のキーボードのアイコンです)。

    09

    「タッチ キーボード」上の右下のボタン「日本」をクリックすると言語選択と入力形式の
    選択メニューが表示されて切り替えが行えます。

   10

   ここで「中国語(簡体字)」を選択し、手書き(鉛筆のアイコン)を選択することで
   簡体字の手書き入力が行えます。

   11

   実際にマウスで手書き入力を行うとすぐに変換されます。
   12

   変換結果は手書き部分に表示され、「挿入」をクリックすることで入力先に文字が
   入ります。

   13

   手書き領域が4文字分あるので、素早く手書き入力が出来ます。
   

関連記事
  ・Word2013(Windows 8.1環境)で中国語(簡体字)にルビを振る
  ・Windows 8.1のIMEで簡体字(中国語)を入力できるようにする
 

« 2015年5月 | トップページ | 2015年7月 »