備忘録 (5/22)

面白い記事があったのでメモ。


タイトルは目を引くが、色んな意見があるな~

色んな面から見ないとね。

言ってる事は「気にしないでやってもいいよ」。少し上の世代からの応援だ。

[PR]
# by k1segawa | 2017-05-22 22:24 | Comments(0)

テキストボックスにフォーカスが移るとIMEが勝手に日本語入力モードに変わるのを抑止 (5/22)

Windows10 大型アップデート後、MS IMEを使ってるとchrome の URL入力エリア等にキーワード入力したりするのに、いつも日本語モードになってしまい、いちいち解除しなければならなかった。

つい最近まではそんなことは無かった気がするので、大型アップデートでWindows10の挙動がデフォルトに戻されたのだろう。

そうしたら、ねこま@猫間屋さんのヨコハマ買い出し紀行のつぶやきでも同じ事をおっしゃっていたので、検索してみたら、XPまでの変更方法が以下のサイト様に載っていた。


しかし、Windows10 の大型アップデート後には該当のキーシーケンスという項目はない。

なので、次の画面で赤枠の中のチェックを外すと解決した。
a0034780_11563665.png
コントロールパネル>言語>言語設定の変更-日本語-オプション>入力方式-Microsoft IME-オプション>詳細設定。
または画面右下タスクトレイの「あ」を右クリック>プロパティ>詳細設定かな。

キーシーケンスという言葉がわかりづらかったからこれに変更したのだろうが、予想だにしていなくてどこにあるかわからなかったよ。

[PR]
# by k1segawa | 2017-05-22 12:08 | パソコン | Comments(0)

J:COM LG Wine Smart(LGS01)で Jアラート を受信する (5/22)

LG Wine Smart (LGS01) は、そのままでは Jアラートを受信できない。


J:COM モバイル(J:COMじゃなく)は、3大キャリアじゃないので自分の基地局からJアラートを携帯端末に配信できないので、アプリで受信する。

上記の推奨アプリ「Yahoo!防災速報」で、Yahoo!がデータ送信として配信するJアラートを受信する。
a0034780_02071667.png
これをインストールする(インストール済みなので、開くになっている)。

アプリを開くと次のような画面になっている。
a0034780_02092532.png
GPSがONになっていると中央に地域の名称が表示されているかもしれない。
右上の設定(歯車)アイコンを押す。
a0034780_02105496.png
「地域を設定」の「+」をタップする。GPSがONになっていれば次の画面になる。
a0034780_02133687.png
OKで地域が設定される。
a0034780_02152836.png
次の画面で、地震が震度3で通知されるので、うっとうしければ震度5以上にする。
a0034780_02155715.png
メインのJアラートは以下の画面のように表示されている。
a0034780_02171723.png
特に変更が無ければそのままで終了(キーボードの電源切りボタンや〇ボタン)する。

アプリを入れると容量が心許無くなるので、次のようにホーム画面から「シンプル設定」を選んで、
a0034780_02204856.png
次の画面の「すべての設定を表示」を押す。
a0034780_02215615.png
スクロールして「ストレージ」を選ぶ。
a0034780_02224205.png
先頭画面で空き容量が表示されているが、また下にスクロールして「キャッシュされたデータ」をタップして削除すると、空き容量が数十MB増えているはず。
a0034780_02231422.png
なるべく写真やスクリーンショットはSDカードに入れた方がいい。
ダウンロードも削除できるかも。

あと標準メールアプリはGMailだが、Google Inboxでもいい。使い勝手はそんなに変わらない。左端画面外から内側に向かってスラッシュするとメニューが出てくるのも同じ。ただ、Inboxは添付ファイルのサムネイル表示で通信するので、節約するならGMailかな。

[PR]
# by k1segawa | 2017-05-22 01:59 | J:COM | Comments(0)

余裕を持って (5/17)

時間に正確な列車運行(多少の遅れも許容しない方)や行き過ぎたクレーム、SNSによる監視社会。Twitterが「つぶやき」でなくなっている。もっと力を抜けばいいのにね。

気にしなくていいのに。


年取ると愚痴っぽくなるけど、いちいち聞く必要はない。


言いたいだけ。それは主義や主張ではないから。心配しなくていいから。


そう捉えるとメリットのある人が反応するだけだから。


不快になる必要もないから。


色んな考えが許容される世界。


面と向かって嫌な事をはっきり言うのも親友だから、というのはもう古いのかな。


[PR]
# by k1segawa | 2017-05-17 21:20 | Comments(5)

Gigazine 下スクロール時 ゆっくり改善。Google Chrome スクロール予測 有効化 (5/16)

最近、プロバイダーと無線LANルータを変えてネットの速度が劇的(20未満→90前後)に上がったのだけど、写真を多用するサイト様(Gigazine等)の描画がCPUを酷使してつらい。まあ、デスクトップだという事でまだオンリーHDD運用なのも関係するかも。

そこで、2015年に発表されていたWebAssemblyを有効にしてみた。(記事名とは違うが、最後に記述する)


Google Chrome:
chrome://flags/#enable-webassembly

へアクセス。

ややややこしいが、ドロップダウンリスト表示が「既定▼」または「無効▼」になっている項目とWebリンクが「有効にする」になっている項目を、「有効▼」「有効にする」を選択すると表示が「有効▼」「無効にする」に変化するので、いくつかを変更した。

つまり、
「既定▼」または「無効▼」・「有効にする」になっている項目を、
「有効▼」・「有効にする」を選んで、
「有効▼」・「無効にする」に変化する

画面上では以下のようになる。赤い枠がそれ。トップの黄色いマーカ表示が今回の項目だが、ついでに赤枠全て有効化した。
ちなみにJavaScriptコンパイル パイプライン TurboFanは本日のGigazine様の記事。GPUラスター化・ハードウェア アクセラレーションによる動画デコード・WebGL ドラフト拡張機能の3つは以前から有効化済み。
a0034780_19235860.png
:
a0034780_19245614.png
:
a0034780_19250911.png
:
a0034780_19251810.png
青枠のFlash→HTML5はまだ。
緑枠はタグを100個ぐらい開いてるとx(閉じる)ボタンが表示されないので、非表示を無効化して「有効にする」方がいいかも。

Gigazine様は下スクロール時に読込み&表示更新をし、CPU負荷でちんたらしていたのだが、その読込み&表示更新が瞬時になって快適になった。WebAssemblyだけの影響かは不明だが。

