Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
I den här lektionen kommer vi att använda en servomotor, en fotoresistor och ett neddragningsmotstånd för att montera ett automatiskt spårande ljuskällsystem.
Steg 1: Komponenter:
- Arduino Uno board * 1
- USB -kabel * 1
- Servomotor * 1
- fotoresistor * 1
- Motstånd (10k) * 1
- Brödbräda * 1
- Tröjor
Steg 2: Princip
Servomotorn och fotoresistorn skannar och letar efter ljuskälla i 180 grader och registrerar platsen för ljuskällan. Efter avslutad skanning stannar servomotorn och fotoresistorn i ljuskällans riktning.
Steg 3: Förfaranden:
Steg 1:
Bygg kretsen.
Steg 2:
Ladda ner koden från
Steg 3:
Ladda upp skissen till Arduino Uno -kortet
Klicka på ikonen Ladda upp för att ladda upp koden till kontrollkortet.
Om "Klar överföring" visas längst ned i fönstret betyder det att skissen har laddats upp.
Om du använder en ficklampa för att lysa upp fotoresistorn ser du servomotorn och fotoresistorn rotera och slutligen stannar i ljuskällans riktning.
Steg 4: Schematisk diagram
Steg 5: Kod
/********************************************************************
* namn:
Spårar ljuskälla automatiskt
* funktion
: om du använder en ficklampa för att lysa fotoresistorn, * du får se
servomotorn och fotoresistorn roterar, * och slutligen
stanna i ljuskällans riktning.
***********************************************************************
/E -post: [email protected]
// Webbplats: www.primerobotics.in
#omfatta
const int photocellPin = A0;
/************************************************/
Servo myservo; // skapa servoobjekt för att styra ett servo
int outputValue = 0;
int vinkel = {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;
/*************************************************/
void setup ()
{
Serial.begin (9600);
myservo.attach (9); // fäster servon på stift 9 till servoobjektet
}
/*************************************************/
void loop ()
{
för (int i = 0;
jag <19; jag ++)
{
myservo.write (vinkel ); // skriv vinkeln till servo
outputValue
= analogRead (photocellPin); // läs värdet på A0
Serial.println (outputValue); // skriv ut den
if (outputValue> maxVal) // om det aktuella värdet för A0 är större än föregående
{
maxVal = outputValue; // skriv ner värdet
maxPos
= i; //
}
fördröjning (200);
}
myservo.write (vinkel [maxPos]); // skriv vinkeln till servo som A0 har störst värde
medan (1);
}