近藤科学MC-8での7セグ制御
はじめに
某大学で某ロボット競技をやっている者です。
今回、半年前くらいに近藤科学から出た新しいプロポが某ロボット競技で使えないかと思い、試しに7セグ制御をしました。
MC-8とは
近藤科学が販売している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電池
- 安定化電源モジュール
配線図
プログラム
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のみを使いテストをしました。
今回ArduinoMicroを初めて使ったのですが、プログラムがうまく書き込めず、書き込めたとしてもマイコンがうまく動かず沼りました。
普通にArduino_UNOを使うようにマイコンの電源はパソコンのUSBバスのみで試したが動かず、別途安定化電源モジュールで5Vを作り、マイコンにつなげると、解決しました。
原因はおそらく、USBのバス電源だけではArduinoMicroには足りなかったのだと思います。また、超高輝度7セグを使ったため電流が足りなかったとか?よくわかりません。
今後の課題
他チャンネルの制御をテストし、実際にロボットを動かしていきたいです。
やっぱり今年のロボット相撲は中止なんかな……
投稿者の人気記事
-
tokumi_robo
さんが
2020/05/03
に
編集
をしました。
(メッセージ: 初版)
-
tokumi_robo
さんが
2020/05/03
に
編集
をしました。
-
tokumi_robo
さんが
2020/05/03
に
編集
をしました。
Opening
mac
2020/05/04
tokumi_robo
2020/05/06 Opening
mac
2020/05/07 -
tokumi_robo
さんが
2020/05/10
に
編集
をしました。
-
tokumi_robo
さんが
2022/01/18
に
編集
をしました。
ログインしてコメントを投稿する初めまして、macと申します。
先日、このサイトで卓球用スコアボードの製作をアップしました。赤外線リモコンで動作はしているのですがこれを複数台同時使用するにはどうしたらいいかなと考えています。MC-8の説明書を見たのですが同時に何台使えるのかわかりませんでした。ペアリングするので多分複数台同時使用ができるのではと思うのですが。その辺の情報をお持ちでしょうか。
受信器は一つとしかペアリングできないので、複数制御はできないと思われます。MC-8は混信しないように1つ1つの送信機受信機セットでプロトコルが違うそうです。ただし、一つの受信機からPWM線を伸ばせば、A~Hの8ch、8つまで信号を出せるので、プログラム次第ではできるかもしれません
情報有難うございます。ラジコンカーみたいにペアリングを順番にすれば何台も同時に遊べるのかと思い質問しました。有難うございました。