{"id":24425979,"url":"https://github.com/tennisrunner/universal-motor-controller","last_synced_at":"2025-10-29T06:09:58.575Z","repository":{"id":164535901,"uuid":"608358406","full_name":"TennisRunner/universal-motor-controller","owner":"TennisRunner","description":"A single device for testing different types of motors using different types of drivers.","archived":false,"fork":false,"pushed_at":"2023-03-01T21:49:52.000Z","size":350,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-13T15:43:47.524Z","etag":null,"topics":["arduino","arduino-library","driver","motor","motor-controller"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TennisRunner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-01T21:16:14.000Z","updated_at":"2023-03-02T08:00:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"b6901744-6cb6-4af8-9899-5db6c207cdd4","html_url":"https://github.com/TennisRunner/universal-motor-controller","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TennisRunner/universal-motor-controller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TennisRunner%2Funiversal-motor-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TennisRunner%2Funiversal-motor-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TennisRunner%2Funiversal-motor-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TennisRunner%2Funiversal-motor-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TennisRunner","download_url":"https://codeload.github.com/TennisRunner/universal-motor-controller/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TennisRunner%2Funiversal-motor-controller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271796072,"owners_count":24822886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-library","driver","motor","motor-controller"],"created_at":"2025-01-20T11:14:40.069Z","updated_at":"2025-10-29T06:09:58.490Z","avatar_url":"https://github.com/TennisRunner.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Universal Motor Controller\nA single device for testing different types of motors \nusing different types of drivers.\n\n\n* 2 ground pins\n* 2 5V pins\n* 4 stepper pins combo for drivers such as L298N and ULN2003\n* 2 step/direction pins combo for drivers such as DM542T, A4988\n* 1 servo pin\n* 2 left/right pins combo for a driver such as BTS7960\n\n\n\n![cased](images/cased.jpg)\n\n\n### **Two operating modes**\n\nPress the encoder button down to toggle the modes.\n\nContinuous mode will blink the on board LED.\n\nThe encoder has 3 ranges. \n\nCentered will leave the motor on its current position.\n\nRotating left will rotate the motor left.\n\nRotating right will rotate the motor right.\n\nThere is around 10 steps/speeds available in each direction.\n\nToggling the mode will reset the stepper's position tracking.\n\n\n### **Mode 1 - Absolute Positional**\n\nRotating the encoder will increment and decrement the rotation of the motor shaft by one step.\n\n### **Mode 2 - Continuous**\n\nRotating the encoder will increment and decrement the rotation speed that is applied on every loop.\n\n### **Servo**\n\nThe servo pin is not effected by the modes. \n\nIf the servo is a continuous type, it will set its speed. \n\nOtherwise it will set its position.\n\n\n\n# Parts\n1. Arduino Nano with Soldered Pins - https://www.amazon.com/s?k=Arduino+nano\n2. Rotary Encoder with breakout board - https://www.amazon.com/dp/B06XQTHDRR\n3. Mini Breadboard - https://www.amazon.com/MCIGICM-Breadboard-Solderless-Distribution-Connecting/dp/B07Q2S9WX6\n4. 3D printed case - https://www.thingiverse.com/thing:5885405\n![cased](images/uncased.jpg)\n\n\n# Asssembly\n\n**WARNING: use a micro cutter to cut the sharp tips off the back of the rotary encoder breakout board to ensure that the part will fit.**\n\nLoosen the encoder nut until it is on the outermost edge of the threads.\n\nPlug in the arduino nano and encoder into the breadboard according to the diagram below.\nCount the pin holes and use the same orientation of the breadboard's side notches to ensure a correct fit.\n\nThen place the 3d printed casing on top. \n\nIt will be a incredibly tight fit.\n\nOnce in place. \n\nScrew the encoder nut back down until the case is unable to move.\n\nOnce assembled. Plug in the usb to your computer and upload the code.\n\n![top](images/top.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftennisrunner%2Funiversal-motor-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftennisrunner%2Funiversal-motor-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftennisrunner%2Funiversal-motor-controller/lists"}