Category : Arduino

ArduinoOTAでプログラムの無線書き込み(ESP8266)

No Image

ESP8266はプログラムの無線書き込みができる機能(OTA:On The Air)があるらしいというのを最近知ったので実際にやってみました。
一度書き込み用のプログラムを入れると次からは端子の接続不要で書き込めるのが魅力的です。
「ArduinoOTA」は標準で入っているライブラリで、サンプルプログラムを真似すれば簡単に導入できます。

タッチセンサをスイッチとして使うプログラム

No Image

静電容量式のセンサ(タッチセンサ)は物理的なスイッチが必要ありません。
そのため作品のデザインに影響を与えませんし自由度も上がりますので、よく使っています。
Arduinoだとライブラリもあって簡単に使えますしね。
ただ、離散値としてデータが入ってくるのでスイッチとして使えるようにするには大変で、そのあたりの解説も乏しい気がします。
そこで1回タッチするごとにON/OFFの切り替えができるスイッチとして使えるようなプログラムを紹介をしようと思います。
解説が多めですので、プログラムだけ見たい方は一番下に移動してください。

Arduino for Visual Studio を使う

No Image

Visual Studio や VSCodeはIntellisenseが使えて開発効率が上がるので重宝しています。
一方、Arduino IDE はシンプルなのはいいのですが、ようやくベータ版で補完機能が使えるようになる感じで機能としてはいまいちというイメージがまだ拭えません。
そこで「Arduino for Visual Studio」というプラグイン(?)を使って Visual StudioでのArduino開発を試してみました。

Arduino Leonardoの起動時間を早くする方法

Arduino Leonardoの起動時間を早くする方法

Arduino Leonardo はチップ内にUSB通信機能があるため、組み込む際によく使うUSB-シリアル変換器を使わなくてもいいので重宝しています。
そんな Arduino Leonardo ですが、電源を入れてからプログラムが立ち上がるまでに時間が長いと感じてしまいます。
大体8秒くらいでしょうか。
もうちょっと早くならないかと思って調べてみると簡単にできそうなのでその方法を紹介します。

Arduino Zero / M0 用タイマー割り込みライブラリ

Arduino Zero M0 用タイマー割り込みライブラリ

Arduino Zero や Arduino M0 が出てだいぶ経ちますが、未だに使いこなせていません。
というよりも資料が少なく、ライブラリも対応していないものがあったりまだまだ使いづらいのが現状です。

そんな中、最近になってようやく Arduino Zero 用のタイマー割り込みライブラリを見つけました。
なんとAdafruitが出しているじゃありませんか。

「これを使えば・・・!」と思ってダウンロードしてみるも、エラーを吐いて使えないという。
そんなわけで「じゃあ作っちゃおう」ということで自分なりに作ってみました。

Arduinoでソフトウェアからリセットをかける方法

No Image

Arduinoは大抵の基板に搭載されているボタンを押したり、RESETピンをGNDに落としたりすることでリセットをかけることができます。
また、Arduinoにはオートリセット機能があり、プログラムを書き込むときやシリアル通信を開始したときにもリセットされます。

リセットがかかればスケッチの一番最初から実行されますし、変数も初期状態になります。
それをハードウェア上のボタンを押さずにソフトからリセットできるなら便利だと思いませんか?
ここではArduinoでソフトウェアリセットをかける様々な方法を紹介していきます。

ArduinoでFRAMを使ってみる

No Image

FRAMは日本語では強誘電体メモリと言います。
「RAM」とついていますが、不揮発性メモリの一種です。
FeRAMと呼ぶのが一般的らしいですが、FRAMなどとも呼ばれます。(サイプレスの商標です)

EEPROMよりも圧倒的に書き換え可能回数が多く、書き込み速度も速いのが特徴です。
そんなFRAMをArduinoで使ってみました。

TM1637のArduinoライブラリを6桁7セグに対応させる

No Image

TM1637は思った以上に便利で簡単に7セグを動かすことが出来ました。
7セグ+DPの6桁をこのIC1つで動かせるなんてすごい!と思っていたのですが、紹介したArduinoのライブラリでは4桁までしか対応できないことがわかりました。

また、DPを点灯させるのもちょっと苦労したのでそれらに対応できるように改造してみました。