[Arduino]フォトレジスタ付きラインフォロワ:5ステップ

[Arduino]フォトレジスタ付きラインフォロワ:5ステップ

目次:

Anonim

イントロ:

こんにちは!

私はさまざまな方法で使用できるラインフォロワロボットを作り、いくつかのステップで自分のプロジェクトをまとめました。

まず、必要なのは以下の部分だけです。

パーツリスト

- ロボットフレーム

-二輪車

- 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);

デバッグ();

};

ステップ5:テスト

最後に、最高のパフォーマンスが得られるように構成をテストしてください。