昔書いたMCP23017を使ってみた記事では、新しいライブラリーに対応できなくなってしまったので、改めてまとめました。
続きを読む【Raspberry Pi Pico】 Arduino IDEでI2cを動かしたい!
割と前に登場していたRaspberry Pi Picoですが、ついに私の手元にもやってきましたので色々試してみました。
開発環境はもちろんArduino IDE!(Arduino IDE 2.0.0 beta8)。割とそのまま使えるという噂を聞いていまいたので、使い慣れた環境で開発してました。
噂通り、大体のプログラムも、ライブラリーもそのままで動きましたが、意外と引っかかったのがまさかのI2c...
まだ出て間もないせいか、調べても「これだ!」という結果はなかなか見つかりませんでした。
ということで、Arduino IDEでのRaspberry Pi Pico開発の繁栄を願ってこの記事を書いております。
宣伝
Raspberry Pi Picoのシリアル通信(UART)、PIO、SDカード等々、色々まとめてあるのでぜひご覧ください!
moyoi-memo.hatenablog.com
moyoi-memo.hatenablog.com
moyoi-memo.hatenablog.com
ちょっとつまずいた事集
今まで色々なものを作ってきましたが、その中で記事にするまでのことでもない、ちょっとしたつまずきをまとめてみました!
随時更新中
Seeeduino Xiaoでi2cを使おうとしたらコンパイルエラーが!!
Seeeduino Xiaoサイコーですよね。
あのコインサイズで強力なCortex-M0を搭載
さらにコネクターもタイプCなのでいちいちMini-Bケーブルを探してこなくて済みます。
↓以下公式の販売ページ、秋月やamazonでも購入できる&激安なのでマジおすすめです
jp.seeedstudio.com
しかしながら本日Seeeduino XiaoでMPU6050を使おうとサンプルログラムを書き込もうとしたところコンパイルエラーが!!
なんてこった
続きを読むArduinoへの入力電圧(9V)を測定してみた
Arduinoを9V角電池で動かそうと考えているのですが、
その時に角電池の電池残量を測りたいのです。
そこで電池の電圧を測ることにしました。
しかしながら、Arduinoのアナログピンの最大計測電圧は5Vなので
そのままアナログピンに突っ込んでも測れません。
そこでそこで今回は、分圧則を利用して
アナログピンにかかる電圧を二等分して計測していこうと思います。
配線
まあ単純に同じ抵抗値の抵抗器を挟んだけです。
なお、今回はそこらへんに転がってた51kΩを使いました。
配線図ですが、LCDは諸事情で付けられなかったので以下の記事を参考にしていただければと思います。
moyoi-memo.hatenablog.com
プログラム
プログラムはまあ適当に作りました。
0.0097という値もテスターの測定値になるべく近づくように適当に調節しただけです。
なので、9vあたりは誤差はないですが5vあたりでは結構ずれます。
そういえばアナログ値をfloatに代入しているのは、なぜかそうしないと値が四捨五入されちゃうからです。
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2);//アドレスは「0x27」と「0x3F」の場合があります void setup() { lcd.init(); lcd.backlight(); } float a = 0; void loop() { a = analogRead(6); lcd.setCursor(2, 0); lcd.print(a*0.0097); }
余談
動画も撮りました。
ブログ用、Arduinoへの入力電圧を測定してみた
かなり雑な記事で申し訳ございません。突然思い立って実践してうまくいったので、その流れでブログを書いているので勘弁してください。
すぐに記事にしてしまわないと一生完成しなさそうなので…
まあ、気が向いたら書き直そうかとおもいます。
【Arduino】MCP23017を複数使って、デジタルピンを最大128増やす
現在、ライブラリが更新され、従来のプログラムがそのまま使用できなくなっています。新バージョンは以下にまとめてあります
皆さん、Arduinoのピンの数たりてますか?
普段は十分足りてますが、本格的なものを作ろうとするとどうしても足りなくなってしまいます。
そこでこの「MCP23017」というICです。
akizukidenshi.com
このICはI2c通信で、プログラム上もかなり簡単にピンを増やすことのできるICです。今回はこのICについて詳しく書いていこうと思います。
ちなみにSPIで通信する「MCP23S17」もありますが、今回は割愛します。
配線の仕方
まずは配線。
以下の画像の通りに配線してください。(この場合アドレスは0x00)
Arduino nanoを使用する場合はA4がSDA、A5がSCLです。
なんとも適当な配線ですがつまりはMCP23017のGPB0をタクトスイッチに、GPA7のLEDにつないでるだけです。
ちなみにプログラム上のピンの番号はこちら
GPB0 | 8 | GPA7 | 7 | |
---|---|---|---|---|
GPB1 | 9 | GPA6 | 6 | |
GPB2 | 10 | GPA5 | 5 | |
GPB3 | 11 | GPA4 | 4 | |
GPB4 | 12 | GPA3 | 3 | |
GPB5 | 13 | GPA2 | 2 | |
GPB6 | 14 | GPA1 | 1 | |
GPB7 | 15 | GPA0 | 0 |
プログラム
ライブラリー
こちらからライブラリーをZIP形式でダウンロードします。
(バージョンが1.3.0以下のものをダウンロードしてください)
github.com
そして、Arduino ideのメニューのスケッチ→ライブラリーをインクルード→zip形式のファイルをインストールからダウンロードしたファイルを選択します。ソフトを再起動させれば導入は完了です。
プログラム
今回はタクトスイッチを押したときにLEDが点くプログラムにします。
もちろんこのICはデジタルピンを増やせる奴なので、アウトプットもインプット、さらにプルアップもできます。
ちなみに、ライブラリをインクルードする文でエラーを吐くこともあるそうなので、そういう場合は以下の文に置き換えてみてください。
これ↓
#include <Adafruit_MCP23017.h>
プログラムはこれ↓
#include <Wire.h> #include "Adafruit_MCP23017.h" Adafruit_MCP23017 mcp; void setup() { mcp.begin(0x00); mcp.pinMode(7, OUTPUT); mcp.pinMode(8, INPUT); mcp.pullUp(8, HIGH);//これでプルアップ } void loop() { if (mcp.digitalRead(8) == LOW) { mcp.digitalWrite(7, HIGH); } else { mcp.digitalWrite(7, LOW); } }
複数のMCP23S17を使う場合
右下の3つの端子(A0~A2)はアドレスを指定するためのピンなので
複数のMCP23017を使用する場合はそれぞれ別の場所につなぐようにしてください。
また、ピンとアドレスの関係は以下の図にまとめてありますので参考にしてください。
最大8つのMCPを接続できることになるのでフルに使ったら128ものデジタルピンを増やせることになります。(やったことがないので通信速度とかに問題が出るかもしれませんが)
ちなみに0がGND、1が5Vです。
A0 | A1 | A2 | アドレス |
---|---|---|---|
0 | 0 | 0 | 0x00 |
1 | 0 | 0 | 0x01 |
0 | 1 | 0 | 0x02 |
1 | 1 | 0 | 0x03 |
0 | 0 | 1 | 0x04 |
1 | 0 | 1 | 0x05 |
0 | 1 | 1 | 0x06 |
1 | 1 | 1 | 0x07 |
2つのMCP23017を使う場合はこんな感じです。
ちなみに大量にLチカするプログラムです。
#include <Wire.h> #include "Adafruit_MCP23017.h" Adafruit_MCP23017 mcp1; Adafruit_MCP23017 mcp2; void setup() { mcp1.begin(0x00); mcp2.begin(0x01); for (int i = 0; i <= 15; i++) { mcp1.pinMode(i, OUTPUT); mcp2.pinMode(i, OUTPUT); } } void loop() { for (int i = 8; i <= 15; i++) { mcp1.digitalWrite(i, HIGH); delay(20); mcp1.digitalWrite(i, LOW); } for (int i = 8; i <= 15; i++) { mcp2.digitalWrite(i, HIGH); delay(20); mcp2.digitalWrite(i, LOW); } for (int i = 0; i <= 7; i++) { mcp2.digitalWrite(i, HIGH); delay(20); mcp2.digitalWrite(i, LOW); } for (int i = 0; i <= 7; i++) { mcp1.digitalWrite(i, HIGH); delay(20); mcp1.digitalWrite(i, LOW); } }
Alexaスキルを開発した際のメモ書き
ユーザーの発言から色々取り出す
G533ヘッドセット 一ヶ月使用後レビュー
久々のブログ更新、今回は一ヵ月前に購入したLogicoolのゲーミングヘッドセット「G533」のレビューをしていこうと思います。
Logicool G ゲーミングヘッドセット ワイヤレス 無線 G533 ブラック Dolby 7.1ch ノイズキャンセリング マイク 付き PC 軽量 国内正規品 2年間メーカー保証
- 出版社/メーカー: Logicool(ロジクール)
- 発売日: 2017/01/26
- メディア: Personal Computers
- この商品を含むブログを見る
G533のスペック
・DTSHeadphone:X7.1サラウンド対応
・最長15時間連続使用可能で交換もできるバッテリー(1100mAh)
・2.4GHz帯でワイヤレス通信(15m届くらしい)
使用しての感想とか
装着感
ヘッドホンは今回のものとソニーの2000円ヘッドホンしか持ってないのでいまいちどうなのかわからんですが
使っていて特に不愉快な点はありません。イヤーパッドと頭に当たる部分も布製でふわふわしています。↓
頭を動かしてもずり落ちませんがきついと感じないほどの良い締め付け具合で、
重さを測ったらほぼ350gでそこまで重みも感じませんでした。
音質
正直初期状態での音質では音楽は楽しめません、なんというか音源が遠くてこもった音がします。
しかしご安心を、専用のソフトでいじれば十分いい音が出ます。
少なくともSONYの2000円ヘッドホンよりもいい音は出てる感じで、ヘッドホンを耳に押し当てると低音の広がりを感じられます。気持ちいいです。
まず7.1サラウンドを切ります。こいつのせいで音源が遠く聞こえるようです。
イコライザーは結構細かくいじれ、ついでに本体に保存しておけます。
操作性
ヘッドセット本体には
1:電源スイッチ
2:自由に機能を割り当てられるスイッチ
3:音量調節ダイヤル
の3つのスイッチがあります。
2の自由に機能を割り当てられるスイッチでは、キーボードの好きなスイッチを割り当てることができ、同時押しにも対応しています。
3の音量調節ダイヤルはpc本体の音量を変更するタイプです。
また、マイクを跳ね上げるとミュートにできる機能も付いています。
外観
全体がブラックに統一されていて、一部が鏡面になっています。指紋が付きやすいですが、まあ高級感はあります。
また、LEDは電源スイッチの上のみで、目立たずシックな雰囲気です。
電池
本体の電池容量は1100mAhと少なめな感じがしますが、消費電力は70mAhほどらしく、使った後ちゃんと充電していれば途中で切れることはないと思われます。
そういえば電池交換が非常に簡単で、右側面の板をくるっと回せば、すぐにバッテリーパックにアクセスできちゃいます。
でも毎回充電するのって面倒ですよね。
そういう人におすすめなのがマグネット式の充電ケーブルです。
今回買ったケーブルはAmazonのレビューで見つけた少々値段の高い製品ですがなかなか便利です。
サンワサプライ 超小型Magnet脱着式microUSBケーブル 1mSANWASUPPLY KU-CMG1
- 出版社/メーカー: サンワサプライ
- メディア: エレクトロニクス
- この商品を含むブログを見る
しかしこのケーブル、端子がマグネットでそこら中にくっつくのでショートしそうで怖いんですよね、
そこで私は手元にあった木材で適当なスタンドを作ってみました。
まとめ
どうやらLogicoolから新しいヘッドセットも出ているようですが、こちらのほうが評価は高いのでG533のほうがいいのかもしれませんね。
しかしながらかなりゴツかったり、7.1CHを切り替えるためにいちいちソフトで切り替えしなきゃいけなかったりと不満はあります。
とは言っても、この商品は自分が買ったときは11661円で、個人的には十分にその価値のあるものだと思いました。