もよいめも

不定期更新ものづくりブログ

【ESP32】USB host shield 2.0 ライブラでINTピンの番号を変えたい!

今回はUSB HostShield2.0 ライブラリでINTピン(SSピンも同様)を他のピンに変更する方法について、まとめていきたいと思います。

ライブラリの説明でUsbCore.hを書き換えれば良いと書いてあったので、その通りに書き換えてコンパイルしたらエラーを吐いたので、その対処方となります。

続きを読む

【Fusion360】Fusion360で基板設計~第1回「ライブラリーをつくろう①」~

最近Fusion360で基板のライブラリーを作っているのですが、作り方がまあまあややこしいので、今回はそれについてまとめて置こうと思います。
なお、例のごとく内容は雑です。わからないところがあればどんどん書き足していきますのでコメント下さい。

続きを読む

【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

続きを読む

【Arduino】シリアル通信でラジコンもどきを作る!

さあ、前回に続きまして今回はシリアル通信の応用として、Arduino間シリアル通信を用いた有線ラジコンを作ってみようと思います。
ちなみに、こんな感じになります。

続きを読む

Pixel 4a 200日使用レビュー ~気になるのは防水くらい?~

スマホをpixel 4aにしてから200日ほど経ちました。
今回はpixel 4aを使ってきて感じたあれこれを紹介しようと思います。

続きを読む

3Dプリンターとレーザーモジュールで基板加工!~加工データ作成の巻~

気温も下がって秋を感じている今日この頃ですが、皆様どうお過ごしでしょうか?
わたくしはひたすら家にこもっております。
これはモノづくりがはかどるっ

結局公開は春休み中となってしまいましたが
今回は3Dプリンター(Ender3 V2)とレーザーモジュールで基板加工をしてみたので紹介したいと思います。

続きを読む

Seeeduino Xiaoでi2cを使おうとしたらコンパイルエラーが!!

Seeeduino Xiaoサイコーですよね。
あのコインサイズで強力なCortex-M0を搭載
さらにコネクターもタイプCなのでいちいちMini-Bケーブルを探してこなくて済みます。
↓以下公式の販売ページ、秋月やamazonでも購入できる&激安なのでマジおすすめです
jp.seeedstudio.com


しかしながら本日Seeeduino XiaoでMPU6050を使おうとサンプルログラムを書き込もうとしたところコンパイルエラーが!!

なんてこった

続きを読む

Arduinoへの入力電圧(9V)を測定してみた

Arduinoを9V角電池で動かそうと考えているのですが、
その時に角電池の電池残量を測りたいのです。
そこで電池の電圧を測ることにしました。

しかしながら、Arduinoのアナログピンの最大計測電圧は5Vなので
そのままアナログピンに突っ込んでも測れません。

そこでそこで今回は、分圧則を利用して
アナログピンにかかる電圧を二等分して計測していこうと思います。

f:id:moyoi:20200315223601j:plain
トップの写真用

配線

まあ単純に同じ抵抗値の抵抗器を挟んだけです。
なお、今回はそこらへんに転がってた51kΩを使いました。

配線図ですが、LCDは諸事情で付けられなかったので以下の記事を参考にしていただければと思います。
moyoi-memo.hatenablog.com

f:id:moyoi:20200315221439p:plain
配線の仕方

プログラム

プログラムはまあ適当に作りました。
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増やす

現在、ライブラリが更新され、従来のプログラムがそのまま使用できなくなっています。新バージョンは以下にまとめてあります

moyoi-memo.hatenablog.com


皆さん、Arduinoのピンの数たりてますか?
普段は十分足りてますが、本格的なものを作ろうとするとどうしても足りなくなってしまいます。

そこでこの「MCP23017」というICです。
akizukidenshi.com
このICはI2c通信で、プログラム上もかなり簡単にピンを増やすことのできるICです。今回はこのICについて詳しく書いていこうと思います。

ちなみにSPIで通信する「MCP23S17」もありますが、今回は割愛します。

配線の仕方

まずは配線。
以下の画像の通りに配線してください。(この場合アドレスは0x00)
Arduino nanoを使用する場合はA4がSDA、A5がSCLです。

f:id:moyoi:20200313101650p:plain
配線の仕方(画像はデータシートより)

f:id:moyoi:20200314112049p:plain
配線の仕方
なんとも適当な配線ですがつまりは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
f:id:moyoi:20200313101650p:plain
見やすいようにもう一枚

プログラム

ライブラリー

こちらからライブラリーを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);
  }
}


ブログ用、MCP23017とArduinoで大量Lチカ

余談

Mcpの記事って結構書いている人いるんですよね、
そのせいかわかりませんがGoogleで検索しても全然この記事が出てこないんですよ。
もはや弾かれてるんじゃないかってレベルです。
まあ心あたりはありまして、文字数が少ないのが原因なんじゃないのかにらんでいます。
ということでこの余談を付け足してるんですよね。
自分で頑張って書いた記事が見てもらえないことは悲しい事です、これで見られるようになったらいいんですが...

なんか最近は結構上位に出るようで嬉しい限りです!

と言うことで皆さん、良きArduinoライフを!

【Arduino】LCDにi2cでカタカナを簡単に表示させる方法

2021/2/13 表のタが\xv0になっていたので\xc0に修正しました

みなさんLCDって使ってますか?
I2c変換基板を買えばたったの4線で表示できちゃうし、
プログラムも簡単なのでとっても便利です。

しかし、LCDにカタカナを表示させたい場合は、
文字コード」を直接指定してあげないと表示できません。
なので今回は、LCDの使い方とカタカナの表示方法を書いていこうと思います。

続きを読む