見出し画像

M5StickCPlusでプログラミング

どうもやなです。友人にプログラミングを教えるために記事を書くことにしました。とりあえず書ききることを目標としているため、めっちゃ雑で拙いと思います。ご了承ください(保険)

今回はM5StickCPlusというマイコンで、プログラミング(電子工作)をする方向けの記事になります。またプログラミングは授業とかで一応やったけどよくわからん人向けになります。
「プログラミング?何それおいしいの?」って人は分からんかもしれません。ほかの記事でさわりを知るとよいと思います。

プログラミングを始めるにあたっての準備

プログラミングを始めるにあたって必要なものが複数あります。

  • PC(ノートでもデスクトップでも可)

  • ArduinoIDE(ソフトなのでダウンロードしてもらいます)

  • M5StickCPlus(始めるなら正直どんなマイコンなら何でもいいかも)

私が今回使うのはこれ

多分こんくらい。んで環境構築はまた今度詳しく書きたいと思います。今回はプログラミングの内容メインで書かせていただきます。すんません。
代わりに私が参考になった環境構築の記事を張っておきます。

↓↓↓↓↓

https://dev.classmethod.jp/articles/m5stack-arduinoide/

早速プログラミングをするぞ

ではプログラミングをしていきましょうか。今回は私がサンプルで作ったコード(プログラムの内容)を書き込んでもらいます。
自分で少しわかってきたなと思ったら、どしどし自分でアレンジして遊んじゃってください!

ArduinoIDEの使い方

パソコンでArduinoIDEを起動して実際に書き込んでみます。

ArduinoIDEを起動するとこんな画面が出てくると思います