P.S.
Firefoxも快適になった。すげー。

P.S.
Gigazine様は速くなったのだけど、よくある画像読込み後に、画像配置のレイアウトを決めるようなWebサイトは速くならない。
Gigazine様は画像が縦方向に伸びるだけなので、レイアウト再計算は一瞬で済むのだろう。
速くなっているのは画像のデコードのようだ。これはWebAssemblyというより、SharedArrayBufferの方かな?

P.S.
違うようだ。どちらかというと「スクロール予測」という項目が効いているようだ。
また黄色の蛍光ペンを塗った所の一つ前もWebAssemblyがらみなので有効にしてみた。
そして緑枠のは、スタック化した時のみなので関係なかった。

[PR]
# by k1segawa | 2017-05-16 19:14 | パソコン | Comments(0)

Microsoft build 2017 (5/12)

Microsoft開発者会議build 2017が面白い。


ハイライトシーンを集めたこのページからビデオをみると、

マイクロソフトのVR(MR)に対する取り組み、応用、次の大型アップデートの内容、新しいOS、IoTに対する取り組みなど最新の情報がわかって楽しい。

特にストアアプリにiTunesが入っているのはびっくりだ。力が入ってるな~

傾向としてはスマホをあきらめ、PCで出来る事は何かという部分に重点を移したように思われる。

これでGoogle, Apple, Amazonとの競争に勝つ事ができるだろうか?


[PR]
# by k1segawa | 2017-05-12 23:35 | Comments(0)

awk って LLの範囲に入ってないのかな? (5/8)

次の記事で、最初にスクリプトとして真っ先にawkが思い付くのだが、最近は違うのかな。

内閣府の「国民の祝日CSV」をプログラミングの練習に使ってみる ―PowerShellで祝日の日付と名称を相互に検索する― : hatena blog

記事中ではエディタでcsvを整形してから、PowerShellにかけている。

で、コメント欄で、最初の整形をするスクリプトを要求している。
awkだろJKと思ってすぐ下のリンクにスクリプトを書いた人がいるというので、見に行ったら、そのまんまだった。

内閣府の「国民の祝日」のCSVがひどい。 : hatena blog


その内容はこちら。
akanehara 様

curl -s http://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv |nkf -wLu|tail -n+3|tr , \\n|awk -F/ 'NF==3{printf "%04d-%02d-%02d\n",$1,$2,$3} NF!=3'|xargs -n2|awk 'NF==2{print$2,$1}'|sort

リンク 2017/02/22

うん、Bash on Windowsでそのまま動作可能(nkfインストール要)。

整形された結果は、以下の通り。

こどもの日 2016-05-05
こどもの日 2017-05-05
こどもの日 2018-05-05
みどりの日 2016-05-04
みどりの日 2017-05-04
みどりの日 2018-05-04
海の日 2016-07-18
海の日 2017-07-17
海の日 2018-07-16
勤労感謝の日 2016-11-23
勤労感謝の日 2017-11-23
勤労感謝の日 2018-11-23
敬老の日 2016-09-19
敬老の日 2017-09-18
敬老の日 2018-09-17
建国記念の日 2016-02-11
建国記念の日 2017-02-11
建国記念の日 2018-02-11
憲法記念日 2016-05-03
憲法記念日 2017-05-03
憲法記念日 2018-05-03
元日 2017-01-01
元日 2018-01-01
山の日 2016-08-11
山の日 2017-08-11
山の日 2018-08-11
秋分の日 2016-09-22
秋分の日 2017-09-23
秋分の日 2018-09-23
春分の日 2016-03-20
春分の日 2017-03-20
春分の日 2018-03-21
昭和の日 2016-04-29
昭和の日 2017-04-29
昭和の日 2018-04-29
成人の日 2016-01-11
成人の日 2017-01-09
成人の日 2018-01-08
体育の日 2016-10-10
体育の日 2017-10-09
体育の日 2018-10-08
天皇誕生日 2016-12-23
天皇誕生日 2017-12-23
天皇誕生日 2018-12-23
文化の日 2016-11-03
文化の日 2017-11-03
文化の日 2018-11-03

ん?なんかちょっと変だな。

それで、今現在のcsvを取得してみたら、すでに整形済みでアップロードされていた。やるな国。
平成28年(2016年)から平成30年(2018年)国民の祝日(csv形式:2KB) - 内閣府

その内容はこちら。

国民の祝日月日,国民の祝日名称
2016-01-01,元日
2016-01-11,成人の日
2016-02-11,建国記念の日
2016-03-20,春分の日
2016-04-29,昭和の日
2016-05-03,憲法記念日
2016-05-04,みどりの日
2016-05-05,こどもの日
2016-07-18,海の日
2016-08-11,山の日
2016-09-19,敬老の日
2016-09-22,秋分の日
2016-10-10,体育の日
2016-11-03,文化の日
2016-11-23,勤労感謝の日
2016-12-23,天皇誕生日
2017-01-01,元日
2017-01-09,成人の日
2017-02-11,建国記念の日
2017-03-20,春分の日
2017-04-29,昭和の日
2017-05-03,憲法記念日
2017-05-04,みどりの日
2017-05-05,こどもの日
2017-07-17,海の日
2017-08-11,山の日
2017-09-18,敬老の日
2017-09-23,秋分の日
2017-10-09,体育の日
2017-11-03,文化の日
2017-11-23,勤労感謝の日
2017-12-23,天皇誕生日
2018-01-01,元日
2018-01-08,成人の日
2018-02-11,建国記念の日
2018-03-21,春分の日
2018-04-29,昭和の日
2018-05-03,憲法記念日
2018-05-04,みどりの日
2018-05-05,こどもの日
2018-07-16,海の日
2018-08-11,山の日
2018-09-17,敬老の日
2018-09-23,秋分の日
2018-10-08,体育の日
2018-11-03,文化の日
2018-11-23,勤労感謝の日
2018-12-23,天皇誕生日
[PR]
# by k1segawa | 2017-05-08 22:34 | Comments(0)

厳しい環境が進歩を促す (5/8)

毎度巡回しているGigazine様で、こんな記事が連続で投稿されている。

2017年5月8日のヘッドラインニュース - Gigazine

この記事の中央位置よりやや手前ぐらいに、次の2つが連続して記載されている。

長男が、多分初めて「勉強わからない」に突き当たった話: 不倒城
男性はなぜ孤独であるのか(トマス・ジョイナー『Lonley at the Top』) - 道徳的動物日記

何の偶然なのか上記は、「ずっと成功し続けていた小学生の初めての挫折」、
下記は、「実は男性がずっと優遇されていたため、今の孤独がある」。

どちらも最初は、ん?と思うような話で、よく読んでみるとなるほどと思わされる。
で、なんで連続して「理由がこんなにあれっと思う」記事が直近で続いたのか?

個人を取り巻く環境、家族を取り巻く環境、日本を取り巻く環境、世界情勢、そしてひょっとすると宇宙が迎える寂しい将来像など、考えると困難な状況が至る所に存在する。

これって見方を変えれば(優等生でない小学生や女性の立場から考えればそうだったように)、進歩のチャンスなのかもしれない。

そしてそれが記事として連続していた事に、無意識のうちに執筆者もなにかを感じていたからかもしれない。

きっと今の状況は、将来の明るい未来のため頑張る時期なのだろう。
[PR]
# by k1segawa | 2017-05-08 21:17 | Comments(0)

Clang+LLVMについて (5/3)

MMDの動画を見ていて "AnimeEffects"というツールのGitHubでの説明文に興味深い文字列があった。

MSVC2015/MinGW/GCC/Clang (32-bit or 64-bit)

ん、Clang ってコンパイラレベルのツールだったっけ?

良く調べたら Clang+LLVMの組み合わせでGCCと同レベルのコンパイラ環境になるらしい。

LLVM(Low Level Virtual Machine)とは、LL(lightweight language)のVM(virtual machine)の事かと思っていた。

全然違うし、コンパイラの最初のプリフェッチを除いた部分っぽい。だからClangというフロントエンドでC言語をLLVMのわかる形にして引き渡しているらしい。

おー、GCCだけが各種言語のメタコンパイラかと思っていたが、そんなことができるのか~

Clangの解説を見ると、GCCが肥大化し、メンテナンスがつらく、自身のコンパイル処理が分散処理に対応していないという。

なるほどー

そうかー、Clang+LLVM が GCC の 次のコンパイラ環境なのかー

LLVM Wiki で触れられている 3番地コード形式 とかすごく興味ある。

Clang Wiki もワクワクする内容だし、Gitに触れた時以来のソフトウェア的興味をそそるな~

最近はハードウェア的興味(IoT)ばっかりだったからな~

[PR]
# by k1segawa | 2017-05-03 01:15 | Comments(0)

ハードの勉強が難しい理由 (5/1)

ここのサイト様の記事に、ハードとソフトの違いが書かれていて、とても納得した。2013年の記事で、ソフトは人が決めモジュール化(抽象化)されてハードは自然現象で経験が必要うんぬんまで、全く同じ意見だった。
おー、同じように考えている人がやっぱりいたのかー。

それをとてもわかりやすく説明している。

そのあと、サイト様のタイトルの疑問に答えている。というか対応策が書かれている。

自分には厳しいな。この業界はもう楽になる事は無いな(一般的に)。

後半2回読むと結局は自分の選択だと。仕事と自分のこだわりは分けるべきか。

[PR]
# by k1segawa | 2017-05-01 12:11 | Comments(0)

Atmel Visual Studio 7.0 文法チェック OFF (5/1)

上記の件、新しいIDEはコメント内の日本語の一部に下波線がついてとてもウザイ。6.4ではなかった機能だ。
すぐ上で定義している#define や 関数マクロもダメ。文法エラーにも法則性が無いので、日本語化は単にリソースにパッチを当ててるだけなのだろう。

オフにするには次のように[メニュー] [VAssistX] [Enable/Disable Visual Assist]を選んで OFF にする。
a0034780_11235761.png
言語対応が中途半端で、メニューもサブメニューとかまったく日本語化されていない。Visual Studioベースだから言語パックを用意するのは難しくないはず。それともコメント内だけオフに出来るのだろうか。

[PR]
# by k1segawa | 2017-05-01 11:26 | arduino, AVR | Comments(0)

J:COM LG Wine Smart(LGS01)に壁紙を設定してみた (4/30)

J:COM の ガラホ LG Wine Smart ( LGS01 ) の 壁紙を探して設定してみた。

横 320 ドット、縦480 ドット なので、縦長の2:3の画像なら大きい分には縮小されて何でもいい。

なので、インターネットで 「320x480」、「640x960」と検索してみる。

インターネット(地球アイコン)を起動して、URL入力エリアにそれを打ち込む。
a0034780_02042859.png
下記は打ち込んだ様子。最近はタップすると画面下半分にソフトキーボードが出る。左上のキーボードアイコンがそれを示す。入力モードは12と、数字モード。普通にキーで入力したい時はもう一回入力エリアをタップする。
a0034780_02304932.png
数字の区切りはスペースでも、320x480でもよい。下記は320x480の時。関係ないが、左上のアイコンはスクリーンショット。[左側面ボリュームキーの下]+[赤い電話切るボタン] を"まったく"同時に押してそのまま長押しすると、サウンドが鳴って撮れる。どっちか一方を先に押してからだとそのキー・ボタンの長押しになってしまうので注意。アイコンを下へスライドすると保存場所へのリンクがある。
a0034780_02380210.png


トップはGoogle の計算機能で電卓が出るが、スクロールすると「画像」があるのでそれをタップするか、
a0034780_02402622.png


さらにスクロールすると「iPhone 3GS ... Wallpapers 320x480 ...」というリンクがあるのでそれをタップする。
a0034780_02405743.png


下記は「iPhone 3GS ... Wallpapers 320x480 ...」をタップした先のサイトの様子。
a0034780_02414165.png
他にもスクロールすると「WallpapersWide.com|320x480 Mobile HVGA 3:2 ...」とかいうサイトもあるので参考まで。



ここからは画像を保存して壁紙に設定する方法。
まず、画像の上で長くタップしてメニューを出す。
a0034780_03123965.png
メニューから「画像を保存」を選ぶと、左上にというアイコンが出るので通知エリアを下にスライドすると、「cat_muzzle_look...ダウンロード完了」と出る。
a0034780_03154464.png


それをタップすると、「アプリケーション」を選択というメニューが出るので、「ギャラリー」を選ぶ。
a0034780_03220631.png

そうすると、選んだ画像が全面に表示されるので、画面を「ちょこん」とタップすると上からメニューが出て、さらに右上の縦に…のアイコンをタップするとまたメニューが出るので、「画像を設定」を選ぶ。
a0034780_03222141.png


さらに「画像を設定」というメニューが出るので、ここではギャラリーではなく、風車の方を選ぶ。なぜなら、J:COMから受け取ったままだと、ホームメニューをかんたんメニューに設定しているので、風車でない方の壁紙を選ぶと下半分しか壁紙に出来ないから。
a0034780_03263114.png

すると左上に「✔壁紙に設定」と出るので、タップ。前の画面に戻るが、設定は完了している。
a0034780_03312641.png
ホーム画面に戻るボタン(キーの上辺中央にある 〇 ボタン)を押すと、無事壁紙が設定されているのがわかる。
a0034780_03332099.png
結構手間だが、640x960 (iPhone 4S 用)で検索したり、別のサイトから画像をダウンロードして色々綺麗な壁紙を設定すると、ちょっとは楽しくなるかもしれない。

ダウンロードした画像やスクリーンショットは標準アプリの「ファイルマネージャー」や「ダウンロード」、「ギャラリー」、「フォト」で見つかるので削除したり入れ替えたりするといいかも。1枚300KB程度なので、メモリの空きが500MB以下でも100枚で30MBなので余裕。アプリなら1つ20~70MBくらいだからね。写真も合わせて200枚くらい大丈夫だよ~


[PR]
# by k1segawa | 2017-04-30 02:05 | J:COM | Comments(0)

1か月の電気料金 (4/29)

1か月の電気料金が6000円(241kWh)ぐらいだった。

暖房を電気に頼っていた冬の間はMAXでも9000円は行かないくらいだった。
では今は何にかかっているのか。

【常時待機電力】
冷蔵庫、ルータ、TVチューナー、10個以下の充電器、保温機能のある電気製品
【間欠使用の電力】
PCやモニタ、大画面TV、電灯、電子レンジ、ドライヤー、アイロン、洗濯機、掃除機

ー トップ ー
以下のサイト様によると、年間7000円くらいらしい。

冷蔵庫は1か月せいぜい700円以下かな。

ー 2番手 ー
以下のサイト様によると、PCの電気料金は24時間つけっぱなしでも400円くらいらしい。(50W)

ー それ以外 ー
そうすると、残りの4500円程度は、待機電力のTVチューナや充電器 または 電灯、洗濯機、電子レンジ、大画面TV なのかな。

1つ1つが1か月2、300円程度でも15個あれば4500円だ。

意外と細かいものが電気料金を押し上げているな。

節電と言ってもそれぞれは月数百円だから、1つを50%に減らしても大したことはない

やはりこまめにコツコツと全部に対し、節電を心掛けるようにする必要があるな~

ただし、上記のエネチェンジで計測すると、6000円は平均より7%少ないと出た。気にすることはないのかな。
月4000円になればずいぶんいいのだが、電力会社を変えただけでは月2000円の節約=年間24000円には程遠い。
せいぜいキャンペーンで初年度のみ10000円の節約だ。

時間と手間暇をかけて電力会社を変え、節電するか、節電以外で節約をするかだな。全部節約するのが一番いいが。



[PR]
# by k1segawa | 2017-04-29 21:30 | Comments(0)

Japanino ArduinoISPで ATtiny13 で うんぬん - 前提の変更 (4/29)

今までJapanino + ArduinoISP + ATtiny13であれこれやっていたが、前提条件が間違っていた。

Arduino IDE 018 で Japanino を Arduino ISP ライタ(ハードウェア)にし、ライタ"ソフト"としては avrdude (ver 5.11 - ATtiny13をサポートしている版)を使って、次のような環境で、ATtiny13A に書込みをしていた。

(1) Arduino IDE 1.0.5-r2 で ATtiny13A に スケッチを書き込み
(2) BASCOM-AVR で ATtiny13A に HEXファイル書込み
(3) Atmel Studio 7.0 で ATtiny13A に HEXファイル書込み

ちなみに avrdude は C:\avrdude に配置し、avrdude.conf は バージョン1249「$Id: avrdude.conf.in 1249 2013-10-18 07:59:06Z springob $ -*- text -*-」だ。

で、何を間違っていたかというと、「bitDuino + Arduino IDE 1.0.5-r2 という組み合わせで使っている」という表記だ。

実はbitDuinoをふふふ様や構想100年様のサイト通りにインストールすると、<展開先ディレクトリ>/arduino-1.0.5-r2/hardware/の直下に解凍済みファイルが存在するはずで、それはbitDuinoディレクトリかまたはその内容のはず。
そしてインストール後のArduino IDEメニュー>ツール>マイコンボードの先には"bitDuino13 (internal 9.6MHz clock)"と出るはず。

しかし、私の今のArduino IDEにはそのような表記は無く、単に"ATtiny13 (internal 9.6MHz clock)"となっている。(arduino 1.0.5-r2)

つまり、bitDuino を使っていないのだ。

ぼんくらでごめんなさい。

ずっと bitDuino を使ってるつもりだったのだが、どうやら arduino 1.0.5-r2 は標準で ATtiny13 をサポートしているようだ。
(もしかすると arduino 1.0.x または 1.6 or 1.7 用のATtiny用hardwareをインストールする必要あり)

今までのサイト内での記事は修正が多いのでここで注意しておく。

==========
(ソフト)
ATtiny13 マイコンのスケッチ書込みには、arduino 1.0.5-r2 (arduino 1.0.x の最終バージョン) を使っています。
(ひょっとすると arduino 1.0.x か 1.x 用の hardware のインストールが必要 - インストール後 hardware/attiny/cores が出来る)

(ハード)
Japanino を ライタにする場合 arduino 018 (Japanino のサイトでダウンロード)で行っています。

びんぼうでいいの をライタにする場合 arduino 1.0.5-r2 のブートローダ書込みで行っています。
==========

本当によくわかっていなかった。もしかするとまだ間違っているかもしれない。

きっかけはarduino 1.0.5-r2のanalogReadのソースを参照していた時。__AVR_ATtiny13__ が定義されていないのでおかしいなと思い、ソースのあるディレクトリがhardware/arduino/coresだった。定義されているソースはhardware/attiny/coresの方だった。構想100年サイト様の見直しで、インストールすればhardware/bitDuino/coresになるはずなのに、なぜattinyなのかよく考えてみたら、そもそもインストールに失敗しているという間抜けな結論に達した。

もちろん bitDuino は先達様の素晴らしい構成物です。私の勘違いでその価値が下がる事はない。真面目にインストールして動作しなかったら申し訳ありません。

P.S.
1.0.x または 1.x 用の hardware.zip は色んな方が作ったバージョンがあるので、ダウンロードする際には必要なクロックをサポートしているものを選んで欲しい。
私の hardware/attiny/boards.txt を読むと ATtiny13 用 は

#attiny13-1.name=ATtiny13 (internal 1.2 MHz clock)
:
attiny13-8.name=ATtiny13 (internal 9.6 MHz clock)
:

となっており、内部クロック 9.6MHz のみ arduino IDE メニューに出てくるようになっている。

128kHz や 4.8MHz サポートの hardware.zip もあるので、必要ならそれを。もちろんこれはソフトが「スケッチ」の場合。
BASCOM-AVR や Atmel Studio 7.0 は ハードとしてライタが必要なだけで hardware.zip がどうであろうと関係ない。

また、128kHzはArduino ISPライタでは書込めないようだ。またシリアル15200 bpsより高速の転送速度(PC - Japanino間)はJapaninoのクロックがデフォルトで内蔵クロックだと10%の誤差があるので無理らしい。外部クロック化していたり、arduino/びんぼうでいいの は問題ない。

[PR]
# by k1segawa | 2017-04-29 04:24 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で 導通テスタ2 (4/27)

以前の記事で、Arduino IDEでプログラム(Hex)容量を削減するために関数をいくつか置換したが、digitalRead関数には手を付けていなかった。
今回それも置換してさらにAtmel Studio 7.0でもソースをそのまま動くように置換マクロや関数を用意して容量を比べてみた。

前回のソースではHexは814バイトだったが、今回は以下のソースで648バイトになる。
【ソース】
/*
* ATtiny13A 導通テスタ
*
* bitDuino + Arduino IDE 1.0.5-r2
*
* 機能:PB1とGNDに繋いだプローブで回路の導通チェックを行う
* タクトスイッチ押下で、導通時 ブザー鳴動 <=> LED点灯 のモード切替(切替時点滅)
*
* CPU:ATtiny13A VCC:3.3/5V PB0:ブザー PB1:プローブ+端子 PB3:LED+
* PB4:切替用タクトスイッチ GND:ブザー、プローブ、LED-、タクトスイッチ LED用1kΩ抵抗
*
* ※ただしプログラム容量削減のため pinMode、digitalWritedigitalRead関数を置換
*/

#define M_Wait 500 // ブザー鳴動時間(μs)
// ピン割り当て
// ただし、Arduino IDE(bitDuino)の ピン番号 と ATtiny13Aの ポートBの ピン番号 は同じ
#define M_Buzzer 0 // PB0:ブザー用
#define M_Probe 1 // PB1:プローブ+用
#define M_LED 3 // PB3:LED+用
#define M_Switch 4 // PB4:切替スイッチ用

// レジスタのビットクリア
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
// レジスタのビットセット
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void setup() {
// ピンの入出力方向設定
// 出力
sbi(DDRB, M_Buzzer); /* eq. pinMode(M_Buzzer, OUTPUT); */ // ブザー
sbi(DDRB, M_LED); /* eq. pinMode(M_LED, OUTPUT); */ // LED
// 入力 & プルアップ
cbi(DDRB, M_Probe); sbi(PORTB, M_Probe); // 導通テスタピン
/* eq. pinMode(M_Probe, INPUT_PULLUP); */
cbi(DDRB, M_Switch); sbi(PORTB, M_Switch); // タクトスイッチ
/* eq. pinMode(M_Switch, INPUT_PULLUP); */
}

void loop() {
// タクトスイッチ 切替状態保持(mode=0:導通時 ブザー鳴動 / 1:導通時 LED点灯)
static int mode = 0;

// モード切替処理
// 切替スイッチ押下か?(プルアップなので押下でLOW)
while( bit_is_set(PINB, M_Switch) == 0 ) {
// eq. while( digitalRead(M_Switch) == LOW ) {
delay(10); // 10ms待ち(チャタリング排除のため)
// 連続してスイッチ押下か?
if( bit_is_set(PINB, M_Switch) == 0 ) {
// eq. if( digitalRead(M_Switch) == LOW ) {
mode = 1 - mode; // 状態反転
// LED点滅
sbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, HIGH); */
delay(300); // 0.3秒点灯
cbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, LOW); */
break;
}
}

// プローブ導通チェック
// プローブとGND間が導通している(プルアップなのでLOW)なら
if( bit_is_set(PINB, M_Probe) == 0 ) {
// eq. if( digitalRead(M_Probe) == LOW ) {
if( mode == 1 ) {
// LED点灯
sbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, HIGH); */
} else {
// ブザー鳴動(矩形波HI/LOW 1周期分)
sbi(PORTB, M_Buzzer); /* eq. digitalWrite(M_Buzzer, HIGH); */
delayMicroseconds(M_Wait); // 矩形波HIの時間
cbi(PORTB, M_Buzzer); /* eq. digitalWrite(M_Buzzer, LOW); */
delayMicroseconds(M_Wait); // 矩形波LOWの時間
}
} else {
// LED消灯
cbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, LOW); */
}
}
赤い部分が修正箇所となる。

そしてAtmel Studioでのソースは次のようになる。
従来のソース変化無しは青い部分だ。
赤い部分は今回必要無いが、手っ取り早くArduino IDEのソースをそのまま持ってくる場合の関数マクロだ。ただし、pinMode関数は三項演算子が2回入れ子になっているのでINPUT/OUTPUT/INPUT_PULLUPモード毎に展開した方が容量削減となる。
【ソース】
/*
* ATtiny13A 導通テスタ
*
* bitDuino + Arduino IDE 1.0.5-r2
*
* 機能:PB1とGNDに繋いだプローブで回路の導通チェックを行う
* タクトスイッチ押下で、導通時 ブザー鳴動 <=> LED点灯 のモード切替(切替時点滅)
*
* CPU:ATtiny13A VCC:3.3/5V PB0:ブザー PB1:プローブ+端子 PB3:LED+
* PB4:切替用タクトスイッチ GND:ブザー、プローブ、LED-、タクトスイッチ LED用1kΩ抵抗
*
* ※ただしプログラム容量削減のため pinMode、digitalWrite、digitalRead関数を置換
*/

