Uno + Servo + Laser = YoshiTrainer 2000!

Aujourd’hui, nous sommes confrontés à un problème très grave: la condition physique de notre chien Yoshi.

Depuis que nous sommes dans notre boutique, Délicieux pour YoshiL’apport calorique de Yoshi a augmenté de façon disproportionnée.

En fait, nous voulions construire un distributeur de friandises automatisé pour Yoshi bientôt, qui distribuera automatiquement le Don Leckelis, mais ce serait irresponsable si nous ne fournissions pas la condition physique du chien. 

Nous devons donc penser à un programme sportif pour Yoshi.  Et puis vint l’idée avec le YoshiTrainer 2000!

Avantages:

  • J’ai tous les composants nécessaires sur mon bureau
  • La programmation est relativement simple que nous ignorons complètement mon dernier blog sur les numéros aléatoires et l’utilisation aléatoire ()
  • L’appareil est compatible an 2000

 

Pour le projet, nous avons besoin:

1x Microcontrôleur AZ-Delivery, compatible avec Arduino Uno R3

2x Moteur Servo par exemple AZ-Livraison Servo MG996R

1x Laser Diode

1x Mini-Breadboard

1x Ensemble de câbles Jumper

Alimentation 1x 5V avec une puissance suffisante pour les servos, le laser et l’Uno

Ainsi que quelques rouleaux de ruban isolant VDE et de ruban adhésif recto-verso.

 

Avertissement laser:

La diode laser utilisée est un laser de classe 1. Selon DIN EN 60825-1, cela signifie : « Le rayonnement laser accessible est inoffensif, ou le laser se trouve dans un boîtier fermé ».

Néanmoins, je recommande l’utilisation de lunettes. En outre, les lasers nécessitent un refroidissement suffisant dans l’utilisation continue. 

Je n’ai qu’un seul MG 996R servo, donc j’ai pris notre SG90 pour l’axe Y. C’est beaucoup plus petit, a des engrenages en plastique et a beaucoup moins de puissance.

Nous filons le tout comme suit:

 

Alimentation 5V 10A

Planche à pain

+

+

-

-

Microcontrôleur, compatible avec Arduino Uno R3

Planche à pain

Vin (Vin)

+

Gnd

Gnd

Microcontrôleur, compatible avec Arduino Uno R3

 

PWM 9

Servo 1 Orange

PWM 10

Servo 2 Orange

PWM 3

Laser S

Servo 1 et 2 Rouge

Planche à pain

Servo 1 et 2 Brun

Planche à pain -

Laser -

Planche à pain -

 

Voici une photo où vous pouvez voir le câblage:

 

 

Alternativement, ici la même chose que schématique:

 

 

 

Maintenant, la programmation est toujours manquante. 

J’utilise le servo.h fourni avec l’IDE

Avec "Servo servoX;" et "Servo servoY;" je crée 2 servos nommés ServoX et servoY. 

Dans la configuration, je définis ensuite sur quelle épingle la ligne de commande du servo est accrochée, dans notre cas par exemple "servoX.attach(9);" pour servoX.

Maintenant, nous pouvons lire ou définir la position du servo avec les fonctions servoX.read() et servoX.write().

Pour que Yoshi ait une chance d’attraper le point, j’ai tout emballé dans une boucle de temps, avec de petits retards. La variable "spd" peut être utilisée pour accélérer grossièrement la vitesse.

Pour le laser, nous utilisons d’abord la broche comme une sortie en utilisant "pinMode(laserPin, OUTPUT);" et puis l’allumer avec "analogWrite (laserPin, 40);". 

 

Voici le code source complet:

 

#include <Servo.H (en)>
Servo servoX (servoX);
Servo servoY;

uint8_t tPosX (en) = Aléatoire(0,180); Position cible Servo X
uint8_t cPosX (en) = servoX (servoX).Lire(); Position actuelle Servo X
uint8_t tPosY (en) = Aléatoire(0,180); Position cible Servo Y
uint8_t cPosY (en) = servoY.Lire(); Position cible Servo Y
uint8_t Spd = 1; Vitesse
Int laserPin = 3; PWM Pin pour diode laser 

Vide Configuration() {   mettre votre code de configuration ici, pour s’exécuter une fois:   servoX (servoX).joindre(9); Servo X à Pin 9    servoY.joindre(10); Servo Y à Pin 10   pinMode(laserPin, Sortie);   analogWrite (en)(laserPin, 40); laser de luminosité - observez le développement de la chaleur! 
}

Vide Boucle() {   tPosX (en) = Aléatoire(45,135); cela permet à la plage entre 0 et 180 degrés d’être   cPosX (en) = servoX (servoX).Lire(); Lire la position actuelle   tPosY (en) = Aléatoire(120,170);   cPosY (en) = servoY.Lire();   Tandis que (tPosX (en) > cPosX (en)){     cPosX (en) += Spd;     servoX (servoX).Écrire(cPosX (en));     Retard(50);     cPosX (en) = servoX (servoX).Lire();   }   Tandis que (tPosX (en) < cPosX (en)){     cPosX (en) -= Spd;     servoX (servoX).Écrire(cPosX (en));     Retard(50);     cPosX (en) = servoX (servoX).Lire();   }   Tandis que (tPosY (en) < cPosY (en)){     cPosY (en) -= Spd;     servoY.Écrire(cPosY (en));     Retard(50);     cPosX (en) = servoY.Lire();   }   Tandis que (tPosY (en) > cPosY (en)){     cPosY (en) += Spd;     servoY.Écrire(cPosY (en));     Retard(50);     cPosX (en) = servoY.Lire();   }
Retard(500); Pour que Yoshi ne soit pas trop fatigué
}

Et nous avons un succès partiel. Un point laser qui se déplace plus ou moins au hasard à travers la zone.

Tout comme ça - ou du moins similaire - les premiers spectacles laser doit avoir ressemblé à cela à ce moment-là.

 

Nous espérons que vous avez aimé le blog d’aujourd’hui. S’il vous plaît écrire un court commentaire si vous souhaitez plus de contributions factuelles ou si vous avez aimé le post d’aujourd’hui.

 

Pour arduinoProjets pour les débutants

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi