Vol.939 27.Mar.2026

自転車の交通ルール M5A)_AtomS3Rでカラー画像の表示

J 自転車の交通ルール 〜4月1日より交通反則通告制度を導入

by fjk

 いよいよ、令和8年4月1日から、自転車の一定の交通違反に交通反則通告制度を導入すること等を内容とする「道路交通法の一部を改正する法律」(令和6年法律第34号)が施行され、自転車の交通違反で検挙された後の手続が大きく変わります。
 そこで、自転車も車両の仲間として、交通ルールの遵守を図るため、16歳以上の者による自転車の一定の交通違反に対して、青切符を導入することとなりました。自転車への青切符の導入により、自動車と同様に、手続的な負担を軽減するとともに、違反者に前科がつくことをなくしつつ、実効性のある責任追及が可能となります。今後、違反の実情に即して、自転車の一層の安全な利用のための指導警告や、青切符、赤切符等による処理が行われます。
 改正に伴い、特に「携帯電話使用等(保持)」に注意が必要で、携帯電話を使用していなくても、保持しているだけで、青切符の反則金(12,000円)となります。
 また、左側通行の原則(自転車は基本的に道路の左側端に寄って通行)もより厳しくなります。

自転車は車道通行が原則ですが、次のようなときは、普通自転車は歩道を通行できます。
@ 道路標識・道路標示で歩道を通行することができるとされているとき
A 13歳未満若しくは70歳以上の方、又は一定の身体障害を有する方が運転するとき
B 車道又は交通の状況に照らして、自転車の通行の安全を確保するため、自転車が歩道を通行することがやむを得ないと認められるとき(工事中等)
 
なお、シニアカー(「ハンドル型電動車椅子」、最高速度は時速6km以下)は歩行者扱いで、原則的には歩道を走行しなければなりません。歩行者と同じなので、歩道が無い場合は、道路の右側を走行しなくてはなりません。。

● 詳しくは、以下の警視庁のページを参照。

●「反則行為」と「重大な違反」および「反則金」

★自転車が対象とされる反則行為
★刑事手続きによって処理される重大な違反


M M5_Atomシリーズ(5) 〜AtomS3Rでカラー画像の表示

by fjk

 AtomS3RはAtomS3にPSRAM(8MB)を追加した物で、IMUはAtomS3とは構成が異なります。PSRAM(Pseudo Static RAM)は、外部インターフェースは SRAM のように見え、内部には DRAM セルが用いられています。大量のデータ処理や外部メモリが必要なアプリケーションにおいて非常に有用です。(参考
 AtomS3はRAMメモリが少なく、大きなデータをRAM格納できませんが、AtomS3RのPSRAMがあれば画像データを作業用としてRAMに格納することができます。
 そして、SPIFFS(SPI Flash File System)のAPIを使うことで、このPSRAMにファイルを保存し、必要な時にデータの読み・書きができます。(SPIFFSの使い方
 そこで、「画面に任意の画像を表示する方法」を参考(といってもほぼそのまま)に、BMP画像データをAtomS3Rに表示してみました。

【表示画像の作成とAtomS3Rに書き込む】
@ 表示する画像は、abc916の方法で、128×128dot(16ビット5-6-5)のBMPファイル(rose.bmp等)を作製。
A プロジェクトを右クリック。「新しいフォルダー」を選択し、「data」フォルダーを作る。
B dataフォルダを右クリック、「エクスプローラで表示する」を選択。作製したBMPファイルをdataフォルダにコピー。
C 左側PlatfoormIOのメニューからProject Tasksを開く
D [Build Filesystem Image]をクリックしてフォーマットをした後に[Upload Filesystem Image]をクリックすることで [data]フォルダ内に保存されているデータが書き込まれます。

新しいフォルダー作製

エクスプローラで表示

ファイルシステム作製

データの書込

Platformio.ini

AtomS3RにBMP画像を表示

 M5シリーズでM5Unifiedを使う場合は、SPIFFSライブラリーは以下の記述だけで使用できます。
    #include <SPIFFS.h>
 M5Unifiedを使用しない場合は、platformio.iniに以下の記述が必要です。
    board_build.filesystem = spiffs
 
 SPIFFSファイルから画像を表示するM5GFXのアプリ関数の例は、
PNG:
drawPngFile(SPIFFS,file,x,y);
JPG:
drawJpgFile(SPIFFS,file,x,y);
BMP:
drawBmpFile(SPIFFS,file,x,y);

AtomS3R_bmp.cpp(zip)

/***********************************************************
 *	AtomS3_bmp  Test
 **********************************************************/
#include <SPIFFS.h>
#include <M5Unified.h>

M5Canvas canvas(&M5.Display);

// ===== ユーザーが変えるのはここだけ =====
static const char* IMAGE_PATH = "/rose.bmp";
                            // SPIFFS内の画像パス
static const uint8_t BRIGHTNESS = 128;
                            // 画面の明るさ(0-255)
// ====================================

static void die(const char* msg) {
  // 画面にエラー表示して停止
  M5.Display.clear(TFT_BLACK);
  M5.Display.setTextSize(2);
  M5.Display.setTextColor(TFT_WHITE);
  M5.Display.setCursor(0, 0);
  M5.Display.println(msg);
  while (true) { delay(100); }
}

void setup() {
 // SPIFFS.format();        //フォーマットが必要なら実行
  auto cfg = M5.config();
  M5.begin(cfg);


  M5.Display.setBrightness(BRIGHTNESS);
  M5.Display.clear(TFT_BLACK);

  // 1) SPIFFSをマウント
  if (!SPIFFS.begin(true)) {
    die("SPIFFS mount failed");
  }

  // 2) ファイル存在チェック
  if (!SPIFFS.exists(IMAGE_PATH)) {
    String s = "File not found:\n";
    s += IMAGE_PATH;
    die(s.c_str());
  }

  // 3) ちらつき防止:スプライトに描いてから一発表示
  canvas.createSprite(M5.Display.width(), M5.Display.height());
  canvas.fillSprite(TFT_BLACK);

  // BMPを描画(JPGなら drawJpgFile、PNGなら drawPngFile)
  canvas.drawBmpFile(SPIFFS, IMAGE_PATH, 0, 0);

  canvas.pushSprite(0, 0);
  canvas.deleteSprite();    // 1回表示なら解放してOK
}

void loop() {
  // 画像を1回表示するだけなら何もしない
}

<参考> フラッシュメモリのパーティションのデフォルトサイズは4MB(default.csv、変更可能

# Name Type SubType Offset Size
nvs data nvs 0x9000 0x5000
otadata data ota 0xe000 0x2000
app0 app ota_0 0x10000 0x140000
app1 app ota_1 0x150000 0x140000
spiffs data spiffs 0x290000 0x160000
coredump data coredump 0x3F0000 0x10000

 
◇「spiffs」はファイル単位でデータを管理できるがディレクトリフォルダーが作れない。最近は「fat」が推奨されている。 参考
 
パーテションテーブルのサンプル


【おまけ】

● 主なM5Atomシリーズの比較


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


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


自転車の交通ルール M5A)_AtomS3Rでカラー画像の表示