さきがけて

青空文庫を "さき駈けて" OR "先駈けて" OR "さきがけて" OR "さき駆けて" OR "先がけて" OR "先駆けて" site:www.aozora.gr.jp/cards で検索してみる ("さきがけて" などで検索せずに "さきがけ" などで検索すればもっとたくさん見つかる)。 見つかったうち…

micro:bit に入力したパルスのパルス幅を測る / GPIO の IN レジスタの変化をポーリング方式で直接読み取る

#include "MicroBit.h" MicroBit uBit; int main(void){ // IN レジスタからは、各 GPIO ラインへの入力信号が H (1) なのか L (0) なのかが読み出せる。 // PIN_CNF[N] レジスタは、特定の GPIO ラインの状態が設定できる。 volatile unsigned int *IN = (u…

micro:bit / マイコンの内部レジスタを操作する / 何かを書き込む / 2 つの端子から同じタイミングで反転パルスを出力する

今度は、反転したパルスを 2 つの端子から同時に出力してみる。 OUTSET レジスタと OUTCLR レジスタとを使えば、複数のビットを同時に H にすること、複数のビットを同時に L にすることができるが、複数のビットの一部だけを H に、一部だけを L に同時に設…

micro:bit / マイコンの内部レジスタを操作する / 何かを書き込む / 2 つの端子から同じタイミングでパルスを出力する

