tokumi_robo が 2020年05月03日22時44分28秒 に編集
初版
タイトルの変更
近藤科学MC8での7セグ制御
タグの変更
Leafonyプレゼントキャンペーン
7セグメント
Arduino
MC8
7segment
本文の変更
**目次** - [1 . はじめに](url) [2. MC8とは](url) [3. 使用したもの](url) [4. 配線図](url) [5. プログラム](url) [6. 動作確認](url) [7. 今後の課題](url) **はじめに** - 某大学で某ロボット競技をやっている者です。 今回、半年前くらいに近藤科学から出た新しいプロポが某ロボット競技で使えないかと思い、試しに7セグ制御をしました。 **MC8とは** - ![キャプションを入力できます](https://camo.elchika.com/b98506442bbf384b4bcb3a3c5453a1afec3fa617/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33343561666135612d613764612d346566322d626335372d3430363062346266363634352f39306264626633392d646633372d343032322d383232382d613232643663663938623362/) 近藤科学が販売している2.4GHz MX-F 送受信機のことで、MC-8は、PWM信号で制御する機器を8CH制御でき、RCカーの操縦や、ロボットなどPWM信号で動作するサーボやスピードコントローラを搭載したマシンの無線コントロールができます。 スペックは以下のようになっています。 > <スペック> 【送信機 MC-8】 ●2.4GHz MX-F方式 マルチコントローラー ●サイズ:150.0×84.5×61.0mm ●重量:145.5g(電池含まず) ●電源:単4乾電池、単4型充電式電池×4本(別売) ●消費電流:50mA以下 連続17時間以上使用可能(条件により異なります) ●チャンネル数:8 スティック操作4系統 + スイッチ操作4系統 ●送信周波数帯:2.4GHz ●電波到達距離:片翼50m ※環境や受信アンテナ状態により増減します ●対応受信機:MR-8 ※KRR-1、KRR-5FHは使用できません > 【受信機 MR-8】 ●2.4GHz MX-F方式 マルチレシーバー ●サイズ:27.0×28.0×15.0mm ●重量:7.0g ●電源:3.0~6.6v ●使用可能電源:乾電池、または充電式電池 (Ni-MH 3~5s、Li-Fe 1~2s、Li-Po 1s) ※リチウム電池使用の場合は電圧低下にご注意ください。 ※異なる種類の電池を混在して使用しないでください。 ●消費電流:40mA以下(受信動作時) ●チャンネル数:8 ●受信周波数帯:2.4GHz ●対応送信機:MC-8 ※KRC-5FHなどMC-8以外の送信機とは通信できません。 チャンネル数が8あるので様々な動作が手元でできると思い、今回使うことにしました。しかも、¥9,800なので非常に安い! ** 使用したもの ** - - ArduinoMicro - ジャンパー線 - 330kΩ抵抗 - MC8 - 超高輝度7セグメントディスプレイ青 - 6P電池 - 安定化電源モジュール **配線図** - ![キャプションを入力できます](https://camo.elchika.com/9974ca184687128bc5465f1fd3b6ea636a6b211a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33343561666135612d613764612d346566322d626335372d3430363062346266363634352f35343938613234372d333936322d346635352d616337312d306662333233623336363739/) **プログラム** - ```arduino:CH-Hのテスト //一回押されるとstateが加算され、10まで増えたら0になる。 //ボタンが押されるたびに切り替わる。 #define CH_H_PORT 9 //hボタン入力 #define SWING 25//振り幅 int iVarCheck = 1470; int state = 0; // LEDの状態(0ならオフ、1ならオン) void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(CH_H_PORT, INPUT_PULLUP); } //LEDレイアウトを定義 boolean Num_Array[10][7] = { {1, 1, 1, 1, 1, 1, 0}, //0 {0, 1, 1, 0, 0, 0, 0}, //1 {1, 1, 0, 1, 1, 0, 1}, //2 {1, 1, 1, 1, 0, 0, 1}, //3 {0, 1, 1, 0, 0, 1, 1}, //4 {1, 0, 1, 1, 0, 1, 1}, //5 {1, 0, 1, 1, 1, 1, 1}, //6 {1, 1, 1, 0, 0, 1, 0}, //7 {1, 1, 1, 1, 1, 1, 1}, //8 {1, 1, 1, 1, 0, 1, 1} //9 }; //LED表示関数を定義 void NumPrint(int Number) { for (int w = 0; w <= 7; w++) { digitalWrite(w + 2, -Num_Array[Number][w]); if (w == 0) { } } } //全てのLEDを非表示にする void off7SegLED() { //for文で2番ピンから8番ピンまでをLOWにする for (int i = 2; i < 9 ; i++) { digitalWrite(i, LOW); } } void loop() { int chh; int f = SWING; chh = pulseIn(CH_H_PORT, HIGH); NumPrint(state); //Hボタン変化チェック if ((chh + f < iVarCheck) || (chh > iVarCheck + f)) { state = (state + 1) % 10; NumPrint(state); } iVarCheck = chh; delay(200); } ``` **動作確認** - 今回はMC-8のCH-Hのみを使いテストをしました。 ![キャプションを入力できます](https://camo.elchika.com/7447bc1efdb8399160f2c5d07b6310c23c3f5f69/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33343561666135612d613764612d346566322d626335372d3430363062346266363634352f35346364633237662d613638632d346165302d386362662d623361333963613532653537/) ![キャプションを入力できます](https://camo.elchika.com/fc814e9c3cec362d97f2809eb2890a4791251b89/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33343561666135612d613764612d346566322d626335372d3430363062346266363634352f30643335366339302d613939362d343861302d386631372d353635383332323538383237/) ++今回ArduinoMicroを初めて使ったのですが、プログラムがうまく書き込めず、書き込めたとしてもマイコンがうまく動かず沼りました。 普通にArduino_UNOを使うようにマイコンの電源はパソコンのUSBバスのみで試したが動かず、別途安定化電源モジュールで5Vを作り、マイコンにつなげると、解決しました。 原因はおそらく、USBのバス電源だけではArduinoMicroには足りなかったのだと思います。また、超高輝度7セグを使ったため電流が足りなかったとか?よくわかりません。++ **今後の課題** - 他チャンネルの制御をテストし、実際にロボットを動かしていきたいです。 ++やっぱり今年のロボット相撲は中止なんかな……++