Vol.938 13.Mar.2026

チェーンソーの目立て M5A)_AtomS3でカラー(文字)表示

C チェーンソーの目立て

by fjk

 マキタのMUZ254Dチェーンソー(abc822)を使っていて、切れが悪くなると、新品の25AP-60Eチェーンブレード(@2,300)に交換しているが、何度もその都度買い換えるのはもったいない。そこで、刃の目立てを自分で行うことにした。付属のヤスリでも簡単にできそうだが、すべての刃を均等に正しく目立てを行わないと、キックバックを生ずるなど危険である。

チェンソーの目立ての基本方法(目立て男子
・ ヤスリがけする、角度(例えば30°)を正しく
・ ヤスリの高さは1/5が上に出るよう
・ ヤスリは押し出す方向時に削り、戻り時には刃を離して削らない
・ ヤスリ掛けする回数は同じ(刃の長さを同じ)
 
作業手順
@ チェーンソーのガイドバーを、作業時に動かないよう、しっかりと固定する。
A 目立ての開始点にマジックで目印を付ける。
B 角度に注意しながら目立てを開始
C 目印まで目立てをしたら、反対側のカッターを同様に目立て
D 目印まで戻ったら刃の目立ては終了
 
デプスの調整
・ ゲージでデプス(刃の高さ)を確認し、必要であればデプスゲージを決められた値(例えば0.63mm)にヤスリで削る。
  (N-821-52チェーンソーデプス調整器、@2,260、)

 そこで、指定された角度を守って目立て作業を効率よく行うために、チェーンソー目立て機「SK11」(藤原産業、@2,997、手動)と「N-817」(ニシガキ、@5,530、電動)を準備した[Amason価格]。
 なお、作業時には、チェーンソー刃の下に木片を置いて高さを調整し、刃が動かないように固定した。


交換用純正チェーンブレード

切れなくなった刃先
【SK11】
 マニュアルに従い、60枚の各刃に1回ずつヤスリがけをしてみたところ、刃先にバリも見られ研磨されている跡が確認でき、試し切りでも切れ味が良くなった。最初の内はヤスリの位置が上手くセットできず手間取ったが、チェーンを掴みながら位置を合わせてヤスリがけをすることで、スムーズに作業できるようになった。

SK11 (ヤスリは押すときだけ削る)

研磨された刃先(研磨跡が見える)
【N-817】
 使い方はメーカーページにある動画が非常に参考になる。チェーンソー本体を右側に置き、左手でチェーンを押さえながら作業し、特にガイドの幅は余裕があるので、どちらかのヘリに合わせるのが良い。
 マニュアルに従い目立てを行ってみると、さすがに電動は楽である。@ガイドを合わせ、A砥石を刃面から離して置き、Bスイッチを押して砥石を回し、CN-817を左手で軽く押してスライドし、砥石を刃にチョンと押し当てる(小さな音が出る程度、回数は2〜3回が推奨)。研磨後の研磨面はバリもなく、刃面もまっすぐで、砥石なのでSK11より綺麗に見える。
 試し切りでは直径10cmの太い丸太も切断でき、切れ味が新品のように良くなった。なお、N-817は水平角度が自由なので、砥石の浮き上がりと、ガイドバーに対して90°に保つようにする注意すること。

N-817(赤いボタンは電源スイッチ)

研磨された刃先(刃がまっすぐ)

 電動のN-817は研磨時に力が要らず便利で早く(3〜5秒/刃)作業ができるが、角度(30°)と砥石径(4.0mm)が固定で、使用できるチェーンソーが限られる。
 手動のSK11はヤスリがけ時に少し力が必要で、作業時間も少し(5〜10秒/刃)よけいに時間がかかるが、角度や刃高さ、削り量などの調整が自由に選択でき、さらに他サイズのヤスリにも変えることができるので、チェーンソーを選ばず汎用性は高い。
 今回、デプスがほぼ仕様(0.65mm)の範囲だったので、デプスゲージの研磨は行わなかった。
 さらに、電動の「刃研ぎ名人チェーンソー」(N-821、ニシガキ)もあるが、@11,800円と少し高価である。しかし、これ1台でほとんどのチェーンソーに対応でき、同機でデプスゲージ研磨も可能なので、チェーンソーの使用頻度が多い人には、お薦めかも。
 なお、「ダイヤモンド砥石」(@1,500)は消耗しやすいので、「超硬ビット」(@2,000)も選択肢かな。


M M5_Atomシリーズ(4) 〜AtomS3でカラー(文字)表示

by fjk

 M5_Atom_Liteでカラー(文字)表示する場合、外部にカラーOLEDを接続する方法もあるが、AtomS3は128x128ドットカラー表示が標準でできるので、AtomS3を使わない手はない。
 そこで、ロジカラさんの「AtomS3の使い方、端子配列、開発環境、サンプルプログラムで詳しく紹介」、およびQiitaさんの「M5AtomS3をPlatformIOで動かしてみるメモ」を参考に、AtomS3の(外付けパーツ無しの本体のみで)動作テストを行いました。

 PlatformIoで、Boad は 「M5Stack AtomS3」を選び、追加したライブラリーは「M5Unified」だけ。デモプログラムを書き込み、コンパイル・書き込みまで、正常に実行できたが、何故かシリアルターミナルには何も表示されなかった(通信速度 monitor_speed=115200 に変更)。そこで、ネットで調べて見ると、M5Unifiedを使用した場合は、platform.iniに以下の記述の追加が必要なようである。


      build_flags =

        -D ARDUINO_USB_MODE=1

        -D ARDUINO_USB_CDC_ON_BOOT=1
	

platform.ini

  (オリジナルプログラムから不使用部を削除)
AtomS3_Demo.cpp(zip)

/******************************************************
 *		M5AtomS3_Demo Test
 ******************************************************/

#include <M5Unified.h>                          // M5Unifiedライブラリーを使用

//変数宣言
bool state = false;                             // 本体ボタン状態格納用

// 液晶画面変更処理関数
void lcdChange()  {
  if (state == true) {
    M5.Lcd.fillCircle(64, 64, 53, M5.Lcd.color565(0, 128, 255)); //塗り潰し円(青)
    M5.Lcd.setTextColor(M5.Lcd.color565(30, 30, 30));   // 文字色指定
    M5.Lcd.setCursor(45, 54);                   // 表示開始位置左上角(X,Y)
    M5.Lcd.print("ON");                         // ON表示
  } else {
    M5.Lcd.fillCircle(64, 64, 54, BLACK);       // 塗り潰し円(黒)
    M5.Lcd.fillCircle(64, 64, 51, M5.Lcd.color565(150, 30, 30)); //塗り潰し円(赤)
    M5.Lcd.setTextColor(M5.Lcd.color565(150, 150, 150)); // 文字色指定
    M5.Lcd.setCursor(39, 54);                   // 表示開始位置左上角(X,Y)
    M5.Lcd.print("OFF");                        // OFF表示
  }
}
// 初期設定 **************************************************
void setup() {
  auto cfg = M5.config();                       // 本体初期設定
  M5.begin(cfg);
  Serial.begin(115200);                         // シリアル通信初期設定
  delay(1000);                                  // シリアル接続待ち
  Serial.println("AtomS3 test start!");         // シリアル出力
  // 液晶表示(起動画面)
  M5.Lcd.fillScreen(0);                         // 表示クリア
  M5.Lcd.setRotation(2);                        // 画面向き設定(0:上,1:左,2:下,3:右)
  M5.Lcd.setTextFont(4);                        // フォント
  M5.Lcd.fillCircle(64, 64, 60, DARKGREY);      // 塗り潰し円(灰)
  lcdChange();                                  // 液晶画面表示変更
}
// メイン ****************************************************
void loop() {
  M5.update();                                  // ボタン状態更新
  if (M5.BtnA.wasPressed()) {                   // ボタンが押されていれば
    state = !state;                             // ON/OFF状態反転
    Serial.println("ON");
    lcdChange();                                // 液晶画面表示変更
  } 
  delay(100);                                   // 遅延時間
}


M5AtomS3の起動時

ボタンを押すと・・

 次に、チラツキ防止と日本語(フォント)の表示を、ロジカラさんのページを参考(といってもほぼそのまま)に、テストした。
 表示のチラツキを抑える技術として「スプライト機能」があり、「通常の画面表示における映像の情報を記憶しているビデオRAMとは別に、多数の小さな画像を画面上の1ピクセル単位で任意の位置にハードウェアで合成して表示するものである」とある。参考
 日本語の表示は、文字表示関数内で &fonts:: に続けてフォント名を指定するだけ。
 IPAフォントは4種類36通りあり、サイズ(8,12,16,20,24,28,32,36,40)によりメモリ使用量が変わる(フォント名に続けて_16などサイズ指定)。なお、efont(サイズ:10,12,14,16,24)は綺麗だがメモリ使用量が大きい。参考
 さらに、フォントの末尾に、_b(太字)、_i(斜体)、_bi も追加指定可。

テキスト表示APIの例   [ M5GFX API ]
 drawCenterString(*string, x, y, *font);
 drawString(*string, x, y, *font);


    フォントのメモリ使用量(KB)

TFT_登録色名

AtomS3_Kanji.cpp(zip)

/****************************************************************
 *      M5AtomS3_Kanji Test
 ****************************************************************/
#include <M5Unified.h>                          //M5Unifiedライブラリーを使用

static M5Canvas canvas1(&M5.Lcd);               // スプライト1をcanvas1として準備
static M5Canvas canvas2(&M5.Lcd);               // スプライト2をcanvas2として準備

bool change_flag = false;                       // 表示変更フラグ

// 初期設定 ----------------------------------------------------------
void setup() {
  auto cfg = M5.config();                       // 本体初期設定
  M5.begin(cfg);

  Serial.begin(115200);                         // シリアル通信初期化
  delay(1000);                                  // シリアル出力開始待ち
  Serial.println("ATOM S3 Simple Disp");        // シリアル出力

  // 液晶表示内容設定
  M5.Lcd.init();                                // Lcdインスタンス初期化
  // スプライト1(メモリ描画領域)表示内容
  canvas1.setColorDepth(16);                    // カラーモード設定(16bit)
  canvas1.createSprite(M5.Lcd.width(), M5.Lcd.height());
  // canvas1サイズ(メモリ描画領域)設定(画面サイズに設定)
  canvas1.fillScreen(TFT_BLACK);                // 背景色(透明)
  canvas1.fillCircle(64, 64, 63, TFT_LIGHTGRAY); // 塗り潰し円
  canvas1.fillCircle(64, 64, 59, TFT_ORANGE);   // 塗り潰し円
  canvas1.setTextColor(TFT_WHITE);              // 文字色
  canvas1.drawCentreString("出力", 64, 37, &fonts::lgfxJapanGothicP_28); 
  // 上中央座標を基準に文字表示(表示内容, x, y, フォント)
  canvas1.drawCentreString("Off", 64, 65, &fonts::lgfxJapanGothicP_28);
  // 上中央座標を基準に文字表示(表示内容, x, y, フォント)
  // スプライト2(メモリ描画領域)表示内容
  canvas2.setColorDepth(16);                    // カラーモード設定(16bit)
  canvas2.createSprite(M5.Lcd.width(), M5.Lcd.height());
  // canvas2サイズ(メモリ描画領域)設定(画面サイズに設定)
  canvas2.fillScreen(TFT_BROWN);                // 背景色
  canvas2.fillCircle(64, 64, 63, TFT_DARKGREY); // 塗り潰し円
  canvas2.fillCircle(64, 64, 59, M5.Lcd.color565(30, 0, 0));  // 塗り潰し円
  canvas2.setTextColor(TFT_WHITE);              // 文字色
  canvas2.drawCentreString("漢字", 64, 40, &fonts::efontJA_24_b);
  // 上中央座標を基準に文字表示(表示内容, x, y, フォント)
  canvas2.drawCentreString("On", 64, 68, &fonts::efontJA_24_b);
  // 上中央座標を基準に文字表示(表示内容, x, y, フォント)
}

// メイン -------------------------------------------------------------------
void loop() {
  M5.update();                                  //本体状態更新
  // 本体ボタンON
  if (M5.BtnA.wasPressed()) {                   // ボタンAが押されたら
    change_flag = !change_flag;                 // 表示変更フラグを反転
    Serial.println("ON");
  }
  // 液晶表示変更
  if (change_flag == false) {                   // 表示変更フラグがfalseなら
    canvas1.pushSprite(0, 0);                   // canvas1を座標を指定して表示
  } else {                                      // 表示変更フラグがtrueなら
    canvas2.pushSprite(0, 0);                   // canvas2を座標を指定して表示
  }
  delay(100);                                   // 遅延時間
}

// == オリジナルから表示文字・色などを変更しています ==


スプライトを使った漢字出力例

ボタンを押すと・・

<参 考>


【おまけ】 M5Unifiedとは? (M5Unified入門
 これまでM5Stack社はボード別に開発ライブラリを作成しており、似たようなライブラリがたくさんあり、そして微妙に仕様が異なるという状況になっていました。グラフィックライブラリであるLovyanGFXが登場したことで搭載している液晶画面などの判定や、標準ライブラリより高速描画が可能になりました。
その後、LovyanGFXを元にM5Stack公式ライブラリとしてM5GFXが作成され、各種ボードの制御コードが追加されたものがM5Unifiedとなります。
気をつけないといけないことは、もともとの個別ライブラリとM5Unifiedは完全コンパチではありません。ほぼそのまま動かすことができるのですが、ボードごとに異なっていたライブラリの関数などを整理する段階で微妙にクラスや関数名などが変わっていることがありますし、M5Unifiedでかなり強化された機能もある一方、まだサポートされていない機能もあります

M5Unifiedへの移植のポイント

@ Includeファイルが統一できる。
従来はM5Stack Basicなら#include <M5Stack.h>、M5StickCなら#include <M5StickC.h>とデバイスによってIncludeするヘッダファイルが異なっていましたが、M5Unifiedでは#include <M5Unified.h>で済みます。デバイスの種類はライブラリ内で自動識別されます。
A M5.begin()の引数が違う。
従来のM5.begin()では各デバイスのライブラリで引数の内容も数も異なります。それを統一するために構造体を引数にしています。 詳しくはM5.begin()を参照してください。
B M5Atom等のRGB LED制御には対応していない。
M5Unified v0.0.7の時点では、M5AtomのLED制御には対応していません。別途、FastLEDライブラリをIncludeして実装してください。
C TFCard(SDCard)の自動マウント(SD.begin())はしていない。
ESP-IDFに対応するために、SD.hはデフォルトでは使うことができず、使用できるTFカードのライブラリでSDFatも選択することを想定し、SD.begin()を内部で実行していません。
D グラフィクスライブラリがTFT-eSPIから、M5GFXへ変更
既存ライブラリはTFT_eSPIを内部に持っていましたが、M5UnifiedはM5GFXに依存しておりM5GFXを利用するように変更されています。M5.Lcd(M5.Display)で利用できるという点は変わっていません。APIは異なるので注意してください。
M5GFXライブラリについては「M5GFXの使い方」や「M5Stack 液晶表示の使い方まとめ」などを参照してください。
E Speaker機能
Core1は音にノイズが入っていますが、従来のライブラリよりも改善されます。また、圧電ブザー搭載機種でもブザーだけでなく音声ファイルの再生等が可能です。
※ 大音量の音声ファイルや低周波を大音量で流し続けるとスピーカーが壊れることがありますので十分ご注意ください。
F Btn名の違い
共通化するためにボタンが1つの機種でもBtnではなくBtnAとなります

<参考> M5Unifiedライブラリの始め方


※プログラムのリストをハイライト無しのスタイルで見る場合はここをクリック


※ 本レポートの参考・利用は、あくまでも自己責任でお願いします。


チェーンソーの目立て M5A)_AtomS3でカラー(文字)表示