IRリモートコントロールカー
コンポーネントと消耗品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
|
このプロジェクトについて
Instructablesで元のデザインを見つけ、そのバージョンを作成しました。オリジナルはトラックビークルで、これは4WDです。元のデザインへの調整は、IRのセットアップで行われます。元の設計では、モーターが動作しているときにIRレシーバーに干渉するフィードバックが発生していました。モーターは、アース線が出会う場所でジェネレーターとして機能しました。 IRのピンと割り当てを変更しました
SAINSMARTローバーキットを使用する場合に提供される手順を使用して、カーベースを組み立てます。ここで見つかりました
<図>
IR受信者:
intレシーバーピン=4; //コントローラーの出力ピン4をIRレシーバーYに接続します
int vcc =5; //コントローラーの出力ピン5をIRレシーバーVに接続します
int gnd =6; //コントローラーの出力ピン4をIRレシーバーGに接続します
<図>
L298Nモータードライブモジュール:
//モーターA
int enA =8;
int in1 =12;
int in2 =11;
//モーターB
int enB =7;
int in3 =10;
int in4 =9;
L298NモータードライブモジュールGNDからコントローラーGNDへ
<図>
L298Nモータードライブモジュールからモーターへ:
//モーターセット右側
接続 モーターの「+」(赤)側からOut 4
モーターの「-」(黒)側をOut3に接続します
//モーターセットB左側
接続 モーターの「+」(赤)側からOut 2
モーターの「-」(黒)側をOut1に接続します
バッテリーをL298Nドライブモジュール「+」(赤)をVCCに接続し、「-」(黒)をGNDに接続します
完全な図
<図><図>
コード
- IRリモートコントロールカー
IRリモートコントロールカー C#
#includecharコマンド; intreceiver_pin =4; // IRレシーバーの出力ピンをピン4に接続しますintvcc =5; // IRセンサーのVCCintgnd =6; // IRセンサーのGNDステータス=13; IRrecv irrecv(receiver_pin); decode_results結果; //モーターコントローラーピンをArduinoデジタルピンに接続//モーターAintenA =8; int in1 =12; int in2 =11; //モーターBint enB =7; int in3 =10; int in4 =9; void setup(){Serial.begin(9600); irrecv.enableIRIn(); pinMode(statusled、OUTPUT); digitalWrite(statusled、LOW); //設定出力pinMode(enA、OUTPUT);へのすべてのモーター制御ピン。 pinMode(enB、OUTPUT); pinMode(in1、OUTPUT); pinMode(in2、OUTPUT); pinMode(in3、OUTPUT); pinMode(in4、OUTPUT); pinMode(vcc、OUTPUT); pinMode(gnd、OUTPUT); // vccピンを初期化していますhighdigitalWrite(vcc、HIGH);} void loop(){if(irrecv.decode(&results)){digitalWrite(statusled、LOW); irrecv.resume(); if(results.value ==0xFF18E7 ){//タイプボタン2前進ロボット制御//この関数は、モーターを固定速度で両方向に実行しますSerial.println( "Button 2"); //モーターAをオンにしますdigitalWrite(in1、HIGH); digitalWrite(in2、LOW); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enA、100); //モーターBをオンにしますdigitalWrite(in3、HIGH); digitalWrite(in4、LOW); //速度を可能な範囲外の200に設定0〜255 analogWrite(enB、100);} else if(results.value ==0xFF10EF){//ボタン4を入力左に回すロボット制御//この関数はモーターAを実行します順方向モーターB停止Serial.println( "ボタン4"); //モーターAをオンにしますdigitalWrite(in1、HIGH); digitalWrite(in2、LOW); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enA、100); //モーターBをオンにしますdigitalWrite(in3、LOW); digitalWrite(in4、LOW); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enB、100); } else if(results.value ==0xFF30CF){//タイプボタン1左回転ロボット制御//この関数は、モーターAを順方向に実行しますモーターBを逆方向に実行しますSerial.println( "Button Turn Right"); //モーターAをオンにしますdigitalWrite(in1、HIGH); digitalWrite(in2、LOW); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enA、100); //モーターBをオンにしますdigitalWrite(in3、LOW); digitalWrite(in4、HIGH); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enB、100); } else if(results.value ==0xFF5AA5){//ボタン6を右折ロボット制御を入力//この関数はモーターAを停止し、モーターBを順方向に実行Serial.println( "Button Turn Left"); //モーターAをオンにしますdigitalWrite(in1、LOW); digitalWrite(in2、LOW); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enA、100); //モーターBをオンにしますdigitalWrite(in3、HIGH); digitalWrite(in4、LOW); //速度を可能な範囲外の200に設定0〜255 analogWrite(enB、100);} else if(results.value ==0xFF7A85){//タイプボタン3右回転ロボット制御//この関数はモーターAを実行します逆方向モーターBを順方向に//モーターAをオンにしますdigitalWrite(in1、LOW); digitalWrite(in2、HIGH); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enA、100); //モーターBをオンにしますdigitalWrite(in3、HIGH); digitalWrite(in4、LOW); //速度を可能な範囲外の200に設定0〜255 analogWrite(enB、100);} else if(results.value ==0xFF4AB5){//ボタン8の後方ロボット制御を入力//この関数はモーターAとモーターを実行します逆方向のB //モーターAをオンにしますdigitalWrite(in1、LOW); digitalWrite(in2、HIGH); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enA、100); //モーターBをオンにしますdigitalWrite(in3、LOW); digitalWrite(in4、HIGH); //速度を可能な範囲外の200に設定0〜255 analogWrite(enB、100);} else if(results.value ==0xFF38C7){//タイプボタン5ロボット制御の停止//この関数はモーターAとモーターAの両方を停止しますモーターB //モーターAをオンにしますdigitalWrite(in1、LOW); digitalWrite(in2、LOW); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enA、100); //モーターBをオンにしますdigitalWrite(in3、LOW); digitalWrite(in4、LOW); //速度を可能な範囲外の200に設定します0〜255 analogWrite(enB、100); }}}
回路図
製造プロセス