Giter Site home page Giter Site logo

faderuby's Introduction

FadeRuby

Ruby interface for Fadecandy LED control servers using the Open Pixel Control protocol.

Requirements

  • Ruby 2.x, 2.1 or higher recommended - Faderuby does make use of named parameters
  • Faderuby server (fcserver)
  • Some cool LEDs
  • Nothing better to do with your life

Installation

Add this line to your application's Gemfile:

gem 'faderuby'

And then execute:

$ bundle

Or install it yourself as:

$ gem install faderuby

Usage

We use a client to talk to the device; you can specify a host and port for the fadecandy server, the defaults are localhost/7890.

client = FadeRuby::Client.new([host], [port])

The client can be used to directly write pixel data:

# Set the first connected pixel on channel 0 to blue
client.set_pixels([0,0,255], 0)
# Set the first pixel to green and the second pixel to red
client.set_pixels([0,255,0,255,0,0], 0)

There are also convenience classes - subclasses of DisplaySurface like Strip can be used to manage collections of Pixels.

# 30 LED strip
strip = FadeRuby::Strip.new(30)
# Set the whole strip to green
strip.set_all(r: 0, g: 255, b: 0)
client.write(strip)
# Set the first 10 LEDs to blue
strip.pixels[0..10].each{|pix| pix.set(r: 0, g: 0, b: 255) }
client.write(strip)

Fadecandy will do temporal dithering (fades) for you, so you can do smooth fades by simply waiting between commands. The following example smoothly rolls a new colour onto the strip at random:

next_color = [rand(255), rand(255), rand(255)]
while true
  strip.pixels.each do |pix|
    pix.set(r: next_color[0], g: next_color[1], b: next_color[2])
    client.write(strip)
    sleep 0.2
  end
  sleep 0.2
  next_color = [rand(255), rand(255), rand(255)]
end

Contributing

  1. Fork it ( https://github.com/JamesHarrison/faderuby/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

faderuby's People

Contributors

jamesharrison avatar mucky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

faderuby's Issues

There needs to be an index method somewhere

If you just want to control a strip on any other output other than 0, it is currently impossible without going through all the other pixels first. There should be an index method so, for example, you could just address the 64 pixels attached to output 2, and not the ones at 0 and 1. For example in the processing java program.

void led(int index, int x, int y)  
  {
    // For convenience, automatically grow the pixelLocations array. We do want this to be an array,
    // instead of a HashMap, to keep draw() as fast as it can be.
    if (pixelLocations == null) {
      pixelLocations = new int[index + 1];
    } else if (index >= pixelLocations.length) {
      pixelLocations = Arrays.copyOf(pixelLocations, index + 1);
    }

    pixelLocations[index] = x + width * y;
  }

Please push the 0.0.2 gem

I am using faderuby for a word-clock, and it is very useful.

I noticed that the VERSION is already at 0.0.2 in the master branch (with the Matrix class added), but rubygems.org only has 0.0.1 so far.

Could you please publish 0.0.2 to rubygems.org?

Thanks in advance, and keep up the good work!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.