M5Stack用ミニリレーユニットを使った際のメモ
モノ
サンプルコード
スケッチサンプル:M5Stack -> Unit -> RELAY
コード
Grove接続なので、G32を使用
動作確認
M5StickCPlusとRelay Unitの動作確認 pic.twitter.com/jCgjuhJAjF
— modal_soulは『納得』を優先する (@modal_soul) 2021年1月6日
NO端子に接続しているので、HIGHで点灯
M5Stack用ミニリレーユニットを使った際のメモ
スケッチサンプル:M5Stack -> Unit -> RELAY
Grove接続なので、G32を使用
M5StickCPlusとRelay Unitの動作確認 pic.twitter.com/jCgjuhJAjF
— modal_soulは『納得』を優先する (@modal_soul) 2021年1月6日
NO端子に接続しているので、HIGHで点灯
ENV.II Hatで湿度を計測し、IR Unitで加湿器を動作させ、室内の湿度を一定に保つ。
湿度が設定上限を越えた時にオフ、下限を下回った時にオンになるのが確認できた
— modal_soulは『納得』を優先する (@modal_soul) 2021年1月1日
思いの外ちゃんと動いてる pic.twitter.com/EJS2v8FDi8
赤外線リモコンのコマンドをM5StickC Plusで送信するために、M5Stack用赤外線送受信ユニットを使った際のメモ
受信はこちら modalsoul.hatenablog.com
IRremote -> IRsendDemo を参照
#include <M5StickCPlus.h> #include <IRremote.h> // int ir_send_pin = 32; // IR Unit int ir_send_pin = 9; // M5StickC Plus IRsend irsend(ir_send_pin); unsigned long POWER = 0x00ff00ff; void setup() { } void loop() { for (int i = 0; i < 3; i++) { irsend.sendNEC(POWER, 32); delay(40); } delay(5000); //5 second delay between each signal burst }
Grove接続のIR Unitを使う場合はG32。M5StickC Plus本体の場合はG9。
※ 送信可能な距離はIR Unitで1m、本体で30cmくらいが限界。
プロトコルにあったメソッドを使用する。
今回はNECなのでsendNEC
で、第1引数にHEX値、第2引数にbit数を指定
赤外線リモコンの送信パターンを調べるために、M5Stack用赤外線送受信ユニットを使った際のメモ
IRremote -> IRrecvDump を参照
Grove接続なので赤外線受信はG33を使用。
起動後、赤外線受信部分にリモコンの赤外線を照射。読み取った赤外線を送信するには、プロトコルとHEX値、bit数がわかればOK。
M5StickC Plusの上部にある8ピンに接続できる環境センサモジュールで計測した際のメモ
今回はこちらのHatタイプを使用
Grove接続するタイプ。組み込まれているセンサ類は↑のHatと同じ。
BMP280を使うためのライブラリ。気圧を計測する場合必要。
温度・湿度のみ計測したいのでなくてもよかったが、サンプルコードを動かすためにインストールした
M5StickCでENV II Hatを動かすサンプルコード
サンプルコードをM5StickC Plus用に修正したもの
M5StickC.h
-> M5StickCPlus.h
に変えただけ
M5StickC PlusとFINGER UNIT(FPC1020A)の覚書
Groveケーブルで接続するタイプ。今回はこちらを使用。
Hatモジュールタイプ。FPC1020SC
https://www.arduino.cc/en/softwarewww.arduino.cc
ESP32ボードマネージャーインストール
https://dl.espressif.com/dl/package_esp32_index.json
M5Stack -> Unit -> FINGER_UNIT_FPC1020Aのサンプルを参考
使用するPINを変更すればFINGER HATでも同じく動作を確認できた。
指紋を登録してもuserNumが1固定になり、Matchingにも失敗する事象が発生した。
M5StackC PlusとFPC1020A Finger Unitで指紋登録と認証できた
— modal_soulは『納得』を優先する (@modal_soul) 2020年12月27日
認証が正常に動作してないように見えた件、指紋登録後も登録数読み出しが常に1で返ってきて怪しかったから、setup時に登録全削除をはさんだらうまくいった
やはりそもそも登録が正常に動作してなかっただけっぽい pic.twitter.com/G8gtlZJWVF
setup
で登録済みのすべてのユーザー情報を消去することで、登録・Matchingに成功した。
LeetCode Problem No.12.
No.11 is here.
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999.
Example 1
Input: 3 Output: "III"
Example 2
Input: 4 Output: "IV"
Example 3
Input: 9 Output: "IX"
Example 4
Input: 58 Output: "LVIII" Explanation: L = 50, V = 5, III = 3.
Example 5
Input: 1994 Output: "MCMXCIV" Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
object Solution { def intToRoman(num: Int): String = { def toRoman(i:String, v:String, x:String, n:Int) = { if(n == 4) i+v else if(n == 9) i+x else if(n < 4) i*n else v + (i * (n%5)) } val i = toRoman("I", "V", "X", num%10) val x = toRoman("X", "L", "C", num%100/10) val c = toRoman("C", "D", "M", num%1000/100) val m = "M" * (num%10000/1000) m+c+x+i } }
D: 1, 10, 100 I: D V: 5*D X: 10*D
Runtime: 480 ms, faster than 76.19% of Scala online submissions for Integer to Roman. Memory Usage: 49 MB, less than 100.00% of Scala online submissions for Integer to Roman.