Users_プログラムの作成と書き込み - gfd-dennou-club/mrubyc-esp32 GitHub Wiki

6. プログラムの作成と実行 [マルチタスク]

mrubyc-esp32 リポジトリで配布している VM はマルチタスクに対応している.マルチタスクで動かす場合には, src ディレクトリ以下の master.rb と slave.rb の 2 つに,並行して動作させるプログラムを書きこめばよい. なお,シングルタスクでの動作に戻す場合は,src/slave.rb ファイルの中身を全てコメントアウトすれば良い.

Ruby コードの作成

src/master.rb にコード書く.マスターとスレーブで異なる周期で Hello World を表示するだけでなく, スレーブで設定した変数をマスターで表示するようにしてみる.なお, 共有変数を使う場合は変数名の先頭に $ (ドル) 記号を付すこと.

$ vi src/master.rb

     $msg = "ESP32"
     while true 
       puts "hello world from #{$msg} (master)"
       sleep 1   # 1 秒おき
     end

$ vi src/slave.rb

     i = 1
     while true
       puts "hello world from ESP32 (slave) #{i}"

       if ( i % 2 == 0 )
         $msg = "hoge"
       else
         $msg = "peke"
       end
       i += 1
       sleep 5   # 5 秒おき
     end

作成した ruby コードのコンパイルとマイコンへの書き込み

master.rb を書き換えるたびにコンパイルとマイコンへの書き込みを実行する.これは make spiffs というコマンドでまとめて行うことができる.

$ make spiffs

    Toolchain path: /home/user/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
    Toolchain version: esp-2020r3
    Compiler version: 8.4.0
    .... 以下略 ....

モニタ出力の確認

モニタ出力の確認は make vm-monitor コマンドで行うことができる.モニタを終了する場合は Ctrl-] を打鍵すること (コントロールキーと ] キーを同時に押すこと). 以下の例は,コンパイル・マイコンへの書き込み・モニタ出力を同時に行うものとなっている.

$ make spiffs spiffs-monitor

  Toolchain path: /home/user/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
  Toolchain version: esp-2020r3
  Compiler version: 8.4.0

  ...(中略)...

   hello world from ESP32 (master)
   hello world from ESP32 (slave) 1
   hello world from peke (master)
   hello world from peke (master)
   hello world from peke (master)
   hello world from peke (master)
   hello world from ESP32 (slave) 2
   hello world from hoge (master)
   hello world from hoge (master)
   hello world from hoge (master)
   hello world from hoge (master)
   hello world from hoge (master)
   hello world from ESP32 (slave) 3
   hello world from peke (master) 
   hello world from peke (master)
   hello world from peke (master)
   hello world from peke (master)
   hello world from peke (master)
   hello world from ESP32 (slave) 4
   hello world from hoge (master)
   hello world from hoge (master)

  ...(以下略)...