親しみのあるLチカで応用的な書き方を試してみました。
while文の中に、ダラダラと記述するのではなく、機能を外出しすることで、可読性が上がります。また、コードの再利用性が向上し、ソースコードを応用しやすくなります。さらには、Rubyの特徴を活かせば、mruby/cの可能性に気づくきっかけになるかもしれません。
LED点灯・消灯機能をクラス化
main.rb
PIN = 6
is_on = false
pinMode(PIN, 0)
class LedManager
def on_off(v)
if v then
digitalWrite(PIN, 1)
else
digitalWrite(PIN, 0)
end
end
end
lm = LedManager.new
while true
is_on = !(is_on)
lm.on_off(is_on)
sleep 0.2
end
前回はLED点灯・消灯を関数としてwhile文から外出ししました。今回はさらにクラスにして、newでインスタンス化しています。
今回、mrubyファミリー Advent Calendar 2023に3日分参加させていただきました。Lチカプログラムを題材にして、機能を関数化して疎結合にしたり、クラス化してオブジェクト指向的な書き方を試しました。1つのLEDを点滅させる程度であれば、ここまですることはないでしょうが、ビジネス的に大きなプログラムを書く場合には必要になってきますので、その準備体操ができてよかったです