Arduinoライトシーカー:3ステップ

Arduinoライトシーカー:3ステップ

目次:

Anonim

まず第一に、私はスイスから来ましたので、私の英語の間違いを許してください。

これが私のArduino Unoとの最初の小さなプロジェクトの1つです。

それはほんの少しの光の探求者です。サーボが光に向かって回転します。

私はそれが何をするのかをあなたに示すためにビデオを作りました:

用品:

ステップ1:配線

これが私が使った正確な配線です。

唯一の違いは、フォトレジストをサーボに固定したことです(しかし、プログラムではできませんでした)。

また、私はビデオで9Vのバッテリーを使用しました、それはVinとGNDに差し込まれました。

抵抗器はLEDについては200オーム、フォトレジスタについては10キロオームである。

ステップ2:コード

これが私の最初のコードです。私はコメントを英語に翻訳しようとしました。

Arduinoは左右のフォトレジスタの差を計算し、差が30より大きい場合はサーボを回します。

サーボが時計回りに回転しているときは、右側のLEDが点灯します。反時計回りに回すと左のLEDが点灯します

エラーや奇妙なことが見られたら、教えてください:)

#含める

サーボサーボ//サーボを定義

//変数

int photoD = 0; //正しいフォトレジスタにピン0を定義

int photoG = 1。 //左側のフォトレジスタのピン1を定義

int ledD = 3。 //右のLEDにピン3を定義

int ledG = 5。 //左のLEDにピン5を定義

int incr = 5; //角度に追加する値

int valS; //角度

長い一時; //時間

長い気温2。 //時間2

長い気温3。 //タイム3

長めの気温4。 //時間4

//----------------------------------------------------------------------------

//セットアップ

void setup()

{

pinMode(3、OUTPUT); //出力ピン3を定義

pinMode(5、出力); //出力ポイント5を定義

serv.attach(8); //ピン8でサーボ

Serial.begin(9600); //シリアル通信を開始

temps = millis();

serv.write(75); //サーボの初期位置

}

//----------------------------------------------------------------------------

//ループ

void loop()

{

int valG; // photoGの値

int valD; // photoDの値

valD = analogRead(photoD);

valG = analogRead(photoG);

//毎秒モニタに値を表示します

if(temps + 1000 <millis()){

Serial.print( "正しいフォトレジスタ値:");

Serial.println(valD);

Serial.print( "左側のフォトレジスタ値:");

Serial.println(valG);

Serial.print( "Angle:");

Serial.println(valS);

Serial.println( "----------------------");

temps = millis();

}

if(temps3 + 1000 <millis()&&(valD - valG> 20)&&(valS <180)){

Serial.println( "反時計回りに回転");

temps3 = millis();

}

if(temps4 + 1000 <millis()&&(valG - valD> 20)&&(valS> 0)){

Serial.println( "右回り");

temps4 = millis();

}

if(valD - valG> 30){

valS = valS + incr;

digitalWrite(ledG、HIGH);

}

if(valG - valD> 30){

valS = valS - incr;

digitalWrite(led、HIGH);

}

if(valS> 0 || valS <180){

serv.write(valS); //サーボを回す

}

if(valS <= 0){

valS = 0。

}

if(valS> = 180){

valS = 180。

}

if(temps 2 + 500 <millis()&& valD - valG <30 && valG - valD <30){

digitalWrite(led、LOW);

digitalWrite(ledG、LOW);

temps2 = millis();

}

遅延(30)。

}

ステップ3:終わり

そして、それがすべてです!

あなたがこのプロジェクトを楽しんだことを願っています!

質問がある場合は、遠慮なく質問してください。