迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

店の電飾(2)回路の変更とスケッチ

回路をちょっと変更、というか追加。
最初はMOS-FETを二個しか使ってませんでした、手持ちがそれだけだったからです。
先週、足りない部品を買いに行ったときについでにMOS-FETも買っておけばよかったんですが、急いでいたので全く考えが及びませんでした。

昨日、仕事帰りに共立電子で2SK4017を買いました。

電飾コントローラ回路2

これで三つのLEDを制御できるようにりました。

さてスケッチです。
LEDがふわっと明るくなって、ふわっと消える。要するに正弦波みたいな感じにしたいわけです。
まず次の関数で明るさをコントロールするようにしてみました。
w(x)=0.5-0.5*cos(2*pi*x) (pi は円周率)

実はこの関数はハン窓というFFTの窓関数と同じです。
それでいくつかの窓関数を試したのですが、見た目大差無かったのは先の記事で書きました。
そんななかで赤池窓を使うことにしました。
ところで、この赤池とは赤池啓次氏のことでしょうか?

式は
Akaike(x)=0.625-0.5*cos(2*pi*x)-0.125*cos(4*pi*x)
です。
これを反転させ、x方向に0.5シフトさせた式(INV_Akaikeと名づけました)も作りました。
INV_Akaike(x)=0.375-0.5*cos(2*pi*x)+0.125*cos(4*pi*x)

グラフです、上がAkaile(x)、下がINV_Akaike(x)です。
Akaike_inv_Akaike.jpg

これを元にさらに四つ輝度関数を追加しました。
具体的には x -> 2*x とします、このままでは 0<=x<=1の間にピークが二つ出来るので、x=0.5 で切り分けます。

下のグラフはAkaike(x)に上のやり方を行った結果で、赤をAkaike2(x)、青をAkaike3(x)とします。
Akaike2_3.jpg

INV_Akaike(x)にも同様の変換を行いました、グラフは省略します。

さらに、のこぎり波を使って二つ作りました。
Sawthooth(x)=x
Sawthooth2(x)=1-x

合計八つの輝度関数を作りました。

スケッチはこちら

あれこれやった名残りで使ってない輝度関数もあります。Welch() と Blackman()がそうです。
loop()内で乱数を使って三つのLEDにそれぞれ輝度関数を選んで点滅させています。
スポンサーサイト

店の電飾

七夕に向けて店の飾りつけをしようという話で盛り上がっていたので、テープLEDを持って行って光らせたら、「電飾作ってね」との(元)お嬢様方からの下命(汗)。
数日中に社長巡回があるからそれまでにどうにか格好つけてくれ、って納期がタイトだ、こっちは趣味でやってるんだぞ。

手持ちの部品をかき集め、足りない部品は検索してから共立電子で求めました。
ネジ式端子台 6PとかスナップインタイプのDCジャックとか・・・。
電飾コントロール

どうにかでっち上げました。入れ物は百均のプラケース。格好悪いのはご勘弁。
電飾コントローラ工作終了

テープLEDとの接続はネジ式端子台を使いました、考えた中ではこれが一番安い。
電飾コントローラ表
Arduinoの取り付けはスペーサー三つ、四つ目は下の写真のようにピンソケットが干渉するのでつけませんでした。
UNO-R3取り付け穴

スケッチを書き換えられるように穴を開けました、不恰好ですが。
電飾コントローラ横

点灯試験中。
電飾コントロール点灯試験中

回路図です。時間がないのであまり考えずに作りました。
analogWrite()はPWMですのでこれでテープLEDの明るさを制御します。
電飾コントローラ回路
自分の手元になく、誰がどうさわるかわからない。テープLEDをショートでもされたらたまらないのでポリスイッチを入れましたが、二つは必要なかったですね。
R1は電圧ドロップ用です、Arduino上のレギュレーターの負担を減らすためですが、両端電圧を測ったら4.7Vでした。電流は23.5mAということになります。これぐらいだったらR1は必要なかったですね。

テープLEDが点灯したままでは全く面白くないので、ふわっと明るくなっては消えるようにあれこれ点滅パターンを試しましたが、あまり凝っても見た目は大差なかったです。

取りあえず社長巡回には間に合いました。
私はその前に帰ったので、どういう評価だったかはまだ知りません。

Arduino Pro Microを試す。(3)HIDとして使う(2)

前の記事では会社のバーコードスキャナーにスイッチを付けてというか乗せてTabコードを出すことを考えましたが、Shift-Tabも出せたほうが便利だと思います。Tabで次のフィールドに移動、Shift-Tabで前のフィールドに移動します。さらに後で何かの機能を追加するかもしれないので、結局スイッチを三個つけることにしました。
バーコードスキャナーの上に何らかの方法でスイッチを乗せ、本体側とケーブルでつなぎます。単純に考えると配線が四本必要になりますが、これを二本でやりたいわけです、シールド線を使うことになりますが。
Arduinoのアナログ入力を使い、抵抗による分圧によって電圧を変えます、スイッチごとに違う電圧が出ればいいわけです。
本体とは1.5メートルほどあります、念のため断線や短絡があればそれも検出できればいいでしょう、ただ道具が無い会社では修理は無理ですけど。(勤め先はスーパーマーケットですので)

一応回路図です。点線から右側がスイッチ部です。
アナログ入力 A0 を使いました。
VCC=5Vとして、断線ならA0の電圧は5Vになりますが、
スイッチが何も押されていない時 4V
SW1 オンの時 3V
SW2 オンの時 2V
SW3 オンの時 1V
となるように抵抗値を計算しました。当然短絡時は0Vです。
二線式スイッチ回路図

