2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
V tejto lekcii použijeme servomotor, fotorezistor a sťahovací odpor na zostavenie automaticky sledovaného systému zdroja svetla.
Krok 1: Komponenty:
- Doska Arduino Uno * 1
- USB kábel * 1
- Servomotor * 1
- fotorezistor * 1
- Rezistor (10k) * 1
- Breadboard * 1
- prepojovacie vodiče
Krok 2: Princíp
Servomotor a fotorezistor skenujú a vyhľadávajú svetelný zdroj na 180 stupňoch a zaznamenávajú polohu svetelného zdroja. Po dokončení skenovania sa servomotor a fotorezistor zastavia v smere svetelného zdroja.
Krok 3: Postupy:
Krok 1:
Vybudujte obvod.
Krok 2:
Stiahnite si kód z
Krok 3:
Nahrajte skicu na dosku Arduino Uno
Kliknutím na ikonu Odovzdať odovzdáte kód na ovládací panel.
Ak sa v spodnej časti okna zobrazí „Dokončené nahrávanie“, znamená to, že skica bola úspešne nahraná.
Ak teraz použijete na svietenie fotorezistora baterku, uvidíte, ako sa servomotor a fotoodpor otáčajú a nakoniec sa zastavia v smere svetelného zdroja.
Krok 4: Schematický diagram
Krok 5: Kód
/********************************************************************
* názov:
Automaticky sleduje svetelný zdroj
* funkcia
: ak na svietenie fotoodporu použijete baterku, * uvidíš
servomotor a fotorezistor sa otáčajú, * a nakoniec
zastavte v smere svetelného zdroja.
***********************************************************************
/E -mail: [email protected]
// Webová stránka: www.primerobotics.in
#zahrnúť
const int fotobunkaPin = A0;
/************************************************/
Servo myservo; // vytvorenie objektu serva na ovládanie serva
int outputValue = 0;
vnútorný uhol = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180};
int maxVal = 0;
int maxPos = 0;
/*************************************************/
neplatné nastavenie ()
{
Serial.begin (9600);
myservo.attach (9); // pripojenie serva na pin 9 k objektu serva
}
/*************************************************/
prázdna slučka ()
{
pre (int i = 0;
i <19; i ++)
{
myservo.write (uhol ); // napíšte uhol na servo
outputValue
= analogRead (photocellPin); // odčítajte hodnotu A0
Serial.println (outputValue); // vytlačte ho
if (outputValue> maxVal) // ak je aktuálna hodnota A0 väčšia ako predchádzajúca
{
maxVal = outputValue; // zapíšte si hodnotu
maxPos
= i; //
}
oneskorenie (200);
}
myservo.write (uhol [maxPos]); // napíšte uhol k servu, ktorého hodnota A0 má najväčšiu hodnotu
pričom (1);
}