{ "cells": [ { "cell_type": "markdown", "id": "afd3e934-070b-4be1-a92c-6b13454ddfc4", "metadata": {}, "source": [ "# Servo Motors" ] }, { "cell_type": "code", "execution_count": 15, "id": "ce47fad6-fb3b-40a5-b4c4-1c66182b162b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found serial ports: /dev/cu.usbmodem14101, /dev/cu.Bluetooth-Incoming-Port \n", "\u001b[34mConnecting to --port=/dev/cu.usbmodem14101 --baud=115200 \u001b[0m\n", "\u001b[34mReady.\n", "\u001b[0m" ] } ], "source": [ "%serialconnect" ] }, { "cell_type": "code", "execution_count": 19, "id": "3f3f3790-8375-40b3-b3f0-2876d20a24e8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "." ] } ], "source": [ "import machine\n", "import time\n", "\n", "# pulse width ranges from 500 to 2500 microseconds\n", "class Servo():\n", " \n", " def __init__(self, pwm, freq=50, pulse_width_min=500, pulse_width_max=2500):\n", " self.pwm = pwm\n", " self.pwm.freq(freq)\n", " self.pulse_width_min = pulse_width_min\n", " self.pulse_width_max = pulse_width_max\n", " self.pulse_width_us = 1500\n", "\n", " def set_position(self, pos):\n", " pw = self.pulse_width_min + int((self.pulse_width_max - self.pulse_width_min)*pos/100)\n", " self.pulse_width_us = max(self.pulse_width_min, min(self.pulse_width_max, pw))\n", " self.pwm.duty_ns(1000*self.pulse_width_us)\n", " \n", " def stop(self):\n", " self.pwm.duty_u16(0)\n", " \n", "# create servo instance\n", "servo_pin = machine.Pin(7, mode=machine.Pin.OUT)\n", "servo_pwm = machine.PWM(servo_pin)\n", "srv = Servo(servo_pwm)\n", "\n", "# set to initial position\n", "srv.set_position(50)\n", "time.sleep(1)\n", "for k in range(0, 101):\n", " srv.set_position(k)\n", " time.sleep_ms(50)\n", "\n", "# stop servo\n", "srv.stop()" ] }, { "cell_type": "code", "execution_count": null, "id": "63200b71-6c72-43dd-94ea-752c6d8085ac", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "MicroPython - USB", "language": "micropython", "name": "micropython" }, "language_info": { "codemirror_mode": "python", "file_extension": ".py", "mimetype": "text/python", "name": "micropython" } }, "nbformat": 4, "nbformat_minor": 5 }