Uno + Servo + Laser = YoshiTrainer 2000! - AZ-Delivery

Oggi è un argomento molto serio: la forma fisica del nostro cane Yoshi.

Da quando siamo nel nostro negozio Una delizia per YoshiL'assunzione di calorie di Yoshi è aumentata sproporzionatamente.

In realtà, stavamo per costruire un donatore automatizzato della gastronomia per Yoshi, che distribuisce automaticamente i dolcetti donati, ma sarebbe irresponsabile se non provvedessimo alla forma fisica del cane.

Ecco perché dobbiamo pensare ad un programma sportivo per Yoshi, e questa è l'idea con YoshiTrainer 2000!

Benefici:

  • Ho tutti i componenti necessari sulla mia scrivania.
  • Programmazione è relativamente semplice perché ignoriamo completamente il mio ultimo blog post su numeri casuali, e usiamo casuali()
  • Il dispositivo è compatibile con Y2K

 

Abbiamo bisogno per il progetto:

1x AZ-Delivery Microcontroller, compatibile con Arduino Uno R3

2x Servo Motor, ad es.AZ-Delivery Servo M996R

1x Diode laser

1x Minibreadboard

1x Cavo per jumper impostato

1x 5V Alimentazione con potenza sufficiente per servos, laser & Uno

Oltre ad alcuni rotoli di nastro isolante VDE e nastro adesivo a doppio taglio.

 

Avviso laser:

Il diodo laser utilizzato è un laser di classe 1.Secondo DIN EN 60825-1, questo significa: "La radiazione laser accessibile è innocua, o il laser è in un alloggiamento chiuso".

Tuttavia, raccomando l'uso di occhialini.I laser richiedono inoltre un raffreddamento sufficiente durante l’uso continuo.

Ho solo un servizio MG 96R, quindi ho preso il nostro SG90 per l'asse Y.Questo è molto più piccolo, ha ingranaggi di plastica e ha molto meno potenza.

Si collega tutto in questo modo:

 

5V 10A Alimentazione elettrica

Bordo

+

+

-

-

Microcontrolli compatibili con Arduino Uno o R3

Bordo

Vino

+

RNL

RNL

Microcontrolli compatibili con Arduino Uno o R3

 

PWM 9

Servo 1 Orange

PWM 10

Servo 2 Orange

PWM 3

Laser S

Servo 1 e 2 rosso

Panetta +

Servo 1 e 2 marrone

Bordo

Laser

Bordo

 

Ecco una foto su cui potete vedere il cablaggio:

 

 

Alternativamente qui lo stesso di centralino:

 

 

 

Ora manca la programmazione.

Uso il servizio fornito con l'IDE.h

Con "Servo servoX;" e "Servo servoY;" creo due servoos con i nomi ServoX e servoY.

Nel setup io quindi definire quale perno è collegato la linea di controllo del servous, nel nostro caso, ad esempio "servioX.allegax(9);" per servoX.

Ora possiamo usare le funzioni servoX.read() e servoX.write() per leggere o impostare la posizione del servo.

Per dare a Yoshi la possibilità di arrivare al punto, l'ho impacchettata in un ciclo temporale, con pochi ritardi.Utilizzando la variabile "spd" la velocità può essere approssimativamente incasinata.

Per il laser utilizziamo prima il perno come output con "PinMode(laser Pin, OUTPUT)" e poi lo accendiamo con "analogicWrite(laser Pin, 40);".

 

Ecco il codice sorgente completo:

 

«35; comprende <Serva.h>
Serva SeroX;
Serva servoName;

u t Leency = casuale(0,180); // Posizione del bersaglio Servo X
u t cPosX = SeroX.leggere(); // Posizione attuale Servo X
u t tPOSS = casuale(0,180); /Posizione di destinazione Servo Y
u t SoUrcerer = servoName.leggere(); /Posizione di destinazione Servo Y
u t spd = 1; // Velocità
int LaserPine = 3; // PWM pin per diode laser 

vuoto setComment() {   Metti qui il tuo codice di configurazione, per eseguire una volta:   SeroX.allegare(9); Servo X a Pin 9    servoName.allegare(10); Servo Y a Pin 10   pinMode(LaserPine, PRODUZIONE);   analogico(LaserPine, 40); Nota luminosità laser: sviluppo del calore! 
}

vuoto Esecuzione() {   Leency = casuale(45,135); // questo consente di regolare la gamma tra 0 e 180   cPosX = SeroX.leggere(); // Leggi la posizione corrente   tPOSS = casuale(120,170);   SoUrcerer = servoName.leggere();   mentre (Leency > cPosX){     cPosX += spd;     SeroX.scrivi(cPosX);     ritardo(50);     cPosX = SeroX.leggere();   }   mentre (Leency < cPosX){     cPosX -= spd;     SeroX.scrivi(cPosX);     ritardo(50);     cPosX = SeroX.leggere();   }   mentre (tPOSS < SoUrcerer){     SoUrcerer -= spd;     servoName.scrivi(SoUrcerer);     ritardo(50);     cPosX = servoName.leggere();   }   mentre (tPOSS > SoUrcerer){     SoUrcerer += spd;     servoName.scrivi(SoUrcerer);     ritardo(50);     cPosX = servoName.leggere();   }
ritardo(500); Così Yoshi non si stanca
}

E abbiamo un parziale successo.Un punto laser che e'piu' o meno casuale che attraversa la zona.

Come, o almeno altrettanto simili, i primi programmi laser devono aver visto in quel momento.

 

Speriamo vi sia piaciuto il post sul blog di oggi.Scrivi un breve commento sul fatto che desideri contributi più fattuali o se ti è piaciuto il contributo di oggi.

 

Für arduinoProjekte für anfänger

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione