Arduino Light Seeker: 3 étapes

Arduino Light Seeker: 3 étapes

Table des matières:

Anonim

Tout d’abord, je viens de Suisse, alors excusez mes erreurs d’anglais.

Voici un de mes premiers petits projets que j'ai réalisés avec mon Arduino Uno.

C'est juste un petit chercheur de lumière. Le servo se tourne vers la lumière.

J'ai fait une vidéo pour vous montrer ce qu'elle fait:

Provisions:

Étape 1: le câblage

Voici le câblage exact que j'ai utilisé.

La seule différence est que j'ai fixé les photorésistances sur le servo (mais je ne pouvais pas le faire avec le programme)

Aussi, j'ai utilisé une pile 9V dans la vidéo, elle était branchée dans Vin et GND.

Les résistances sont de 200 Ohm pour les LED et de 10 KOhm pour les photorésistances.

Étape 2: le code

Ceci est mon premier code. J'ai essayé de traduire les commentaires en anglais.

L'Arduino calcule la différence entre les photorésistances gauche et droite et fait tourner le servo si la différence est supérieure à 30.

Lorsque le servo tourne dans le sens des aiguilles d'une montre, le voyant de droite s'allume. Quand il tourne dans le sens anti-horaire, la LED de gauche s'allume

Si vous voyez des erreurs ou des choses étranges, s'il vous plaît dites-le moi:)

#comprendre

Servo servo; // définit le servo

// variables

int photoD = 0; // définit la broche 0 pour la photorésistance droite

int photoG = 1; // définit la broche 1 pour la photorésistance de gauche

int ledD = 3; // définit la broche 3 pour la LED droite

int ledG = 5; // définit la broche 5 pour la LED de gauche

int incr = 5; // valeur à ajouter à l'angle

int valS; //angle

temps long; //Temps

temps long2; // Temps 2

long temps3; // Temps 3

temps long4; // Temps 4

//----------------------------------------------------------------------------

//Installer

void setup()

{

pinMode (3, OUTPUT); // définit la broche de sortie 3

pinMode (5, OUTPUT); // définir la sortie pinte 5

servo.attach (8); // servo sur la broche 8

Serial.begin (9600); // Démarrer la communication série

temps = millis ();

servo.write (75); // Position initiale du servo

}

//----------------------------------------------------------------------------

//Boucle

boucle vide ()

{

int valG; // valeur photoG

int valD; // valeur photoD

valD = analogRead (photoD);

valG = analogRead (photoG);

// Affiche les valeurs sur le moniteur toutes les secondes

if (temps + 1000 <millis ()) {

Serial.print ("valeur de la photorésistance droite:");

Serial.println (valD);

Serial.print ("valeur de la photorésistance de gauche:");

Serial.println (valG);

Serial.print ("Angle:");

Serial.println (valS);

Serial.println ("----------------------");

temps = millis ();

}

if (temps3 + 1000 <millis () && (valD - valG> 20) && (valS <180)) {

Serial.println ("tournant dans le sens inverse des aiguilles d'une montre");

temps3 = millis ();

}

if (temps4 + 1000 <millis () && (valG - valD> 20) && (valS> 0)) {

Serial.println ("tournant dans le sens des aiguilles d'une montre");

temps4 = millis ();

}

si (valD - valG> 30) {

valS = valS + incr;

digitalWrite (ledG, HIGH);

}

si (valG - valD> 30) {

valS = valS - incr;

digitalWrite (ledD, HIGH);

}

si (valS> 0 || valS <180) {

servo.write (valS); // tourne le servo

}

si (valS <= 0) {

valS = 0;

}

si (valS> = 180) {

valS = 180;

}

if (temps2 + 500 <millis () && valD - valG <30 && valG - valD <30) {

digitalWrite (ledD, LOW);

digitalWrite (ledG, LOW);

temps2 = millis ();

}

délai (30);

}

Étape 3: La fin

Et c'est tout !

J'espère que vous avez apprécié ce projet!

Si vous avez des questions, n'hésitez pas à les poser.