フォト
2025年3月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ

« 2019年12月 | トップページ | 2020年2月 »

2020年1月の6件の記事

2020年1月26日 (日)

M5StackでMML単音演奏

以前 Arduino用に作成したMML文演奏ライブラリをM5Stackにて利用してみました。
M5Stackにて、単音演奏をやってみました。
数日前にやった、「M5Stackのビープ音、Tone音の爆音対策」を適用して音量が出来るようにもしました。

01_20200126102101

■ ライブラリ
   MML文演奏ライブラリ  MML_Play
   https://github.com/Tamakichi/MML_Play

   ライブラリ本体は、ESP32ではコンパイルエラーが発生したため修正&更新しました。
   ついでに、M5Stack用のサンプルスケッチ(本記事のスケッチ)を追加しました。

動いている様子
  

スケッチ(ライブラリに添付)

演奏操作は、
  ボタンAで演奏開始(または先頭から演奏しなおし)、
  ボタンBで演奏中断、
  ボタンCで中断した演奏を途中から再開
です。

音量は最低にしているため、小さめです。
音量を上げるには、MML文先頭のv1の値を1~9(爆音)の範囲で調整して下さい。

ノイズ等もなくとりあえずは、まともに演奏出来ているようです。
効果音的な何かには使えると思います。

2020年1月22日 (水)

M5Stackのビープ音、Tone音の爆音対策

M5Stackはスピーカーが搭載されており、
標準のAPIを使ってビープ音やTone音(周波数を指定して鳴らす)を簡単に鳴らすことが出来ます。
ただし、「爆音」です。
これには、ちょっと困りました。鳴らすとやかましいです。

ググってみると、多くの利用者が同様に困っているようです。
何とかならないかなぁ、と思い試行錯誤してみました。
結論としては、とりあえず、何とかなりました。

01_20200122220601

とりあえず、単音440Hz(ラ)の音を音量指定して鳴らしてみました。

サンプルスケッチ
音量指定できる新しいtone関数、toneEx()を作成しました。
音の大きさの制御は、デューティ比を操作で制御しています。

toneEx()の3番目の引数、volに0(無音)、1(最小) ~ 9(最大)の指定にて音量を指定することが出来ます。
サンプルスケッチでは、M5Stackの左ボタンで最小音、真ん中ボタンで3、左ボタンで5を指定して音を鳴らすことが出来ます。

耳で聞いた感じでは、いい感じで音量制御出来ています。
最小の1でも十分聞こえ、ちょうど良いかもしれません。

次の段階として、Arduino用に作成したMML演奏ライブラリを試してみます。


追記 2021/03/29 
この記事へのアクセスが多々あるので、遅レス..
この爆音対策は、M5Stack 0.3.1で行われているようです(動作未確認)
この記事を参考にして、らびやんさんがプルリクして本家に組み込まれたようです。

■ 関連記事
  ・update: M5.Speaker.setVolume works with M5.Speaker.tone . #205
  ・https://twitter.com/lovyan03/status/1245712776514768897
     duty設定してボリューム下げるのM5.Speakerに突っ込んでプルリク出しても良さそうな https://t.co/jQZsIowOLH

2020年1月18日 (土)

M5stackで日本語表示

Arduino Uno用に作成したフォントライブラリをM5Stackで試してみました。

ライブラリ
  ・Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
    https://github.com/Tamakichi/Arduino-misakiUTF16

とりあえず、LCDにライブラリ無修正で利用出来ました。
Dscn2468
ノーマルのサイズでは、文字が小さすぎて読めません。

3倍角にして表示してみました。
Dscn2477

まあ、8ドットフォントなのでこんなもんでしょう。

動いている様子


コントラストの関係で動画が綺麗に取れないため、背景色を青に変更しました。
8ドットフォントを1~4倍にして繰り返し表示しています。

スケッチ

スケッチは、OLED(SSD1306)で美咲フォントを使った漢字表示 のものを修正して作成しました。

フォント表示については、他の自作ライブラリの動作も検証したいと思います。



2020年1月15日 (水)

ココログの不具合治らず.. 過去記事を修正中です

ココログ、2019年3月19日のシステムリプレイス以降、過去の記事を修正すると
レイアウトが崩れてしまう現象が未だに、全く改善されず、悩まされています。
過去記事への追加・修正も頻繁に行っているので厄介です。

特に、<pre>タグでソースファイルを掲載した記事の修正を行うと、
掲載ソース以外の箇所を修正したのにも関わらず、ソースファイル掲載部分が崩れます。
無修正で、エディタを開いて保存だけでも崩れます。

修正前の記事
01_20200115150001

開いて保存しただけでレイアウトが崩れる記事

02_20200115150001

ソース掲載部分以外にも、記事全体に変な行間が追加されます。

運営側に連絡しても意味が通じないようで、改善されません。
連絡の際、セキュリティ対策の理由でファイルの添付禁止で、発生状況の画像等を送ることができないのと
受け付ける方の技術的なスキルが低いようで、
タグやHTML等の現象を文書で状況を説明すると理解してもらえず、何往復もやり取りが発生し、
それでも状況が理解されないです。

仕方がないので、過去のすべての記事を開きレイアウトが崩れないように対応中です。

全く無駄な作業ですが、Markdownが使える、CSSが使えるのと、
セキュリティ対策が緩くて、JavaScriptが実行できる等、メリットのほうが大きいので
我慢して使っていくことにします。

2020年1月 9日 (木)

NeoPixel(WS2812B)の制御 その4

ArduinoによるNeoPixel(WS2812B)の制御の続きです。質問があり、折角なので
以前作成した、8x8ドットマトリックスタイプのNeoPixelを制御するスケッチを汎用化(任意のサイズ対応)しました。
とりあえず手持ちの16x16ドットモジュールで試してみました。

動いている様子


利用したモジュールは、Aliexpressにて入手しまた。

1 pcs/lot DC5V 16x16 Pixel WS2812B LED Digital Flexible Individually addressable Panel light
04_20200109194301

このモジュールのNeoPixelの並びは次のようになっています。
05_20200109195701

接続
    Arduino:D11   -  NeoPixel:DIN
    Arduino:5V     -  NeoPixel:5V
    Arduino:GND  -  NeoPixel:GND

スケッチ


スケッチは、16x16ドットマトリックスに対応するように作成していますが、
下記の横ピクセル数、縦ピクセル数を変更することで、横8x縦8ドット、横32x縦8ドットにも対応出来ると思います。
  #define PXCEL_W  16    // 横ピクセル数
  #define PXCEL_H   16    // 縦ピクセル数

また、メッセージ表示の縦位置は NeoMsg()関数の最後の引数で指定出来ます。
スケッチは、Githubのgistにて公開しています。スケッチ表示の下部の帯のリンクから参照出来ます。
スケッチのコンパイルには、別途下記のライブラリが必要です。

   ライブラリ
   ・Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
     https://github.com/Tamakichi/Arduino-misakiUTF16


<2023/06/11 追記>
本記事に対して質問があり、16x16ドットマトリックスに8x8ドットフォントを表示した場合、確かに「文字、小さっ」ですよね~
ちょっと改造やってみました。

Arduino Uno的には、16ドットフォントデータを単体で載せるのは無理なので、
美咲フォント(8x8ドット)を倍角処理(16x16)して表示するバージョンを作ってみました。

倍角表示対応として、以下の関数を追加しています。
 ①NeoScrollInCharEx() 16x16ドットフォントのスクロール表示版
  この関数は、NeoMsgEx()から呼び出されて利用します。
 ②NeoMsgEx() 倍角表示対応版
  美咲フォント(8x8ドット)から倍角フォント(16x16ドット)を作成しています。
  ソースのコメント部の倍角フォント作成(追加)でやってます。
  倍角にするには、1ドットを4ドット(縦2倍x横2倍)にしています。
  8x8ドットのフォントデータ uint8_t fnt[8] から1ドットあたり4ビットをuint16_t fntEx[16]に格納します。

  追加の処理構造、倍角処理あたりのビット操作(ループで8x8ドットから1ビットの取り出し⇒1か0かの判断 ⇒ それを元に処理)、
  自分的には、頭の中で処理や構造が「パッ」と短時間で映像で浮かんで、単にそれを実装(コード化)する感じなのですが、
  これを文章化して人に伝えるには、フロチャートやPADに落とさないと無理かな~(-_-;)
  ( ⇒ コードを書いて示した方が早い?  そうすると自力で悩まないのでスキルUP、育成に繋がらない
    ⇒ なのでヒント小出し
    ⇒ いじわるしていると思われる(-_-;) 、
    以前もFacebookで「もったいぶらず、さったと答えを教えろ」的に攻撃してきた人がいたのでFacebook辞めました(>_<)
  )

  ソフトウェアの仕様伝達、ノウハウの具現化? 難しい..

  その16x16ドットフォントをNeoScrollInCharEx()を呼び出して文字を表示します。

倍角表示
Pxl_20230611_035249288mp

スケッチ

関連記事
 NeoPixel(WS2812B)の制御 その4(2020.01.09)  ・・・ 16x16マトリックスの制御(この記事です)  
 
NeoPixel(WS2812B)の制御 その3(2018.05.30)  ・・・ 8x8マトリックスの制御
 NeoPixel(WS2812B)の制御 その2(2018.05.22)   ・・・ SPIを使った制御
 NeoPixel(WS2812B)の制御(2018.05.20)            ・・・ GPIOを使った制御

2020年1月 1日 (水)

明けましておめでとうございます。

明けましておめでとうございます。本年もよろしくお願いいたします。

我が家のにゃんこ達は、今年も元気に正月を迎えることが出来ました。

たまちゃん、最近はホットマットの上が定位置です。
02_20200102105801

ルミちゃんの姿が見えないので、探してみると ...
01_20200102105801

いました。ベランダの猫草プランターの中に..

03_20200102105801

なぜ、ここで寝る.. まあ、気持ち良さそうに寝ているので良しよします。
2020年の元旦は、ぽかぽかの暖かい日でした。

« 2019年12月 | トップページ | 2020年2月 »