Indholdsfortegnelse:
Her er et af mit første lille projekt, jeg gjorde med min Arduino Uno.
Det er bare en lille lys søgende. Servo vender mod lyset.
Jeg lavede en video for at vise dig, hvad det gør:
forsyninger:
Trin 1: Ledningerne
Her er den nøjagtige ledninger, jeg brugte.
Den eneste forskel er, at jeg fik fast fotoresistors på servo (men jeg kunne ikke gøre det med programmet)
Jeg brugte også et 9V batteri i videoen, det blev plugget i Vin og GND.
Modstandene er 200 ohm for LED'erne og 10 KOhm for fotoresistorer.
Trin 2: Koden
Dette er min første kode. Jeg forsøgte at oversætte kommentarerne på engelsk.
Arduino beregner forskellen mellem venstre og højre fotoresistor og vender servo, hvis forskellen er større end 30.
Når servo drejes med uret, lyser den højre LED. Når den vender mod uret lyser den venstre LED
Hvis du ser fejl eller rare ting, så fortæl mig:)
#omfatte
Servo servo; // definere servo
// Variabler
int photoD = 0; // definer pin 0 for højre fotoresistor
int photoG = 1; // definer pin 1 for venstre fotoresistor
int ledD = 3; // definer pin 3 for højre LED
int ledG = 5; // definer pin 5 for venstre LED
int incr = 5; // værdi for at tilføje til vinklen
int valS; //vinkel
lange temps; //Tid
lange temps2; // Tid 2
lange temps3; // Tid 3
lange temps4; // Tid 4
//----------------------------------------------------------------------------
//Opsætning
void setup ()
{
pinMode (3, OUTPUT); // Definer output pin 3
pinMode (5, OUTPUT); // definere output pint 5
servo.attach (8); // servo på pin 8
Serial.begin (9600); // Start seriekommunikation
temps = millis ();
servo.write (75); // Startposition for servo
}
//----------------------------------------------------------------------------
// Loop
void loop ()
{
int valG; // photoG værdi
int valD; // photoD værdi
valD = analogRead (photoD);
valG = analogRead (photoG);
// Viser værdierne på skærmen hvert sekund
hvis (temps + 1000 <millis ()) {
Serial.print ("højre fotoresistorværdi:");
Serial.println (Vald);
Serial.print ("left photoresistor value:");
Serial.println (Valg);
Serial.print ("Angle:");
Serial.println (valS);
Serial.println ("----------------------");
temps = millis ();
}
hvis (temps3 + 1000 <millis () && (valD - valG> 20) && (valS <180)) {
Serial.println ("Drejer mod uret");
temps3 = millis ();
}
hvis (temps4 + 1000 <millis () && (valG-valD> 20) && (valS> 0)) {
Serial.println ("Drej med uret");
temps4 = millis ();
}
hvis (valD - valG> 30) {
valS = valS + incr;
digitalWrite (ledG, HIGH);
}
hvis (valG - valD> 30) {
valS = valS - incr;
digitalWrite (ledD, HIGH);
}
hvis (valS> 0 || valS <180) {
servo.write (valS); // vender servo
}
hvis (valS <= 0) {
valS = 0;
}
hvis (valS> = 180) {
valS = 180;
}
hvis (temps2 + 500 <millis () && valD - valG <30 && valG - valD <30) {
digitalWrite (ledD, LOW);
digitalWrite (ledG, LOW);
temps2 = millis ();
}
forsinkelse (30);
}
Trin 3: Enden
Og … det er alt!
Jeg håber du nød dette projekt!
Har du spørgsmål, er du velkommen til at spørge.