micro:bit の P0、P1 からまったく同じタイミングでパルスを出力してみる。 int main(void){ unsigned int BaseAddress = 0x50000000UL; // GPIO の各種レジスタのベースアドレス // DIRSET は指定のビットだけを出力にセットするレジスタ (指定していないビ…

micro:bit / マイコンの内部レジスタを操作する / 何かを読み取る

データシート:nRF51822 / Bluetooth Low Energy / Products / Home - Ultra Low Power Wireless Solutions from NORDIC SEMICONDUCTOR 例として GPIO の DIR レジスタを読み取ってみる。各 GPIO ラインの入出力の向きを設定するレジスタである。 ベースアド…

micro:bit のイベントを使う 2 / 入力したパルスのパルス幅を測る

ポーリング方式ではなくイベントを利用してパルス幅を測ってみる。 #include "MicroBit.h" MicroBit uBit; // イベントハンドラーを定義する。 void getPulseWidth(MicroBitEvent e){ printf("%d\n\r", (int)e.timestamp); // コールされたらそのときのタイ…

micro:bit のイベントを使う 1 / 入力パルスの立ち上がりでイベントを生成して何かをする

ここでは入力パルスの立ち上がりでイベントを生成してそのときのタイムスタンプを表示してみる。 イベントの使いかたは下のとおりである。 イベント生成時にコールする函数 (イベントハンドラー) を定義しておく。 生成するイベントをメッセージバスに登録し…

micro:bit に入力したパルスのパルス幅を測る / H も L も測る / ポーリング方式

今度は H、L の両方を同時に測ってみる。 #include "MicroBit.h" MicroBit uBit; int pulseIn(int OneZero){ uint32_t start; uint32_t end; uint32_t elapsedTime; while(uBit.io.P0.getDigitalValue() == OneZero){} // H (L) の途中だったら一旦 L (H) に…

micro:bit に入力したパルスのパルス幅を測る / ポーリング方式

SG から micro:bit の P0 端子に方形波を入力してそのパルス幅を測ってみる。10 マイクロ秒くらいまで測れる。 #include "MicroBit.h" MicroBit uBit; int main(void){ uBit.init(); uint32_t start; uint32_t end; uint32_t epalsedTime; while(1){ while(u…

いわゆる busy wait を使う場合

何もしないループのこと。 #include "MicroBit.h" MicroBit uBit; volatile int i; int n = 20; int main(void){ uBit.init(); for(;;){ uBit.io.P0.setDigitalValue(1); for(i = 0; i < n; i++){} uBit.io.P0.setDigitalValue(0); for(i = 0; i < n; i++){}…

mbed の wait_us(マイクロ秒) 函数を使う場合

4 マイクロ秒きざみで増減できる。 #include "MicroBit.h" MicroBit uBit; int t = 21; int main(void){ uBit.init(); for(;;){ uBit.io.P0.setDigitalValue(1); wait_us(t); uBit.io.P0.setDigitalValue(0); wait_us(t); } return 0; }

mbed で MicroBit.h を使う場合 / MicroBit.sleep(ミリ秒)

6 ミリ秒きざみで増減できる。 #include "MicroBit.h" MicroBit uBit; int t = 20; int main(void){ uBit.init(); for(;;){ uBit.io.P0.setDigitalValue(1); uBit.sleep(t); uBit.io.P0.setDigitalValue(0); uBit.sleep(t); } return 0; }

MicroPython で microbit モジュールを使う場合 / microbit.sleep(ミリ秒)

6 ミリ秒きざみで増減できる。 from microbit import * t = 31 while True: pin0.write_digital(1) sleep(t) pin0.write_digital(0) sleep(t)

ディジタル GPIO への 2 つのアクセス方法

MicroBit オブジェクト上に作成された MicroBitPin オブジェクトを使う方法: 普通はこれでよい。 #include "MicroBit.h" MicroBit uBit; int main(void){ uBit.init(); for(;;){ uBit.io.P0.setDigitalValue(1); uBit.io.P0.setDigitalValue(0); } return 0;…

11 個のキーワードで学ぶ統計学入門 11 of 11 / ブートストラップ法

すでに存在しているデータからそのデータと同じ個数だけ無作為に抽出したデータでデータセットをいくつか作る。重複抽出を許容するので、元のデータを並べ替えるのとは異なる。 Calculator の場合: randSamp(リスト, 試行回数, 0) は重複を許容する。これが…

11 個のキーワードで学ぶ統計学入門 10 / 正規乱数

Calculator の場合: 構文: randNorm(平均, 標準偏差 [, 試行回数]) 実行結果: Nspired Lua で実行する場合: function normRand(mean, sigma, trials) local trials = trials or 1 return math.eval(string.format("randNorm(%s, %s, %s)", mean, sigma, tria…

11 個のキーワードで学ぶ統計学入門 9 / 正規分布 (の確率密度函数)

Calculator の場合: 構文: normPdf(x, 平均, 標準偏差) (Pdf は probability density function) 実行結果: Nspired Lua で実行する場合: function normPdf(x, mean, sigma) --return math.eval("normPdf("..x..","..mean..","..sigma..")") return math.eval…

11 個のキーワードで学ぶ統計学入門 7、8 / 線形回帰と最小二乗法

Calculator の場合: 構文: LinRegBx Xリスト, Yリスト (または LinRegMx Xリスト, Yリスト) 実行結果: Nspired Lua で実行する場合: function ols(xlist, ylist) local temp1 = "{"..table.concat(xlist, ",").."}" local temp2 = "{"..table.concat(ylist, …

11 個のキーワードで学ぶ統計学入門 6 / 相関 (correlation)

Calculator の場合: 構文: corrMat(リスト, リスト) 実行結果: Nspired Lua で実行する場合: function corrMat(list1,list2) local temp1 = "{"..table.concat(list1, ",").."}" local temp2 = "{"..table.concat(list2, ",").."}" --return math.eval("corr…

11 個のキーワードで学ぶ統計学入門 5 / 母共分散 (population covariance)

Calculator の場合 (組込函数が見つからないため自作する): Define covpop(seq1,seq2)= Func :Local mean1,mean2,num :num:=dim(seq1) :mean1:=mean(seq1) :mean2:=mean(seq2) :Return ((sum((seq1-mean1)*(seq2-mean2)))/(num)) :EndFunc実行結果: Nspired …

11 個のキーワードで学ぶ統計学入門 4 / 母標準偏差 (population standard deviation)

母分散の平方根のこと。 Calculator の場合: 構文: stDevPop(リスト) 実行結果: (stDevSamp() は不偏標本標準偏差) Nspired Lua で実行する場合: seq2 = {1,2,3,4,5,6,7,8,9,10} function stDevPop(list) local temp = "{"..table.concat(list, ",").."}" --…

11 個のキーワードで学ぶ統計学入門 3 / 母分散

Calculator の場合: 構文: varPop(リスト) 実行結果: (varSamp() は不偏標本分散) Nspired Lua で実行する場合: seq2 = {1,2,3,4,5,6,7,8,9,10} function varPop(list) local temp = "{"..table.concat(list, ",").."}" --return math.eval("varPop("..temp.…

11 個のキーワードで学ぶ統計学入門 2 / 中央値

Calculator の場合: 構文: median(リスト) 実行結果: Nspired Lua で実行する場合: seq2 = {9,9,1,5,4,7,0,3,9,2} function median(list) local temp = "{"..table.concat(list, ",").."}" --return math.eval("median("..temp..")") return math.eval(strin…

11 個のキーワードで学ぶ統計学入門 1 / 相加平均 (算術平均)

参考: 日経ソフトウエア 2018年 1 月号, pp.76-87 Calculator の場合: 構文: mean(リスト) 実行結果: Nspired Lua で Nspire ネイティブの組込函数を実行する場合 1: seq2 = {1,2,3,4,5,6,7,8,9,10} function mean(list) var.store("list", list) -- あらか…

micro:bit の最速パルス / ハードウェアを直接制御した場合

参考: Micro: Bit Iot in C, pp.54-56 周波数は約 2.3 MHz であった。ソースコードの意味は今のところまったくわからない。 int main(void) { volatile unsigned int *dirset=(unsigned int *)(0x50000000UL+0x518); volatile unsigned int *outset=(unsigne…

micro:bit の最速パルス / MicroPython の場合

MicroPython でプログラミングした場合の最速パルスを見てみる。 周波数は約 7 kHz であった。ディレイを挟んでいないのにデューティは 50% にならない。 from microbit import * while True: pin0.write_digital(1) pin0.write_digital(0)

micro:bit の最速パルス / MicroBit.h の場合

mbed オンラインコンパイラーの ボタンをクリックする。 新しいウィンドウが開く。下のように設定して [OK] をクリックする。 main.cpp ファイルを下のように書き換える。ディレイを挟まずに P0 端子をオン、オフするだけのプログラムである。 あとはコンパ…

micro:bit & mbed / L チカをしてみる

参考: Micro: Bit Iot in C, pp.11-14 BBC micro:bit は C/C++ でもプログラミングができる。ここでは mbed のオンラインコンパイラーを使って L チカをしてみる。 Sign | Mbed にアクセスする。 サインインすると、コンパイラーのタブが開く。画面右上にあ…

IIR フィルターを使って sin、cos を再帰的に求める / Python で再現する

参考記事: Interface(インターフェース) 2017年10月号, p.159 計算手順はわかるが理窟は全然わからない。 手順は下のとおりである。 a = 2 cos(Δθ)、c = -cos(Δθ)、s = sin(Δθ) の 3 つだけを組み込み函数か何かでちゃんと計算しておく。 u[n] = a * u[n-1] …

漢數字の漢音と呉音と

漢音 呉音 一 イツ イチ 二 ジ ニ 三 サン サン 四 シ シ 五 ゴ ゴ 六 リク ロク 七 シツ シチ 八 ハツ ハチ 九 キュウ(キウ) ク 十 シュウ(シフ) ジュウ(ジフ)