Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

adafruit-i2c-pwm-driver-async

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

adafruit-i2c-pwm-driver-async

node.js i2c control for the Adafruit PWM servo driver

  • 1.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Adafruit I2C PWM Driver

  • About
  • Installation
  • Usage
  • API
  • License

About

Node.js driver implementation for a PWM i2c device (PCA9685) present in these products:

This project is a fork from this project that is a fork from this project (original, unmaintained).
This bring the following to the original project:

  • maintains promise chains
  • major code cleanup and refactoring to use ES6 syntax
  • improved debugging options
  • unit tests
  • capability to compile on non Unix systems

Try out this project with my PWM Controller App.

Installation

Before installing the driver on a Raspberry Pi you need to enable i2c.
Follow these steps to enable it while ignoring the Python related instructions: you do not need to install libi2c-dev and python-smbus (first and last set of instructions).

Install the driver with this command:

npm i adafruit-i2c-pwm-driver-async

The driver requires a i2c binding to run but the binding is kept apart from the project dependencies in order to support compilation on non Unix systems. Install the i2c binding dependency on a Raspberry Pi with this command:

./install-i2c.sh

Reminder: running this command will fail on non Unix systems. If you wish to develop on a non Unix system, use the isMockDriver flag (see documentation).

Usage

const { PwmDriver, sleep } = require('adafruit-i2c-pwm-driver-async');

// Configure driver
const pwm = new PwmDriver({
  address: 0x40,
  device: '/dev/i2c-1',
  debug: true,
  isMockDriver: true // Remove this if running on a Raspberry Pi
});

// Configure min and max servo pulse lengths
const servoMin = 150; // Min pulse length out of 4096
const servoMax = 600; // Max pulse length out of 4096

const loop = () => {
  return sleep(1)
    .then(pwm.setPWM(0, 0, servoMin))
    .then(sleep(1))
    .then(pwm.setPWM(0, 0, servoMax))
    .then(loop);
};

// Initialize driver and loop
pwm.init()
  .then(pwm.setPWMFreq(50))
  .then(sleep(1))
  .then(loop)
  .catch(console.error);

To configure I2c on your Raspberry-pi / Beaglebone please see here

You can find a simple example here

API

PwmDriver({address:Number, device:String, debug:Bool, i2cDebug:Bool, isMockDriver:Bool})

Setting up a new PwmDriver

  • address: Address of the i2c panel (defaults to 0x40)
  • device: Device name (defaults to /dev/i2c-1)
  • debug: Flag used to display high level debug messages (defaults to false)
  • i2cDebug: Flag used to display low level i2c signals (defaults to false)
  • isMockDriver: Whether to use the real i2c binding or not (defaults to false). This is usefull for compiling on non Unix systems that don't support i2c.

pwmDriver.init()

Initialize the PwmDriver. Only required once after PwmDriver constructor is called. Returns a Promise.

pwmDriver.setPWMFreq(frequency:Number)

Set the PWM frequency to the provided value (in hertz). Returns a Promise.

pwmDriver.setPWM(channel:Number, on:Number, off:Number)

Sets a single PWM channel. Returns a Promise.

pwmDriver.setALLPWM(channel:Number, on:Number, off:Number)

Sets all PWM channels. Returns a Promise.

pwmDriver.stop()

Stops PWM signals. Returns a Promise.

License

MIT

Based on the Adafruit's Raspberry-Pi Python Code Library

Here is a growing collection of libraries and example python scripts for controlling a variety of Adafruit electronics with a Raspberry Pi

In progress!

Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!

Written by Limor Fried, Kevin Townsend and Mikey Sklar for Adafruit Industries. BSD license, all text above must be included in any redistribution

To download, we suggest logging into your Pi with Internet accessibility and typing: git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git

Keywords

FAQs

Package last updated on 23 Sep 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc