Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
În această lecție, vom folosi un servomotor, un fotorezistor și un rezistor pull-down pentru a asambla un sistem de urmărire automată a sursei de lumină.
Pasul 1: Componente:
- placa Arduino Uno * 1
- Cablu USB * 1
- Servomotor * 1
- fotorezistor * 1
- Rezistor (10k) * 1
- Panou * 1
- fire de jumper
Pasul 2: Principiu
Servomotorul și fotorezistorul scanează și caută sursa de lumină la 180 de grade și înregistrează locația sursei de lumină. După terminarea scanării, servomotorul și fotorezistorul se opresc în direcția sursei de lumină.
Pasul 3: Proceduri:
Pasul 1:
Construiește circuitul.
Pasul 2:
Descărcați codul de la
Pasul 3:
Încărcați schița pe placa Arduino Uno
Faceți clic pe pictograma Încărcare pentru a încărca codul pe placa de control.
Dacă „Încărcare finalizată” apare în partea de jos a ferestrei, înseamnă că schița a fost încărcată cu succes.
Acum, dacă utilizați o lanternă pentru a străluci fotorezistorul, veți vedea servomotorul și fotorezistorul rotindu-se și, în cele din urmă, vă veți opri în direcția sursei de lumină.
Pasul 4: Diagrama schematică
Pasul 5: Cod
/********************************************************************
* Nume:
Urmărirea automată a sursei de lumină
* funcție
: dacă folosiți o lanternă pentru a străluci fotorezistorul, * vei vedea
servomotorul și fotorezistorul se rotesc, * și, în sfârșit
opriți-vă în direcția sursei de lumină.
***********************************************************************
/ E-mail: [email protected]
// Website: www.primerobotics.in
#include
const int fotocelulaPin = A0;
/************************************************/
Servo myservo; // creați un obiect servo pentru a controla un servo
int outputValue = 0;
int angle = {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;
/*************************************************/
configurare nulă ()
{
Serial.begin (9600);
myservo.attach (9); // atașează servo pe pinul 9 la obiectul servo
}
/*************************************************/
bucla nulă ()
{
pentru (int i = 0;
i <19; i ++)
{
myservo.write (angle ); // scrie unghiul la servo
outputValue
= analogRead (photocellPin); // citiți valoarea lui A0
Serial.println (outputValue); // tipăriți-l
if (outputValue> maxVal) // dacă valoarea curentă a lui A0 este mai mare decât anterior
{
maxVal = outputValue; // notează valoarea
maxPos
= i; //
}
întârziere (200);
}
myservo.write (angle [maxPos]); // scrie unghiul la servo care A0 are cea mai mare valoare
în timp ce (1);
}