Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
In deze les zullen we een servomotor, een fotoresistor en een pull-down weerstand gebruiken om een automatisch volgend lichtbronsysteem samen te stellen.
Stap 1: Componenten:
- Arduino Uno-bord * 1
- USB-kabel * 1
- Servomotor * 1
- fotoweerstand * 1
- Weerstand (10k) * 1
- Broodplank * 1
- Jumper draden
Stap 2: Principe
De servomotor en de fotoweerstand scannen en zoeken naar een lichtbron in 180 graden en registreren de locatie van de lichtbron. Na het scannen stoppen de servomotor en de fotoresistor in de richting van de lichtbron.
Stap 3: Procedures:
Stap 1:
Bouw de schakeling.
Stap 2:
Download de code van
Stap 3:
Upload de schets naar het Arduino Uno-bord
Klik op het pictogram Uploaden om de code naar de besturingskaart te uploaden.
Als "Klaar met uploaden" onderaan het venster verschijnt, betekent dit dat de schets succesvol is geüpload.
Als u nu een zaklamp gebruikt om op de fotoweerstand te schijnen, ziet u de servomotor en de fotoweerstand draaien en uiteindelijk stoppen in de richting van de lichtbron.
Stap 4: Schematisch diagram
Stap 5: Coderen
/********************************************************************
* naam:
Automatisch volgen van lichtbron
* functie
: als je een zaklamp gebruikt om op de fotoresistor te schijnen, * je zult zien
de servomotor en de fotoweerstand draaien, * en tenslotte
stop bij de richting van de lichtbron.
***********************************************************************
/E-mail: [email protected]
// Website: www.primerobotics.in
#erbij betrekken
const int fotocelPin = A0;
/************************************************/
Servo myservo;// maak een servo-object om een servo te besturen
int outputWaarde = 0;
int-hoek = {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;
/*************************************************/
ongeldige setup()
{
Serieel.begin(9600);
myservo.attach (9);//bevestigt de servo op pin 9 aan servo-object
}
/*************************************************/
lege lus()
{
voor(int i = 0;
ik < 19; ik ++)
{
myservo.write(angle);//schrijf de hoek naar servo
outputWaarde
= analogRead (photocellPin);//lees de waarde van A0
Serial.println(outputValue);//print it
if(outputValue > maxVal)//als de huidige waarde van A0 groter is dan de vorige
{
maxVal = outputValue;// noteer de waarde
maxPos
= ik;//
}
vertraging (200);
}
myservo.write(angle[maxPos]);//schrijf de hoek naar servo die A0 de grootste waarde heeft
terwijl(1);
}