![Arduino Light Seeker: 3 kroki Arduino Light Seeker: 3 kroki](https://img.gwsigeps.com/img/circuits/arduino-light-seeker-3.jpg)
Spisu treści:
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ć.