目次:
こんにちは!
私はさまざまな方法で使用できるラインフォロワロボットを作り、いくつかのステップで自分のプロジェクトをまとめました。
まず、必要なのは以下の部分だけです。
パーツリスト
- ロボットフレーム
-二輪車
- 2台のDCモーター
- ミニブレッドボード
- 二つのLED
- 2つのフォトレジスター
- 2個の56k抵抗
- 330個の抵抗
- 一部のワイヤー
- ダイオード(まだモーターコントローラーに含まれていない場合)
- モーターコントローラー(私はL298を使用)
- ビッグブレッドボード
- 3つの1.5Vバッテリー
- アルドゥイーノUNO
用品:
ステップ1:ロボットフレーム
パーツリスト:
- ロボットフレーム
-二輪車
- 2台のDCモーター
の仕方:
私は2つのDCモーターによって命令される2つの車輪を持つ古いロボットフレームを使いました、しかしあなたは同様の解決策を使うこともできます。
ステップ2:センサーIr +フォトレジスタ
パーツリスト:
- ミニブレッドボード
- 二つのLED
- 2つのフォトレジスター
- 2個の56k抵抗
- 330個の抵抗
- 一部のワイヤー
の仕方:
テープの幅に基づいて、2組のLEDとフォトレジスタの間の距離を計算します。
写真のようにフォトレジスタとLEDを配置します。
330オームの2つの抵抗器に導線を接続し、フォト抵抗器との干渉を防ぐためにその周囲に透明でないテープを貼ります。
ミニブレッドボードをフレームの下部に置きます。
ステップ3:モータコントローラ
パーツリスト:
- 一部のワイヤー
- ダイオード(まだモーターコントローラーに含まれていない場合)
- モーターコントローラー
- ビッグブレッドボード
- 3つの1.5V電池
センサー組み立て:
ブリッジAの入力ピンをArduinoのピン11と12に差し込みます。
ブリッジBの入力ピンをArduinoのピン6と5に差し込みます。
必要に応じて、いくつかのダイオードで各ブリッジの出力ピンをモーターに接続します。
ロジック電源電圧(Vss)をArduinoの5Vに接続し、モーターコントローラーのグランドをarduinoのGNDに接続します。
電源電圧(Vs)を3本の単三電池に接続します。
ステップ4:Arduinoをプログラミングする
パーツリスト:
- アルドゥイーノUNO
- 一部のワイヤー
このコードを使用してください:
int PinSens_A = A5。
int PinSens_B = A4。
int ValSens_A = 0。
int ValSens_B = 0。
int Ris;
int PinMotorA_1 = 10。
int PinMotorA_2 = 11。
int PinMotorB_1 = 5。
int PinMotorB_2 = 6。
int SpeedMotor_A;
int SpeedMotor_B;
整数差= 0。
int RoL(int A、int B)
{
if(A> B)
1を返します。
if(B> A)
2を返します。
if(A = B)
0を返します。
}
フォローする(int val、int speedMax)
{
if(val == 2)
{
SpeedMotor_A = speedMax;
SpeedMotor_B = 0。
}
if(val == 1)
{
SpeedMotor_A = 0。
SpeedMotor_B = speedMax;
}
}
int Move(int dir)
{
if(dir == 0)
{
analogWrite(PinMotorA_1、SpeedMotor_A);
analogWrite(PinMotorB_1、SpeedMotor_B);
}
if(dir == 1)
{
analogWrite(PinMotorA_2、SpeedMotor_A);
analogWrite(PinMotorB_2、SpeedMotor_B);
}
}
int calcDiff()
{
ValSens_A = analogRead(PinSens_A);
ValSens_B = analogRead(PinSens_B);
if(ValSens_A> ValSens_B)
{
int diff = ValSens_A - ValSens_B;
diffを返します。
}
if(ValSens_A <ValSens_B)
{
int diff = ValSens_B - ValSens_A;
diffを返します。
}
}
void Debug()
{
Serial.print(Ris);
Serial.print( "");
Serial.print(ValSens_A);
Serial.print( "");
Serial.print(ValSens_B);
Serial.println( "");
}
void setup()
{
Serial.begin(9600);
pinMode(PinMotorA_1、OUTPUT);
pinMode(PinMotorA_2、OUTPUT);
pinMode(PinMotorB_1、OUTPUT);
pinMode(PinMotorB_2、OUTPUT);
pinMode(PinSens_A、INPUT);
pinMode(PinSens_B、INPUT);
}
void loop()
{
if(差== 0)
{
差= 1。
}
ValSens_A = analogRead(PinSens_A);
ValSens_B = analogRead(PinSens_B)+150。 //センサーのバランスをとるために可変数を使う
Ris = RoL(ValSens_A、ValSens_B);
フォローする(Ris、100);
移動(0);
デバッグ();
};