Uno + Servo + Laser = YoshiTrainer 2000!

Vandaag is een zeer ernstig onderwerp: de geschiktheid van onze hond Yoshi.

Sinds we in onze winkel zijn Heerlijk voor Yoshi.Yoshi's calorie ën inname is onevenredig toegenomen.

Eigenlijk wilden we een geautomatiseerde deli donor bouwen voor Yoshi, die automatisch de gedoneerde traktaties geeft, maar dat zou onverantwoord zijn als we niet voorzien in de geschiktheid van de hond.

Daarom moeten we nadenken over een sportprogramma voor Yoshi, en hier is het idee met YoshiTrainer 2000!

Voordelen:

  • Ik heb alle noodzakelijke onderdelen op mijn bureau.
  • Programmeren is relatief eenvoudig omdat we volledig negeren mijn laatste blog post over willekeurige getallen, en gebruik random()
  • Het apparaat is Y2K compatibel

 

We hebben het project nodig:

1x AZ-Delivery Microcontroller, compatibel met Arduino Uno R3

2x Servo Motor, bv.AZ-Delivery Servo MG996R

1x diode Laser

1x Mini-Bordboard

1x Kabel voor jumper

1x 5V Energievoorziening met voldoende vermogen voor servo's, lasers & Uno

Net als enkele rollen van VDE isolatie tape en dubbelzijdige plakband.

 

Laser waarschuwing:

De gebruikte laser diode is een klasse 1 laser.Volgens DIN EN 60825-1 betekent dit: "De toegankelijke laser straling is onschadelijk, of de laser is in een gesloten behuizing".

Toch beveel ik het gebruik van een bril aan.Lasers vereisen ook voldoende koeling tijdens continu gebruik.

Ik heb maar één MG 996R servo, dus nam ik onze SG90 voor de Y-as.Dit is veel kleiner, heeft plastic tandwielen en heeft veel minder vermogen.

We leggen de hele zaak zo op de kabel:

 

5V 10A Energievoorziening

Bordboard

+

+

-

-

Microcontroles compatibel met Arduino Uno R3

Bordboard

Wijn

+

GNI

GNI

Microcontroles compatibel met Arduino Uno R3

 

PWM 9

Servo 1 Oranje

PWM 10

Servo 2 Orange

PWM 3

Laser S

Servo 1 en 2 rood

Bordboard +

Servo 1 en 2 bruin

Bordboard

Laser.

Bordboard

 

Hier is een foto waarop u de bekabeling kunt zien:

 

 

Alternatief hier hetzelfde als schakelbord:

 

 

 

Nu ontbreekt de programmering.

Ik gebruik de servo voorzien van de IDE.h

Met "Servo servox;" en "Servo servoy;" maak ik twee servo's met de namen ServoX en servoy.

In de setup definieer ik dan aan welke pin de regellijn van de servo is bevestigd, in ons geval bijvoorbeeld "servox.attach é(9);" voor servox.

Nu kunnen we de servox.read() en servox.writer() functies gebruiken om de positie van de servo te lezen of in te stellen.

Om Yoshi de kans te geven om ter zake te komen, heb ik alles in een tijdlus ingepakt, met kleine vertragingen.Met behulp van de variabele "spd" kan de snelheid ruwweg verneukt worden.

Voor de laser gebruiken we eerst de pin als output met behulp van "pinMode(laserPin, OUTPUT);" en dan schakelen we het aan met "analogWrite(laserPin, 40);".

 

Hier is de volledige broncode:

 

"35; omvat <Serveren.H>
Serveren SeroX.;
Serveren servo;

u t tPosX = willekeurig(0,180); // Doelstelling Servo X
u t cPosX = SeroX..lezen(); // Huidige positie Servo X
u t tPOS = willekeurig(0,180); Doelstelling Servo Y
u t cPosY = servo.lezen(); Doelstelling Servo Y
u t spd = 1; // Snelheid
int LaserPineName = 3; // PWM pin voor laser diode 

Leeg setup() {   Zet je setup code hier, om een keer te draaien:   SeroX..hechten(9); Servo X tot Pin 9    servo.hechten(10); Servo Y tot Pin 10   PinMode(LaserPineName, UITVOER);   analoog(LaserPineName, 40); Let op laserlichting: warmteontwikkeling! 
}

Leeg ren() {   tPosX = willekeurig(45,135); Zo kunt u het bereik tussen 0 en 180 aanpassen   cPosX = SeroX..lezen(); // Huidige positie lezen   tPOS = willekeurig(120,170);   cPosY = servo.lezen();   terwijl (tPosX > cPosX){     cPosX += spd;     SeroX..schrijven(cPosX);     vertraging(50);     cPosX = SeroX..lezen();   }   terwijl (tPosX < cPosX){     cPosX -= spd;     SeroX..schrijven(cPosX);     vertraging(50);     cPosX = SeroX..lezen();   }   terwijl (tPOS < cPosY){     cPosY -= spd;     servo.schrijven(cPosY);     vertraging(50);     cPosX = servo.lezen();   }   terwijl (tPOS > cPosY){     cPosY += spd;     servo.schrijven(cPosY);     vertraging(50);     cPosX = servo.lezen();   }
vertraging(500); Zodat Yoshi niet moe wordt.
}

En we hebben een gedeeltelijk succes.Een laserpunt dat min of meer willekeurig door het gebied loopt.

Net zoals de eerste laser shows naar die tijd hebben gekeken.

 

We hopen dat je genoten hebt van de blog post van vandaag.Schrijf een korte opmerking over de vraag of u meer feitelijke bijdragen wilt of of dat u de bijdrage van vandaag leuk vindt.

 

Für arduinoProjekte für anfänger

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi