Code Monkey home page Code Monkey logo

leytonblackler / chromolite Goto Github PK

View Code? Open in Web Editor NEW
17.0 6.0 4.0 20.63 MB

A desktop and mobile platform for customisation and control of RGB LED strips and a wide range of smart lighting devices.

Processing 27.99% Java 40.41% C# 4.29% CSS 5.10% C++ 11.90% Shell 0.04% TypeScript 7.09% JavaScript 0.42% HTML 2.75%
desktop-application led-strips arduino-microcontroller android-application arduino spectrum colours led-controller colour-change colour-selection

chromolite's Introduction

Chromolite logo.

ReadMe Quick Access
About
Features
User Interface
Initial Setup
How to Operate the Software
Demonstration
Downloads
Acknowledgements
Change Log
Known Bugs and Issues
Planned Features and Changes
License

About

Chromolite provides control of RGB WS2812B LED strips through a multi-platform desktop application, or remotely through an Android application. Chromolite offers many customisation options and modes through an easy to use interface.

The Chromolite desktop and Android applications are written in the Java based programming language Processing 3. The desktop application controls the LED strips through serial communication with an Arduino microcontroller set up in configuration to operate the Chromolite purpose built program. The desktop application acts as a server, in which the Chromolite Android application can connect to via Wi-Fi for wireless control. The Arduino microcontroller program required to interface with the desktop application is written using the C/C++ based Arduino language. In order for the Chromolite desktop application to interface with the program on the Arduino microcontroller, some initial circuitry set up is required and is detailed in the setup section below.

Features

  • 8 unique modes:
    • Static: Sets the LED strips to either one, two or three non-changing colours.
    • Random: Changes the LED strips to a randomly generated colour at short intervals.
    • Wave: Colours of the spectrum move across the LED strip in a wave-like motion.
    • Music: Reacts to an audio input signal, displaying 3 specified colours.
    • Spectrum: All LEDs gradually cycle through the colour spectrum together.
    • Strobe: Turns all LEDs on and off at a very fast rate to the selected colour.
    • Scan: A short bar rapidly moves across the LED strips from one end to other and back.
    • Off: Turns all LEDs off.
  • Remote based control through the Android application to the desktop application over Wi-Fi.
  • Support for multiple Android devices connected at a single given time.
  • Keyboard shortcut control on the desktop application.
  • Spectrum based colour selection.
  • Ability to save custom default settings to both the desktop computer and Arduino's non-volatile EEPROM memory.
  • Clean, modern and simple user interface.
  • Cross desktop platform compatibility (Windows, macOS and Linux).

User Interface

Chromolite logo. Chromolite Android logo.

Chromolite desktop UI.

Chromolite Android UI. Chromolite Android UI.

Old Desktop UI (for desktop versions 0.1 - 1.0)

Old Chromolite desktop UI.

Initial Setup

Coming soon...

How to Operate the Software

Before running the desktop application, the Chromolite compatible Arduino microcontroller must be connected via USB. The program will automatically detect which serial port it is connected to.

Demonstration

Coming soon...

Change Log

Changes made in each update reflect the code in both the desktop application and Arduino program.

Desktop Versions

Versions 2.x
Version 2.0 (Latest) * //
Versions 1.x
    Version 1.4(Latest) * Removed delay when switching from wave, spectrum and random modes.
    Version 1.3 * Allow dragging across spectrum once the spectrum has been clicked and the cursor moves above or below the spectrum. * Fixed flickering delay when dragging over the spectrum (caused by sending data to the LED controller at a rate faster than the Arduino serial port can handle).
    Version 1.2 * Fixed issue where changing a music mode colour would also change the current colour for static and strobe modes.
    Version 1.1 * Fixed issue where sometimes the mode would change randomly when in music mode.
    Version 1.0 * Fixed many bugs and errors: First stable release. * Implemented keyboard shortcut/control functionality. * Minor usability and UI tweaks.
Versions 0.x
    Version 0.9 * Added music mode colour customisation.
    Version 0.8 * Added music mode.
    Version 0.7 * Additionally implemented dragging over spectrum for selection instead of exclusively upon press. * Added circle indicator over spectrum to display which colour is selected.
    Version 0.6 * Added spectrum mode. * Added strobe mode.
    Version 0.5 * Converted previously white user interface into a dark theme. * Refined layout of buttons and added mouse over colour change/ button selection colour change.
    Version 0.4 * Added toggle for the controller LED. * Added exit button.
    Version 0.3 * Added wave mode.
    Version 0.2 * Created button layout to change between modes. * Added random mode.
    Version 0.1 * Base desktop application structure complete. * Base Arduino program structure complete. * Static colour selection mode.

Android Versions

Versions 1.x
    Version 1.4 (Latest) * //
    Version 1.3 * //
    Version 1.2 * //
    Version 1.1 * //
    Version 1.0 * //
Versions 0.x
    Version 0.9 * //
    Version 0.8 * //
    Version 0.7 * //
    Version 0.6 * //
    Version 0.5 * //
    Version 0.4 * //
    Version 0.3 * //
    Version 0.2 * //
    Version 0.1 * //

Known Bugs and Issues

  • There are currently no known issues or bugs.

Click here to report a bug.

Planned Features and Changes

  • Ability to control speed for random, wave, spectrum, strobe modes and scan modes.

Click here to suggest a new feature.

Acknowledgements

Corale Studios - github.com/CoralStudios

Colore - A C# library that utilises the Razer Chroma SDK to provide control of LEDs on a range of Razer Chroma devices. The library is used in this project in the Windows background service that the desktop applciation communicates with via UDP in order to control the LEDs on Razer Chroma devices. This allows utilisation of this C# based library from within Java.

Andreas Schlegel (sojamo) - http://www.sojamo.de/

oscP5 - A library for the Processing programming environment which implements the Open Sound Control (OSC) network protocol developed at the Center for New Music and Audio Technologies, University of California, Berkeley. The library is used in this project for the purpose of network communication between Android and desktop devices.

controlP5 - A library for the Processing programming environment which provides a set of controllers to build a graphical user interface. The library is used in this project for the purpose of creating an editable text field in the desktop application in which the user is able to input a desired network port.

David Bouchard (deadpixel) - http://www.deadpixel.ca/

Arduino-OSC - Libraries for the Processing and Arduino programming environments, built upon oscP5, which allows for OSC protocol communciation over the Serial port to the Arduino platform. The library is used in this project for the purpose of communication between the desktop application and the Chromolite compatible Arduino microcontroller.

Ani - A library for the Processing programming environment which provides a platform for creating smooth easing animations. The library is used in this project for the purpose of animating UI transitions and interactions in the Android application.

Adafruit Industries - https://www.adafruit.com/

NeoPixel - A library for the Arduino programming environment which provides the ability to individually interface with each LED in the WS2812B RGB LED strips. The library is used in this project for the purpose of controlling the LED strips connected to the Chromolite compatible Arduino microcontroller.

License

MIT License

Copyright © 2016 - 2018 Leyton Blackler

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

chromolite's People

Contributors

leytonblackler avatar riley-blair avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

chromolite's Issues

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.