Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
In dieser Lektion verwenden wir einen Servomotor, einen Fotowiderstand und einen Pull-Down-Widerstand, um ein automatisch nachgeführtes Lichtquellensystem zusammenzustellen.
Schritt 1: Komponenten:
- Arduino Uno-Board * 1
- USB-Kabel * 1
- Servomotor * 1
- Fotowiderstand * 1
- Widerstand (10k) * 1
- Steckbrett * 1
- Überbrückungsdrähte
Schritt 2: Prinzip
Der Servomotor und der Fotowiderstand scannen und suchen nach einer Lichtquelle in 180 Grad und zeichnen die Position der Lichtquelle auf. Nach Beendigung des Scannens stoppen der Servomotor und der Fotowiderstand in Richtung der Lichtquelle.
Schritt 3: Verfahren:
Schritt 1:
Baue die Schaltung auf.
Schritt 2:
Laden Sie den Code von https://github.com/primerobotics/Arduino. herunter
Schritt 3:
Laden Sie die Skizze auf das Arduino Uno-Board hoch
Klicken Sie auf das Symbol Hochladen, um den Code auf die Steuerplatine hochzuladen.
Wenn unten im Fenster "Hochladen fertig" erscheint, bedeutet dies, dass die Skizze erfolgreich hochgeladen wurde.
Wenn Sie nun eine Taschenlampe verwenden, um den Fotowiderstand zu beleuchten, sehen Sie, wie sich der Servomotor und der Fotowiderstand drehen und schließlich in Richtung der Lichtquelle anhalten.
Schritt 4: Schematische Darstellung
Schritt 5: Code
/********************************************************************
* Name:
Lichtquelle automatisch verfolgen
* Funktion
: Wenn Sie eine Taschenlampe verwenden, um den Fotowiderstand zu beleuchten, * du wirst sehen
der Servomotor und der Fotowiderstand drehen, * und schlussendlich
Halten Sie in Richtung der Lichtquelle an.
***********************************************************************
/E-Mail: [email protected]
//Website: www.primerobotics.in
#enthalten
const int photocellPin = A0;
/************************************************/
Servo myservo; // Servo-Objekt erstellen, um einen Servo zu steuern
int Ausgabewert = 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;
/*************************************************/
Void-Setup ()
{
Serial.begin (9600);
myservo.attach(9); // befestigt das Servo an Pin 9 an das Servoobjekt
}
/*************************************************/
Leere Schleife ()
{
for(int i = 0;
ich < 19; ich ++)
{
myservo.write (angle); // Schreibe den Winkel auf Servo
Ausgabewert
= analogRead (PhotocellPin); // den Wert von A0 lesen
Serial.println (outputValue); // es drucken
if(outputValue > maxVal)//wenn der aktuelle Wert von A0 größer als der vorherige ist
{
maxVal = outputValue; // den Wert aufschreiben
maxPos
= ich; //
}
Verzögerung (200);
}
myservo.write (angle[maxPos]); // Schreibe den Winkel zum Servo, der A0 den größten Wert hat
während(1);
}