Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Krok 1: Części i narzędzia
Części: ~ 2 x Serwosilniki - Lokalny sklep elektroniczny ~ 4 x LDR - Lokalny sklep elektroniczny ~ 4 x rezystory 10k - Lokalny sklep elektroniczny ~ Arduino Uno - Sparkfun.com ~ 2 x 50k Rezystor zmienny - Lokalny sklep elektroniczny Narzędzia: ~ Lutownica - Sparkfun.com ~ Drut lutowniczy - Sparkfun.com ~ Kable połączeniowe - Sparkfun.com ~ Protoboard - Lokalny sklep elektroniczny Wszystkie części będą kosztować mniej niż 30$ (nie licząc arduino i wszystkich narzędzi)
Krok 2: Zbuduj obwód
Obwód jest dość prosty, podłącz cztery LDR do pinów analogowych 0, 1, 2 i 3 odpowiednio za pomocą rezystora 10k. Podłącz dwa serwa odpowiednio do pinów cyfrowych 9 i 10. Podłącz dwa rezystory zmienne do pinów analogowych 4 i 5. Weź a Spójrz na zdjęcia, które naprawdę pomagają. Zobacz ostatnie zdjęcie schematu obwodu (może to być najgorszy, jaki kiedykolwiek widziałeś).
Krok 3: Zbuduj zespół czujnika
Aby zbudować zespół czujnika, weź dwa prostokątne kawałki tektury, wytnij długą szczelinę przez środek pierwszego kawałka tektury. Wytnij krótkie nacięcie przez środek drugiego kawałka tektury, a następnie przecinaj oba i ładnie je przymocuj za pomocą niektórych taśma. Powinien wyglądać jak krzyż 3D z 4 sekcjami.. Musimy umieścić nasze cztery LDR w tych czterech sekcjach krzyża. Zobacz zdjęcia, które naprawdę pomagają.
Krok 4: Skonfiguruj
Znajdź podstawę (w moim przypadku butelkę Nescafe) i przyklej do niej swoje pierwsze serwo, a następnie do wirnika pierwszego serwa podłącz drugie serwo. Do wirnika drugiego serwa podłącz zespół czujnika, który wykonaliśmy wcześniej. Aby przetestować robota wyjmij go na słońce, a powinien automatycznie ustawić się w kierunku słońca. Jeśli znajduje się w pomieszczeniu, ustawi się w kierunku najjaśniejszego źródła światła w pomieszczeniu. Spójrz na zdjęcia, które naprawdę pomagają.
Krok 5: Kodeks
Oto kod robota do śledzenia słońca: #include // include Servo library Servo horizontal; // serwo poziome int servoh = 90; // stoisko poziome serwo Servo pionowe; // serwo pionowe int servo = 90; // stojak pionowy serwo // połączenia pinów LDR // name = analogpin; int ldrlt = 0; //LDR u góry po lewej int ldrrt = 1; //LDR górny rigt int ldrld = 2; //LDR dół w lewo int ldrrd = 3; //ldr down rigt void setup() { Serial.begin(9600); // połączenia serwo // name.attacht(pin); przymocuj.poziome(9); zaczep.pionowy(10); } void loop() { int lt = analogRead(ldrlt); // u góry po lewej int rt = analogRead(ldrrt); // prawy górny róg int ld = analogRead(ldrld); // dół w lewo int rd = analogRead(ldrrd); // down rigt int dtime = analogRead(4)/20; // odczytaj potencjometry int tol = analogRead(5)/4; int avt = (lt + rt) / 2; // średnia wartość top int avd = (ld + rd) / 2; // średnia wartość w dół int avl = (lt + ld) / 2; // średnia pozostała wartość int avr = (rt + rd) / 2; // średnia wartość w prawo int dvert = avt - avd; // sprawdź różnicę w górę iw dół int dhoriz = avl - avr;// sprawdź różnicę og left i rigt if (-1*tol > dvert || dvert > tol) // sprawdź, czy różnica jest w tolerancji else zmień kąt pionowy { if (avt > avd) { servov = ++servov; jeśli (serwow > 180) { serw = 180; } } else if (avt < avd) { servov= --servov; jeśli (serwow < 0) { serw = 0; } } vertical.write(servov); } if (-1*tol > dhoriz || dhoriz > tol) // sprawdź, czy różnica jest w tolerancji w przeciwnym razie zmień kąt poziomy { if (avl > avr) { servoh = --servoh; if (serwo < 0) { serwo = 0; } } else if (avl < avr) { serwo = ++serwo; if (serwo > 180) { serwo = 180; } } else if (avl = avr) { // nic } horizontal.write(servoh); } opóźnienie(dczas); }
Krok 6: Gotowe
Mam nadzieję, że ten projekt zainspiruje do dalszych eksperymentów. Płytka Arduino jest niesamowicie wszechstronna, tania i dostępna dla wszystkich hobbystów. To tylko jeden z wielu prostych projektów, które można zbudować za pomocą arduino. Zastanawiaj się dalej! Nie zapomnij śledzić więcej informacji. W przypadku jakichkolwiek pytań skontaktuj się ze mną tutaj mój identyfikator e-mail [email protected]