まずは基本的に使うボタンを紹介したいと思います。

  • チェックボタン:コンパイル(プログラムの言葉から機械語に変換)

  • →(矢印)ボタン:マイコンに書き込みをする(コードの変更毎にやる)

  • ツールタブ:書き込み先のマイコンを指定する(最初だけでいいが必須

変更するのは赤線のところ

とりあえずこれだけ知っていれば大丈夫です。あとのものはカーソルを合わせるとキャプションが出るので、いろいろ触ってみてください。

ハードの王道、"Lチカ"

早速プログラミングをしていきましょうか。「なんもわからん」って人も大丈夫。一旦理論は置いておいて、まずは実行しましょう!

では下のサンプルコードを使って書き込みます。貼り付けてチェックボタンでOK。
最初は保存画面やらありますが、適当に "L-tika.ino" にしときましょう。どんな動作になるかは実行してみてからのお楽しみです。

注意:書き込むマイコンの指定をツールから行いましょう!忘れがちです

// LEDをチカチカさせるコード、通称 "Lチカ"

// setup関数は最初の一回だけ実行される
void setup() {

  pinMode(10, OUTPUT);    // 指定のピンを出力モードにする

}

// loop関数は無限にループするところ(ここに動作のメインを書く)
void loop(){

  // 指定したピンに、5V or 0Vの電圧を入力するイメージ
  // delayは動作を止めるもの。カッコの中にミリ秒で指定する → 1秒ならdelay(1000)
  digitalWrite(10, HIGH);
  delay(1000);
  digitalWrite(10, LOW);
  delay(500);

}

書き込みに成功すると本体の左上が赤く点滅し始めると思います!いえ~い
これがいわゆる動作を確かめるためのコード、Lチカです。プログラミングで大体最初にやるHello World!を表示するノリと同じです。

Lチカ成功だぁ

また、ここでエラーが出たらその文をコピーして調べるとよいです。

何してるのこれ

プログラム自体にも説明を書きましたが、正直勝手がわからずなんとなくしかわからんと思います。これみてなんとなくわかった人は、どんどんほかのプログラムを実行して慣れるのもいいと思います。が一応説明を。

そもそもマイコンってなんだよ

そもそもマイコンって言葉が謎だって話ですね。名の通りマイクロコンピューターの略であり、動作を命令する脳みそみたいなもんです。似たようなものが皆さんのスマホやゲーム機、家電とかに入ってます。(俗にいうCPU)

マイコン(足がたくさん)

私たちはいまパソコンを使って👆👆👆こいつに「LEDをつけろ!」ってやつを命令し、覚えさえることにより好きな動作をさせることができます。

ただ上のやつ単体だと中で電流が無駄に消費するだけなので、そこからLEDを配線します。そうして初めて「ピンの番号10のところに電流を流してLEDをつけろ!」などを詳細に命令し始めて動作します。

配線をして、適切な「命令」をすることで初めて動作する

「いや俺配線してねぇけど」って感じですが、今使ってるM5StickCPlusは最初からこの配線作業ができてます。オレンジの外側しか見えないのでよくわかりませんが、中にちゃんとこんなやつがいてLEDやボタン、液晶からスピーカーに至るまで配線がされてるわけですね。

本体の裏
どこにどんな配線がされているかが書いてある

実際にどのピンにどんな奴がつながってる知りたいときは本体の裏を見るとちゃんと書いてあります。今回だとLEDがG10と書いてあるので10ピンを指定しています。

プログラミングの基本

プログラムは基本的にコードの上から順に処理されます。繰り返したりなどの処理をするとその場限りではありませんが、コードを読むときは上から処理をたどりながら読むと見やすいです。
まあ意味わからん(関数やらクラスやら)の多いと思いますが、基本調べながらで書くとだんだん覚えてきます。たぶん。

途中で私の説明書きがありますが、これはプログラムに影響はありません。
コードは単体だと読みにくいのでこういった"コメント"を残すことにより可読性が上がります。

// C,C++言語はスラッシュを二回打つことで、コメント文を残すことができる

<余談>
Arduinoは一応C・C++言語準拠ですが、少しだけ特殊なことがあります。
setup, loopに関してですが、これは必ず入れないとエラーが起きます。そしてsetupの中身は起動して最初の一度だけ実行されます。またloopの中身はsetupの後に永遠に繰り返し実行されるところです。

(またC・C++にはない関数とかもありますが、これは正直ライブラリによるものなので、その都度覚えていただければと。)

サンプルコードについて

今回はLEDをちかちかさせるプログラムを動作させました。元々LEDはM5StickCPlusの中にありましたね。
まず初めにsetupの中についてです。

void setup() {
  pinMode(10, OUTPUT);    // 指定のピンを出力モードにする
}

ここは一度だけ動作する場所ですが、マイコンの10のピンを出力モードにします。こうして事前に言うことで、後で10のピンは好きなように電流を流したり流さなかったりできます。(つまりぴかぴか)

void loop(){
  digitalWrite(10, HIGH);
  delay(1000);
  digitalWrite(10, LOW);
  delay(500);
}

次にloopの中です。ここは永遠ループするところですが、一番上から動作していき、一番下を実行したら上に戻るという形です。

digitalWrite(10, HIGH);

最初digitalWrite()という関数があります。これは指定のピンに電流を流したりするためのものです。カッコの中で条件を言うのですが、10とHIGHになっていますね。なのでそのまま10にHIGHの電流を流せ!ってことです。(イメージです)

delay(1000);

これはdelay関数です。そのままの意味で動作が停止する関数です。
カッコの中の条件は1000となっているので、1秒停止します。
(秒じゃなくてミリ秒ってことは気を付けて!)

後は同じように
digitalWrite(10, LOW) → 10ピンに流すのをやめる
delay(500) → 0.5秒の間、停止する
ってだけです。
意外と簡単、あとはloopの上に戻ってちかちかするんですね。

これであなたもプログラマー

こんなんでもプログラムであり、あなたはもうプログラマーです✨やったぜ
さらにここで既に秒数をいじってみたりとアレンジした人、プログラミング向いてると思います。そうした好奇心や探求心は個人的にめっちゃ大事だと思います。まだされてない方はぜひいじって遊んでください

今回は最初なので少し詳しく説明しました。また内容も私が最初プログラミングをした時に躓いたり、疑問に思ったりを詳しく書いてみました。正直間延びした説明が多くなり、何言ってんだってのが多かったら申し訳ないです。

次回からはもう少し一つ一つを軽く紹介していきたいな~あとペース上げたいな~と思ってます。
適度に頑張ります、読んでいただきありがとうございました!!!

この記事が気に入ったらサポートをしてみませんか?