実験の様子、R1は手持ちにあった金属皮膜の1%を使いましたが、他は5%のカーボンです。
スイッチはもっと増やせますが、そうすると1%が必要になるでしょう、今回はこれで十分です。
二線式スイッチ


スイッチの状態はAD変換値をADCresultとして
SW=(ADCresult+102)/205
で計算できます、102≒1023/10、205≒1023/5です。
SW=
5 断線
4 スイッチオールオフ
3 SW1 オン
2 SW2 オン
1 SW3 オン
0 短絡
です。
スケッチはこちら
とりあえずのスケッチですので断線・短絡時には何もしていません、LEDを点滅させるかブザーを鳴らすなどすればいいと思ってます。
スケッチ内にdelay()を多用してますが、delay時間が適当かどうかも十分検討はしていません。
SW1 にTab、SW2にShift-Tabを割り当て、表計算ソフトでアクティブセルが移動するのが確認できました。

なお、抵抗分割によるスイッチ入力にはしなぷすさん抵抗分圧器を使った、多くのスイッチのセンシングという記事がありました。
私のやり方ではスイッチを同時押しすると値は変なことになりますが、しなぷすさんの方法だとスイッチに優先度があるので優れています。

Arduino Pro Microを試す。(2)HIDとして使う

今回買ったArduino Pro Micro や Arduino Leonardo などATMega32U4を乗せたボードはHIDとして使えます、キーボードやマウスのフリをさせることが出来ます。
私があれこれ書くより下記のリンクを読んでもらったほうがいいでしょう。

参照リンク
Arduino Leonardo(Pro Micro)のHID(キーボード)機能を使う
Mouse and Keyboard libraries

実験の様子、といってもスイッチ一つ付けただけです(汗
スイッチを押すとキーボードのTabキーを押したのと同じ動作をします。
Tabキーだけのキーボードというわけです、スイッチを増やせばほかにもいろいろ出来ますが。


スケッチです。
// Keyboard Tab
// 2017/06/04 edy

#include "Keyboard.h"

void setup() {
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
}

void loop() {
while (digitalRead(2) == HIGH) {
delay(100);
}

Keyboard.press(KEY_TAB);
delay(100);
Keyboard.releaseAll();// Keyboard.release(KEY_TAB);

while (digitalRead(2) == LOW) {
delay(100);
}
}


こんな実験をするには理由があります。
某スーパーで発注業務をしています、昨年ウィンドウズタブレットが新たに導入されました。それまではほぼA4サイズのWindowsCEマシンを使ってました。
それまでとは作業内容が変わってしまいました。
通常の発注業務はいいんですが、時々ある商品入れ替え時に面倒な思いをすることがあります。
タブレットにハンディスキャナを繋ぎ、登録商品のJANコードをスキャンしてタブレットに入力します。次のスキャンをする前にタブレット画面でキャレット(Iビーム)を次の入力フィールドに移動する必要があります。画面のフィールドを指で押せばいいんですが、これが反応がいまいち悪く、おまけにキャレットが見にくい(老眼なので^^;;)ため移動失敗に気づかないことがあり、かなりイライラさせられます。
左手にタブレット、右手にハンディスキャナ、JANコードをスキャンした右手でタブレットの画面を押すという操作も結構面倒です、視点移動がありますから。
Tabキーを押せばフィールドの移動が出来るのはわかってるんですが、タブレットのスクリーンキーボードのTabキーを押すのでは意味がありません。
ハンディスキャナにスイッチがあって、それを押せばTabキーを押したのと同じになればいいわけです。
これがこの実験の理由です。

とはいえ、タブレットもハンディスキャナも会社の物ですからやらせてもらえるかどうか。

Arduino Pro Microを試す。(1)

AliExpressからArduino Pro Micro互換機を購入しました。
USB microBコネクタがちょっと斜め。
pro_micro_photo.jpg


SparkFunによるArduino互換機で、そのまた互換機を購入したわけです。

ATmega32U4を搭載しておりUSBにつながるので、USB-シリアル変換チップは必要ありません。またHIDとしても使えるそうです。

関連リンク
SparkFun Pro Micro
Hookup Guide
Installing on Windows

Arduino互換ボード「Pro Micro」の情報まとめ
(Arduino) Pro Micro

使うにはデバイスドライバとボードデータを追加する必要があります。
Installing on Windowsに詳しく書かれています。

デバイスドライバのインストールにはデバイスマネージャーを開く必要があります、今まではコントロールパネルから開いてたのですが、Windowsキーと Rキーを押すと「ファイル名を指定して実行」が開くので devmgmt.msc と打ち込んでOKをクリック、簡単です。初めて知った方法ですので覚書として記録しておきます。


 | HOME | 

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

店の電飾(2)回路の変更とスケッチ Jun 25, 2017
店の電飾 Jun 18, 2017
Arduino Pro Microを試す。(3)HIDとして使う(2) Jun 15, 2017
Arduino Pro Microを試す。(2)HIDとして使う Jun 04, 2017
Arduino Pro Microを試す。(1) Jun 03, 2017
脈拍センサー MAX30102を試す(2)MAX30100と比較 May 29, 2017
脈拍センサーMAX30102を試す(1) May 25, 2017
脈拍センサーMAX30100を試す(5) May 20, 2017
MT3608モジュールを使ったDSO Shell用電源 May 16, 2017
脈拍センサー MAX30100を試す(4)MAX30100_Registers.h を調べる。 May 13, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

このブログをリンクに追加する

月別アーカイブ

06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (403)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (31)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん