Arduino Light Seeker: 3 kroki

Arduino Light Seeker: 3 kroki

Spisu treści:

Anonim

Przede wszystkim jestem ze Szwajcarii, więc proszę wybaczyć moje angielskie błędy.

Oto jeden z moich pierwszych małych projektów, które zrobiłem z moim Arduino Uno.

To tylko mały poszukiwacz światła. Serwo obraca się w kierunku światła.

Zrobiłem film, aby pokazać, co robi:

Kieszonkowe dzieci:

Krok 1: Okablowanie

Oto dokładne połączenie, jakiego użyłem.

Jedyną różnicą jest to, że naprawiłem fotorezystory na serwo (ale nie mogłem tego zrobić za pomocą programu)

Użyłem też baterii 9V w wideo, była podłączona do Vin i GND.

Rezystory mają 200 Ohm dla diod LED i 10 KOhm dla fotorezystorów.

Krok 2: Kodeks

To jest mój pierwszy kod. Próbowałem tłumaczyć komentarze po angielsku.

Arduino oblicza różnicę między lewym i prawym fotorezystorem i obraca serwo, jeśli różnica jest większa niż 30.

Gdy serwo obraca się zgodnie z ruchem wskazówek zegara, świeci się prawa dioda LED. Gdy obróci się w lewo, zaświeci się lewa dioda LED

Jeśli widzisz jakieś błędy lub dziwne rzeczy, powiedz mi:)

#zawierać

Serwo serwo; // zdefiniuj serwo

// Zmienne

int photoD = 0; // zdefiniuj pin 0 dla prawego fotorezystora

int photoG = 1; // zdefiniuj pin 1 dla lewego fotorezystora

int ledD = 3; // zdefiniuj pin 3 dla prawej LED

int ledG = 5; // zdefiniuj pin 5 dla lewej LED

int incr = 5; // wartość dodana do kąta

int valS; //kąt

długie temps; //Czas

długi temps2; // Czas 2

długi temps3; // Czas 3

długi temps4; // Czas 4

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

//Ustawiać

void setup ()

{

pinMode (3, OUTPUT); // zdefiniuj pin wyjściowy 3

pinMode (5, OUTPUT); // zdefiniuj pint wyjściowy 5

servo.attach (8); // serwo na pinie 8

Serial.begin (9600); // Uruchom komunikację szeregową

temps = millis ();

servo.write (75); // Początkowa pozycja serwomechanizmu

}

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

//Pętla

void loop ()

{

int valG; // wartość photoG

int valD; // wartość fotoD

valD = analogRead (photoD);

valG = analogRead (photoG);

// Wyświetla wartości na monitorze co sekundę

if (temps + 1000 <millis ()) {

Serial.print („prawa wartość fotorezystora:”);

Serial.println (valD);

Serial.print („lewa wartość fotorezystora:”);

Serial.println (valG);

Serial.print („Kąt:”);

Serial.println (valS);

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

temps = millis ();

}

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

Serial.println („Obracanie w lewo”);

temps3 = millis ();

}

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

Serial.println („Obracanie zgodnie z ruchem wskazówek zegara”);

temps4 = millis ();

}

if (valD - valG> 30) {

valS = valS + incr;

digitalWrite (ledG, HIGH);

}

if (valG - valD> 30) {

valS = valS - incr;

digitalWrite (ledD, HIGH);

}

jeśli (valS> 0 || valS <180) {

servo.write (valS); // obraca serwo

}

jeśli (valS <= 0) {

valS = 0;

}

jeśli (valS> = 180) {

valS = 180;

}

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

digitalWrite (ledD, LOW);

digitalWrite (ledG, LOW);

temps2 = millis ();

}

opóźnienie (30);

}

Krok 3: Koniec

I to wszystko !

Mam nadzieję, że podobał ci się ten projekt!

Jeśli masz jakieś pytania, nie wahaj się zapytać.