//---------- ATmel Studio 7.0 ここから

#ifndef F_CPU
#define F_CPU 9600000UL // 9.6 MHz clock speed
#endif
#include <avr/io.h>
#include <util/delay.h>

// HIGH/LOW(digitalWrite/Read)
#define HIGH 0x1
#define LOW 0x0
// pinMode
#define INPUT 0x0
#define OUTPUT 0x1
#define INPUT_PULLUP 0x2

#ifndef pinMode
#define pinMode(pin,mode) (mode==INPUT?cbi(DDRB,pin):\
(mode==OUTPUT?sbi(DDRB,pin):sbi(PORTB,pin)))
#endif

#ifndef digitalWrite
#define digitalWrite(pin,val) (val==HIGH?sbi(PORTB,pin):cbi(PORTB,pin))
#endif

#ifndef digitalRead
#define digitalRead(pin) (bit_is_set(PINB,pin)==0?LOW:HIGH)
#endif

// delay
#ifndef delay
#define delay(ms) _delay_ms(ms)
#endif
// delayMicrosecond
#ifndef delayMicroseconds
#define delayMicroseconds(us) _delay_us(us)
#endif

void setup(void);
void loop(void);

int main(void)
{
setup();

while(1) {
loop();
}
}

//---------- ATmel Studio 7.0 ここまで

#define M_Wait 500 // ブザー鳴動時間(μs)
// ただし、Arduino IDE(bitDuino)の ピン番号 と ATtiny13Aの ポートBの ピン番号 は同じ
#define M_Buzzer 0 // PB0:ブザー用
#define M_Probe 1 // PB1:プローブ+用
#define M_LED 3 // PB3:LED+用
#define M_Switch 4 // PB4:切替スイッチ用

// レジスタのビットクリア
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
// レジスタのビットセット
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void setup() {
// ピンの入出力方向設定
// 出力
sbi(DDRB, M_Buzzer); /* eq. pinMode(M_Buzzer, OUTPUT); */ // ブザー
sbi(DDRB, M_LED); /* eq. pinMode(M_LED, OUTPUT); */ // LED
// 入力 & プルアップ
cbi(DDRB, M_Probe); sbi(PORTB, M_Probe); // 導通テスタピン
/* eq. pinMode(M_Probe, INPUT_PULLUP); */
cbi(DDRB, M_Switch); sbi(PORTB, M_Switch); // タクトスイッチ
/* eq. pinMode(M_Switch, INPUT_PULLUP); */
}

void loop() {
// タクトスイッチ 切替状態保持(mode=0:導通時 ブザー鳴動 / 1:導通時 LED点灯)
static int mode = 0;

// モード切替処理
// 切替スイッチ押下か?(プルアップなので押下でLOW)
while( bit_is_set(PINB, M_Switch) == 0 ) {
// eq. while( digitalRead(M_Switch) == LOW ) {
delay(10); // 10ms待ち(チャタリング排除のため)
// 連続してスイッチ押下か?
if( bit_is_set(PINB, M_Switch) == 0 ) {
// eq. if( digitalRead(M_Switch) == LOW ) {
mode = 1 - mode; // 状態反転
// LED点滅
sbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, HIGH); */
delay(300); // 0.3秒点灯
cbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, LOW); */
break;
}
}

// プローブ導通チェック
// プローブとGND間が導通している(プルアップなのでLOW)なら
if( bit_is_set(PINB, M_Probe) == 0 ) {
// eq. if( digitalRead(M_Probe) == LOW ) {
if( mode == 1 ) {
// LED点灯
sbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, HIGH); */
} else {
// ブザー鳴動(矩形波HI/LOW 1周期分)
sbi(PORTB, M_Buzzer); /* eq. digitalWrite(M_Buzzer, HIGH); */
delayMicroseconds(M_Wait); // 矩形波HIの時間
cbi(PORTB, M_Buzzer); /* eq. digitalWrite(M_Buzzer, LOW); */
delayMicroseconds(M_Wait); // 矩形波LOWの時間
}
} else {
// LED消灯
cbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, LOW); */
}
}
main.cに上記ソースをまるまる青い部分も含めて貼り付けてOK。Hex容量は、それぞれ Arduino IDE=648バイト、Atmel Studio=578バイト(コンパイルオプション:デフォルト)で70バイトまだ小さくなる猶予がある(delay関係)。
しかし最初置換しないソースはArduino IDE上で1024バイトに収まらなかった事から考えると648バイトは十分だ。

Arduino IDEはほぼC/C++環境なので、ライブラリの充実度で考えるとAtmel Studioにもライブラリは公式にあるにはあるが、Arduino IDEの方が多い。ただし大したことではないがオープンソースなので流用元のライブラリ自体の参照先は明確にしておかなければならない。プログラムソース自体は別にGPL等で公開しなくてもいい。(オープンソースのgccやIDEを使って作った自分の”プログラムソース”自体は別にオープンソースではないので)

あれ?Atmel Studio の立場は?
大規模分散開発やデバッグのしやすさはAtmel Studioの方が優れているが、特に小規模プロトタイプ開発や個人の趣味で作るにはコンパイラは両方ともgccだし、Arduino IDEでよくね?別にAVRマイコンであればほぼ対応しているようだし。GUIをMicrosoftのVisual Studioに作ってもらっている7.0以降、起動が重くてしょうがないしね。



[PR]
# by k1segawa | 2017-04-27 17:00 | arduino, AVR | Comments(0)

Google Chrome で、マウスホイールによるスムーススクロールと縦スクロール量増加 (4/24)

Gigazine様やツイートのような「縦に長いWeb画面」を気持ちよく操作するのに、通常使っているChromeの設定を忘備録。

スムーススクロールは、拡張機能のマウスジェスチャー「Gestures for Google Chrome」のBasicsタブ>スムーススクロールを使用する>スムーススクロール時間1秒(短くするとガクガクする)、素早くスクロール=5

縦スクロール量は、コントロールパネル>マウス>ホイール>一度に6行スクロールする

あと、タブを大量に開いたままにして、タブを移動する時は、Control + Tab (+Shift で逆方向)。

設定後は、Web画面を再読み込み(F5)してもダメで、閉じて再度開くと反映されるので注意。


