Table des matières:
- Étape 1: Créez le circuit pour alimenter les moteurs et la télécommande
- Étape 2: Créer une base pour les deux moteurs
- Étape 3: ajoutez le servo au bas des moteurs
- Étape 4: Percez des trous dans le grand récipient
- Étape 5: Le tuyau
- Étape 6: La trémie
- Étape 7: Placement de la trémie, du tuyau et des moteurs
- Étape 8: le servo final
- Étape 9: ajouter du code pour tester les pièces de travail
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Les matériaux nécessaires
1 x capteur RFID/télécommande
1 x Arduino uno
2 moteurs à courant continu
1x180 servo
1x360 servo
plusieurs fils
Boîte/conteneur pour construire le projet
tuyau pour faire passer la balle à travers
Étape 1: Créez le circuit pour alimenter les moteurs et la télécommande
Construire le circuit
construisez le circuit ci-dessus et connectez-vous aux mêmes broches pour utiliser exactement le même code
Étape 2: Créer une base pour les deux moteurs
vous devrez utiliser le panneau de mousse pour couper des rectangles de 4, 5 pouces par 2 pouces pour les côtés. puis découpez 2, 5 par 5 pouces carrés à utiliser comme haut et bas. Ensuite, les moteurs auront besoin d'un endroit pour s'asseoir, alors coupez 2 trous de 23 mm de diamètre et de 39 mm l'un de l'autre pour laisser de la place à la balle. puis faites un endroit ou quelques trous sur le carré inférieur pour permettre aux fils des moteurs de se connecter au circuit.
Étape 3: ajoutez le servo au bas des moteurs
collez soigneusement le servo 180 ou 360 sur le fond (au milieu) du carré. nous faisons cela pour que nous puissions changer la direction manuellement avec la télécommande ou au hasard pour que la balle tire dans différentes directions
Étape 4: Percez des trous dans le grand récipient
prenez le grand récipient et découpez un trou à l'avant et à l'arrière, cela n'a pas besoin d'être exact mais à l'avant, il devrait être assez grand comme on le voit sur la photo pour permettre à la balle d'être tirée dans différentes directions avec le servo en mouvement. et l'arrière du conteneur a découpé un trou plus petit pour permettre aux fils de sortir et de placer les pièces du circuit ou de changer le circuit si nécessaire. à l'avant, collez le servo sur le couvercle de l'un des conteneurs, puis sur la base du conteneur pour le soutenir, voir la deuxième image pour référence
Étape 5: Le tuyau
fabriquez ou achetez un tuyau en pvc de 1 pied de long, de préférence avec une courbe pour laisser la balle rouler, puis coupez un morceau de 1,5 pour laisser entrer la balle
Étape 6: La trémie
découpez 4 trapèzes égaux, peut être un choix, mais le mien mesurait 5 de haut et était légèrement incliné lorsqu'il était placé sur le tuyau, puis le morceau de carton mousse en bas a découpé un trou assez grand pour qu'une balle de ping-pong puisse y passer. Ensuite, collez-les ensemble en formant un saut pour que toutes les balles s'assoient. plus tard, nous collerons cela au sommet du tuyau où le trou est coupé
Étape 7: Placement de la trémie, du tuyau et des moteurs
vous voudrez placer le tuyau à l'intérieur du conteneur assis juste sur le bord de la boîte blanche faite pour les moteurs afin que la balle sorte et soit poussée par les roues. vous pouvez maintenant coller la trémie au sommet du tuyau
Étape 8: le servo final
ce servo est collé au fond de la trémie/où le tuyau que j'ai coupé pour qu'il dépasse suffisamment là où les balles de ping ne tomberont pas jusqu'à ce que le bouton soit cliqué et que le servo se déplace
Étape 9: ajouter du code pour tester les pièces de travail
//Fixateur de chat
// importer des bibliothèques pour utiliser des commandes dans tout le code, par exemple, déclarer les broches comme servos et configurer la télécommande IR #include #include
//configuration des variables pour définir les vitesses des moteurs à courant continu int onspeed = 255; int basse vitesse = 100; int offspeed = 0;
//configuration de la broche du récepteur infrarouge et des deux broches du moteur int IR_Recv = 2; moteur int1 = 10; moteur int2 = 11;
//déclarer les variables en tant que servos afin que le programme sache qu'il s'agit d'un servo pour utiliser des commandes spécifiques Volet servo; Angle d'asservissement;
//déclarer la broche IR pour recevoir les entrées des télécommandes // obtient les résultats de l'IRrecv distant irrecv(IR_Recv); decode_results résultats;
void setup() {
Serial.begin(9600); // démarre la communication série irrecv.enableIRIn(); // Démarre le récepteur
rabat.attache(7); // attache le volet du servo à la broche 7 afin que nous puissions l'utiliser plus tard dans le programme angle.attach(4); // attache l'angle du servo à la broche 4 afin que nous puissions l'utiliser plus tard dans le programme pinMode(motor1, OUTPUT); //définir motor1 sur une sortie afin que nous puissions envoyer des vitesses à lorsque le bouton est enfoncé pinMode(motor2, OUTPUT); //définir motor2 sur une sortie afin que nous puissions envoyer des vitesses lorsque le bouton est enfoncé
}
boucle vide() {
rabat.write(0); // régler le servo contrôlant le distributeur de balles à 0 degré pour ne laisser passer aucune balle
if (irrecv.decode(&results)){ long int decCode = results.value; Serial.println(decCode); irrecv.resume();
switch(résultats.valeur) {
case 0xFFA25D: //power analogWrite(motor1, onspeed); analogWrite(motor2, onspeed); retard (7000); rabat.écriture(90); retard (500); rabat.write(0); retard (2000); analogWrite(motor1, offspeed); analogWrite(motor2, offspeed); Pause;
cas 0xFFE01F: //EQ
analogWrite(motor1, onspeed); analogWrite (moteur2, basse vitesse); retard (7000); rabat.écriture(90); retard (500); rabat.write(0); retard (2000); analogWrite(motor1, offspeed); analogWrite(motor2, offspeed);
Pause;
cas 0xFF629D: //mode
analogWrite(moteur1, basse vitesse); analogWrite(motor2, onspeed); retard (7000); rabat.écriture(90); retard (500); rabat.write(0); retard (2000); analogWrite(motor1, offspeed); analogWrite(motor2, offspeed);
Pause;
cas 0xFF30CF: //réglage 1, 90 degrés
angle.écriture(30);
Pause;
case 0xFF18E7: //réglage 2, 0 degrés
angle.écriture(90);
Pause;
case 0xFF7A85: //réglage 3, 180 degrés
angle.écriture(150);
Pause;
} } }