[PR]
# by k1segawa | 2017-04-24 18:56 | Comments(0)

市販かぜ薬の副作用 (4/23)

昨日からのどの痛みがあって昨日の夕方から今日の夜まで4回市販の風邪薬を飲んだ。
「ユリアン 総合風邪薬」(中外医薬生産株式会社) - 中外製薬とは無関係
という薬を服用した。
a0034780_21445121.png
すると今日の朝から胃の上部にむかつきがあり、それがずっと取れない。
最初は風邪の症状かと思ったが、今まで飲んだことのないメーカの製薬会社のモノであり、風邪自体の症状は暖かくして寝る事でほぼ治った事からたぶん薬の副作用だ。

今まで「かぜ薬の副作用」については考慮していなかったが、本日夜飲んだ直後に吐き気が大きくなって、注意した方がいいようだ。

パブロンやルルなどのメジャーの風邪薬ではこんなことはなかった。

やはり、完全に同じ成分ではないものだと、糖衣などで違いがあり、それがアレルギー等を引き起こすので、服用を即座に中止して、明日薬剤師に相談しよう。

P.S.
どうやら成分が違うようだ。
エテンザミドが含まれており、脳幹に作用し解熱作用があるらしい。パブロンやルルには全く含まれていない。内精神薬というタイプで、いわゆるダブルブロックというCMの脳への遮断作用がある成分らしい。その他の成分は量が違っておりかえってメジャー薬より含まれる薬剤の種類は少ないぐらいだ。

うーん、他のかぜ薬でエテンザミドやブロック機能のある薬は服用したことが無かったな~。
これほど同じかぜ薬で成分が違うとは思わなかった。自分に合わない成分があるのは納得した。よく成分を見てそういったブロックタイプの成分が入っていないか相談してから買おう。

[PR]
# by k1segawa | 2017-04-23 21:45 | Comments(0)

ハードウェア電気電子の知識 (4/23)

電子工作において、マイコンを使うにあたって入出力のためセンサーや電源を取り付けるのに周辺回路を正しく設計しないと、正常動作あるいはマイコン自体を破壊しかねない。
デジタル回路であるマイコン素子を使うための、周辺回路を設計するのには、電気電子の知識が無ければならない。
「ディジタル信号も、素子レベルでの信号伝達や消費電力、速度などの物理的な実時間の性能はアナログ動作になります」というのがJST(Japan Science and Technology Agency - 国立研究開発法人 科学技術振興機構)が提供する、JREC-IN Portal内のe-learning 「電子電気 - アナログ回路コース」での説明だ。

自分の最初の目標であるデジタル回路の周辺回路を汎用ロジックICで組むというのは、素子レベル(抵抗やIC、トランジスタなど)で自由に組めるようになる事なので、アナログ回路の知識が必要だという事だったようだ。

確かにこのサイトの「デジタル回路コース」は論理回路とかメモリとか自分の考えている回路とはかけ離れている。(FPGAなど論理設計にはいずれ必要だが)

そうかー、自分がやりたいことを出来るようになるには「アナログ回路」を理解すべきだったのか。

ということで、基本のオームの法則から勉強し直している。
I = V/R (抵抗とは電圧に比例する電流の比例定数の事)

しかし、Rの単位オームは、「1ボルトの電圧で1アンペアの電流が流れる時の抵抗を1オームと定義する」のだが、そもそも1ボルトとはどういう定義なのか、1アンペアとはどういう定義なのかはっきりわかっていなかった。

で、ボルトとアンペアの定義をWikiで調べる。
ボルトは1アンペアの電流が流れる時1ワットの仕事量を発生させる場合の電圧を1ボルトとする。
1ワットは仕事量だから熱量ジュールで表される。1秒間に1ワットの仕事量を1ジュールと呼ぶ。
そして1ジュールはWikiによれば約102gの物体を標準重力下で1メートル持ち上げる仕事量に相当する。

ここで出てくる電気電子の用語に関して言えば、ボルトはアンペアによって定義されているという事。

つまりアンペアの定義がわかれば、芋づる式にボルトが定義され、オームが定義されるという事。

ではアンペアの定義とは?
やはりWikiによると、「真空中に 1 メートルの間隔で平行に配置された無限に小さい円形断面積を有する無限に長い二本の直線状導体のそれぞれを流れ, これらの導体の長さ 1 メートルにつき 2 × 10−7ニュートンの力を及ぼし合う一定の電流」となる。
つまり電磁誘導の関係で引き合う2つの電線間の力が2*10^-7 Nの時、電線を流れる電流の大きさを1アンペアという。

よし、アンペアが電線間の電磁誘導で引き合う力から定義され、ボルトがアンペアで定義される仕事量で定義され、オームがボルトとアンペアで定義された。
決して数式の相互参照になっていないし、単なる式変換でもない。

(オームが電線の断面積や長さに比例・反比例する性質は、定義ではなく物理特性だ。あえていうならまた別のオームと断面積m^2や長さmとの関係だ)

ふむ、やっとオームの定義に納得がいった。
この際に比例と反比例についても再度確認した。つまり一定の「抵抗」の元で電圧を上げると電流が増えるのは比例で、式はy=axということ。
「抵抗」自体を理解し物理現象も確認。この電流と電圧が比例する時の定数を抵抗とするのがオームの法則である。
法則は実験結果によって観測された物理法則で、オームの定義はそれとは厳密には別なのだ。

やはりただ暗記するだけではなく理解しておくことが大事だ。

オームの法則を足掛かりに「アナログ回路コース」を学習しよう。

[PR]
# by k1segawa | 2017-04-23 13:20 | Comments(0)

Japanino ArduinoISPで ATtiny13 で 導通テスタ 検討 (4/22)

前の記事で、導通テスタ(チェッカ)を作ったが、一般の導通チェッカは抵抗によって音の高低が変わったり、電子回路の影響を受けないような回路が組み込まれているようだ。あと電流も余り流さず長期間バッテリが持つようになっている。

そんな難しい事は全然考えていなかった。

単につながるとまずい部分の半田チェック用だ。

まあ自分が作る程度の配線ならこの程度だ。箱やプローブも特に工夫してないし。
あとブザーも発振回路の代わりにマイコンでやっているので、回路内蔵型ブザーというのを使うと、電圧をかけるだけで鳴動するらしい。
発振する処理(矩形波HI/LOと鳴動時間)もいらず、LEDと同じ扱いでよくなる。
電源にもよるかもしれないが、プローブ間にかかる電圧と電流はATtiny13のデータシートをみると、
a0034780_12533892.png
となっており、最大40mAまで流れ、arduinoの5V電源に繋いだ時はこんな具合なのかな。

圧電ブザーも内部には回路が入っているようだ。
詳細はFDK社の詳細情報を請求して取り寄せないとわからないが、こちらのサイト様の図のようになっているのだろう。
ちゃんと作るなら、プローブのPB1-GND間にトランジスタによる増幅回路を入れて、5V Max40mAのON/OFFじゃなくもっと低電流(低抵抗)で動くようにするべきなのかな~
導通チェッカと言っても、回路の大部分は本質的な所ではなくて、検出した信号をLEDやブザー鳴動に変換する機能を実現する場合が多い。

だからそこはマイコンに置き換え、実質的な検出回路部分を工夫した回路をPB1-GND間に当てはめて高精度化したい。

皆さんが参考にしている記事は2008年の記事で、J:COMからの移転のため、左のカテゴリは機能しているが、アーカイブは旧J:COMのサイトにリンクしているためNot Foundになってしまう。しかたがないので、カテゴリで絞って記事末尾の「次へ」を次々クリックしてたどり着く。
こちらのサイト様の回路が高精度化されている。もっと先には

のようにたった0.3Ωの低抵抗で導通していない事を検出できる改良がなされている。

やはり製品化されているだけの事はある。こちらの末尾に旧ブログ記事への導通チェッカ―の関連リンクがある。



[PR]
# by k1segawa | 2017-04-22 12:44 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で 導通テスタ (4/20)

導通テスタが欲しかったのだが、簡単な回路がなかったのでATtiny13Aマイコンで作ってみた。

ブザーを鳴らす、ボタンをチャタリング無しで押す、プルアップ回路のスケッチを集めて適当にリファクタリングしてプログラムを作成。
ブザーが無かったのでイヤホンを分解してピンヘッダに半田付けしてグルーガンで固め、ブザー鳴動とLED点滅の2つの表現をタスクスイッチで切り替えるようにした。

単4電池ボックスやボタン電池、ACアダプタのいずれでも動作。回路に直接ライタを結線してもとりあえず動作。
ソースはArduino IDE 1.0.5-r2のスケッチで。Japanino上でATtiny13用にbitDuino導入済み。arduino Uno(Japanino)はardunio ISPライタ化済み。

【実体配線図】
a0034780_22515608.png
ライタ部分と比較しやすいように並べた。ポータブル時はarduino Unoからの6本の線をはずし、電源を繋ぐ。

【回路図】
a0034780_22521456.png
回路は簡単だが、電源GND間にセラコンとかいるのかな~。2入力2出力で8ピンマイコンで十分だ。

【写真】
a0034780_17393882.png
イヤホンやプローブは100均の園芸用の針金0.5mm(配線にも使用)で固定。

【ソース】
/*
* ATtiny13A 導通テスタ
*
* bitDuino + Arduino IDE 1.0.5-r2
*
* 機能:PB1とGNDに繋いだプローブで回路の導通チェックを行う
* タクトスイッチ押下で、導通時 ブザー鳴動 <=> LED点灯 のモード切替(切替時点滅)
*
* CPU:ATtiny13A VCC:3~5V PB0:ブザー PB1:プローブ+端子 PB3:LED+
* PB4:切替用タクトスイッチ GND:ブザー、プローブ、LED-、タクトスイッチ LED用1kΩ抵抗
*
* License:Free
*
* ※ただしプログラム容量削減のため pinMode関数、digitalWrite関数を置換
*/

#define M_Wait 250 // ブザー音程(鳴動時間:μs)
// ピン割り当て
// ただし、Arduino IDE(bitDuino)の ピン番号 と ATtiny13Aのデータシートの ピン番号 は同じ
#define M_Buzzer 0 // PB0:ブザー用
#define M_Probe 1 // PB1:プローブ+用
#define M_LED 3 // PB3:LED+用
#define M_Switch 4 // PB4:切替スイッチ用

// レジスタのビットクリア
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
// レジスタのビットセット
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void setup() {
// ピンの入出力方向設定
// 出力
sbi(DDRB, M_Buzzer); /* eq. pinMode(M_Buzzer, OUTPUT); */ // ブザー
sbi(DDRB, M_LED); /* eq. pinMode(M_LED, OUTPUT); */ // LED
// 入力 & プルアップ
cbi(DDRB, M_Probe); sbi(PORTB, M_Probe); // 導通テスタピン
/* eq. pinMode(M_Probe, INPUT_PULLUP); */
cbi(DDRB, M_Switch); sbi(PORTB, M_Switch); // タクトスイッチ
/* eq. pinMode(M_Switch, INPUT_PULLUP); */
}

void loop() {
  // タクトスイッチ 切替状態保持(mode=0:導通時 ブザー鳴動 / 1:導通時 LED点灯)
static int mode = 0;

// モード切替処理
  // 切替スイッチ押下か?(プルアップなので押下でLOW)
while( digitalRead(M_Switch) == LOW ) {
delay(10); // 10ms待ち(チャタリング排除のため)
if( digitalRead(M_Switch) == LOW ) { // 連続してスイッチ押下か?
mode = 1 - mode; // 状態反転
// LED点滅
sbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, HIGH); */
delay(300); // 0.3秒点灯
cbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, LOW); */
break;
}
}

// プローブ導通チェック
  // プローブとGND間が導通している(プルアップなのでLOW)なら
if( digitalRead(M_Probe) == LOW ) {
if( mode == 1 ) {
// LED点灯
sbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, HIGH); */
} else {
// ブザー鳴動(矩形波HI/LOW 1周期分)
sbi(PORTB, M_Buzzer); /* eq. digitalWrite(M_Buzzer, HIGH); */
delayMicroseconds(M_Wait); // 矩形波HIの時間
cbi(PORTB, M_Buzzer); /* eq. digitalWrite(M_Buzzer, LOW); */
delayMicroseconds(M_Wait); // 矩形波LOWの時間
}
} else {
// LED消灯
cbi(PORTB, M_LED); /* eq. digitalWrite(M_LED, LOW); */
}
}



[PR]
# by k1segawa | 2017-04-20 23:01 | arduino, AVR | Comments(0)