{ "info": { "author": "Markus Kupke", "author_email": "kupkemarkus@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Topic :: Education" ], "description": "|Build Status| |codecov| |Version| |Implementation| |Status|\n|Pyversions| |Format| |License| |Issues|\n\nWS2801python\\_rpi\n=================\n\nA python module connecting RPI with WS2801\n------------------------------------------\n\nIt is based on the spidev module you can find\n`here `__.\n\nYou can use it like this:\n\n.. code:: python\n\n import WS2801_RPI as w\n s=w.set_led_colors_buffer_list_multi_call\n\n w.set_number_of_leds(100) # adjust to the number of leds in your project\n w.hello()\n w.s(1) # to let led number 1 shine in white\n w.flush() # to communicate your settings to the led strip via spi\n\nYou can call set\\_leds as often as you like before flushing it out. And\nof course you can flush as often as you need to create effects.\n\nOther convenience functions are:\n--------------------------------\n\n- ``set_number_of_leds(leds=128)``: Call this to set the number of LEDs\n on your strip for WS2801\\_RPI.\n- ``hello()``: I had many issues before I started to do a flush() with\n all LEDs white. This is a convenience function to let all LEDs shine\n 3 times for one second. If you call it and nothing happens: There\n must be an issue either in program (Check ``set_number_of_leds`` and\n ``set_spidev_bus_device``) or in your wiring\n- ``clear()``: turn off all leds. Remember you need to call ``flush()``\n to see the effect.\n- ``get_led_colors_buffer_dict()``: Get all rgb values currently in the\n buffer as dictionary. This might differ from what you see on your LED\n strip.\n- ``set_led_colors_buffer_dict_multi_call()``: After you adjusted the\n dict of the function above: Write it back to the buffer. Don't forget\n ``flush()``.\n- ``get_led_colors_buffer_list()``: Get back two lists. First is a list\n with integers for all of your LEDs (boring but needed for the set\n function) and a list of lists each with the three values for rgb\n- ``set_led_colors_buffer_list_multi_call(pixels, rgb_values=[255, 255, 255])``:\n Set the colors for a list of LEDs (pixels). If you give less lists\n for RGB values than numbers for LEDs the last RGB value is assumed\n for the remaining LEDs. If you give only a list for rgb\\_values (like\n in the default) all LEDs in pixels are set to these values. If pixel\n is an int you are adressing one LED with this int. I know that this\n kind of multi is not for production but with this setup my daughter\n was happy and could play arround before doing all the python list\n topics.\n- ``set_max_speed_hz(hz)``: Default is 1MHz. You may change this but\n not below 1,5KHz.\n- ``flush()``: Send the data out to the LED strip via SPI\n- ``set_gamma()``: Set the gamma value. Formula is:\n ``int(((rgb/255)**gamma)*255)``. Default is 2.1 which reduces the\n number of rgb values to approx. 187. Set it to ``1`` you will have\n 255 values per color but you won't be able to see them. Your eye will\n turn many into white.\n- ``set_spidev_bus_device(bus=0, device=0)``: Change the default bus\n and device for WS2801\\_RPI\n- ``get_number_of_leds()``: You should know anyhow. But if you want to\n check how many LEDs WS2801\\_RPI is assuming call this function.\n\nInstallation\n------------\n\n``pip install WS2801_RPI``.\n\nHint\n----\n\nYou can raise the log level if you like to suppress warnings:\n\n.. code:: python\n\n import logging\n logging.getLogger().setLevel(31)\n\nTesting\n-------\n\nYou can call ``python setup.py test`` to run the tests (if you clone the\ngit repo onto your machine). I will update as soon as I have more\nunderstanding on the test infrastructure.\n\nAcknowledgement\n---------------\n\n- `Atom `__ was my editor of choice\n- Formatting was done with\n `linter-pylama `__\n\nGeneral remarks on WS2801:\n--------------------------\n\n- In the Data\n `Sheet `__ of\n WS2801 I found the following passage I didn't fully understand:\n ``When the WS2801 receives total 24 clock rising edges, the WS2801 enters relay mode ...``.\n In addition one can read\n `this `__\n explanation. I found it helpful.\n- WS2801 is using the raising flag of the clock to retrieve the data\n and expects clock being low for 500 microseconds between data\n transmissions. Hence there is no need to change the mode of spidev.\n\nWould be glad if this code was used often in your projects. Feedback and pull requests are more than welcome.\n-------------------------------------------------------------------------------------------------------------\n\n.. |Build Status| image:: https://travis-ci.org/mk2366/WS2801python_rpi.svg?branch=master\n :target: https://travis-ci.org/mk2366/WS2801python_rpi\n.. |codecov| image:: https://codecov.io/gh/mk2366/WS2801python_rpi/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/mk2366/WS2801python_rpi\n.. |Version| image:: https://img.shields.io/pypi/v/WS2801-RPI.svg?style=flat-square\n :target: https://pypi.python.org/pypi/WS2801-RPI\n.. |Implementation| image:: https://img.shields.io/pypi/implementation/WS2801-RPI.svg?style=flat-square\n :target: https://pypi.python.org/pypi/WS2801-RPI\n.. |Status| image:: https://img.shields.io/pypi/status/WS2801-RPI.svg?style=flat-square\n :target: https://pypi.python.org/pypi/WS2801-RPI\n.. |Pyversions| image:: https://img.shields.io/pypi/pyversions/WS2801-RPI.svg?style=flat-square\n :target: https://pypi.python.org/pypi/WS2801-RPI\n.. |Format| image:: https://img.shields.io/pypi/format/WS2801-RPI.svg?style=flat-square\n :target: https://pypi.python.org/pypi/WS2801-RPI\n.. |License| image:: https://img.shields.io/pypi/l/WS2801-RPI.svg?style=flat-square\n :target: https://pypi.python.org/pypi/WS2801-RPI\n.. |Issues| image:: http://img.shields.io/github/issues/mk2366/WS2801python_rpi.svg\n :target: https://github.com/mk2366/WS2801python_rpi/issues", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mk2366/WS2801python_rpi", "keywords": "RaspberryPi WS2801 DIY", "license": "GNU GENERAL PUBLIC LICENSE", "maintainer": "", "maintainer_email": "", "name": "WS2801-RPI", "package_url": "https://pypi.org/project/WS2801-RPI/", "platform": "", "project_url": "https://pypi.org/project/WS2801-RPI/", "project_urls": { "Homepage": "https://github.com/mk2366/WS2801python_rpi" }, "release_url": "https://pypi.org/project/WS2801-RPI/1.0.2/", "requires_dist": null, "requires_python": "", "summary": "Conecting WS2801 LED strip to Raspberry Pi", "version": "1.0.2" }, "last_serial": 3456419, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c9f3e76bc99b0790bb6b5252b269f6e4", "sha256": "bd0dde017992fa808d6c5590679b548c4c23c9eb8c29ab360ad4fa7ce5baeb81" }, "downloads": -1, "filename": "WS2801_RPI-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "c9f3e76bc99b0790bb6b5252b269f6e4", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 14640, "upload_time": "2018-01-01T18:21:19", "url": "https://files.pythonhosted.org/packages/37/ef/f766810406298fb2574fe1b342d7609d9a6b57bfb78e076024d0b0742f4f/WS2801_RPI-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "800b51a020bb755761705d433caf8eec", "sha256": "08cad40873925d63e0821f2a330cc2bf87c90bce9dc35e475dcc07ff9e4721e9" }, "downloads": -1, "filename": "WS2801_RPI-1.0.0-py3.6.egg", "has_sig": false, "md5_digest": "800b51a020bb755761705d433caf8eec", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 14792, "upload_time": "2018-01-01T18:21:32", "url": "https://files.pythonhosted.org/packages/24/e5/60b141c5d20a7a50c49cf2da4d7c751337be33dcee74a666ab8500782b52/WS2801_RPI-1.0.0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "365c765670acf600a12133108307e320", "sha256": "976289c548173ecdc70c961a510bc80f672dc60e7b9ed6e467e6f12c4b048354" }, "downloads": -1, "filename": "WS2801_RPI-1.0.0.tar.gz", "has_sig": false, "md5_digest": "365c765670acf600a12133108307e320", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9060, "upload_time": "2018-01-01T18:21:21", "url": "https://files.pythonhosted.org/packages/db/dc/3a80c71274eb21ef6d03c3cbd1309999228672e7d7f927dde36a69b57244/WS2801_RPI-1.0.0.tar.gz" } ], "1.0.0.dev2": [ { "comment_text": "", "digests": { "md5": "f58446d24fcfff3b5dbeb47e7ff458b8", "sha256": "6cdb5a94b592bbb39ceff7e7325255281bcd65b2e4140458424a523180f75c36" }, "downloads": -1, "filename": "WS2801_RPI-1.0.0.dev2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f58446d24fcfff3b5dbeb47e7ff458b8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7909, "upload_time": "2017-12-14T13:24:53", "url": "https://files.pythonhosted.org/packages/f8/83/59f2449dc62c2f336cb3e0313a07537cea9b3c3a90e12942efdbed77a3cd/WS2801_RPI-1.0.0.dev2-py2.py3-none-any.whl" } ], "1.0.0.dev3": [ { "comment_text": "", "digests": { "md5": "e8d0cd96962f3cae0057a1a466a99885", "sha256": "cb5d792524b8a27b676f4e2a65e1c159d06999fe57312cff7958f80c183e3de2" }, "downloads": -1, "filename": "WS2801_RPI-1.0.0.dev3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e8d0cd96962f3cae0057a1a466a99885", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8230, "upload_time": "2017-12-15T08:12:07", "url": "https://files.pythonhosted.org/packages/8c/a3/f25217c62cf63af60be31d14c5a1a276b233fe2868cf9163ff65fe23318e/WS2801_RPI-1.0.0.dev3-py2.py3-none-any.whl" } ], "1.0.0.dev4": [ { "comment_text": "", "digests": { "md5": "9212fcd6f444814fe1e51ab7a65a791f", "sha256": "95db8ee5cdf6835d6061a5337c797cc6464d18745ae0ecc4252683ddbfb537d1" }, "downloads": -1, "filename": "WS2801_RPI-1.0.0.dev4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9212fcd6f444814fe1e51ab7a65a791f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8416, "upload_time": "2017-12-18T08:51:47", "url": "https://files.pythonhosted.org/packages/7b/c0/ea21a66bbf7e01a526e9c72320182f3243d04e0755d8454c67666e235cbf/WS2801_RPI-1.0.0.dev4-py2.py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "7a6b9b795d848dd2ae168953b7032be5", "sha256": "ec234e19535d2b1a9f1fbee1df7062bbc590b05219b288663d6aaaa139b44c2a" }, "downloads": -1, "filename": "WS2801_RPI-1.0.1-py2.7.egg", "has_sig": false, "md5_digest": "7a6b9b795d848dd2ae168953b7032be5", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 14949, "upload_time": "2018-01-02T12:52:29", "url": "https://files.pythonhosted.org/packages/d8/cf/fd81719234ad2316a92c4493bf450f95af61f9e59d0e6bd004c38cf53dee/WS2801_RPI-1.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "f062019149f8aaec46c6330eea4e4f99", "sha256": "18cc9c1438b371b2110f94653ffa8de5f6d92077d5d75745a5e2a7d9f93b7a5f" }, "downloads": -1, "filename": "WS2801_RPI-1.0.1-py3.6.egg", "has_sig": false, "md5_digest": "f062019149f8aaec46c6330eea4e4f99", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 15096, "upload_time": "2018-01-02T12:52:37", "url": "https://files.pythonhosted.org/packages/48/4c/cd284cae014319b6b1ae0f524c1f023b92b8d98b2a03be1c3fac53ae4340/WS2801_RPI-1.0.1-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "478eb8ff801070d49bc1433fa301cb57", "sha256": "d808ff08db194e13a5380841cb06443224107d74555f868057a81ef4134de54b" }, "downloads": -1, "filename": "WS2801_RPI-1.0.1.tar.gz", "has_sig": false, "md5_digest": "478eb8ff801070d49bc1433fa301cb57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22475, "upload_time": "2018-01-02T12:52:31", "url": "https://files.pythonhosted.org/packages/67/4f/b24cf2b3827dfda0e82a6606427d724842fa28ac2d07ddb2426bb2c91b02/WS2801_RPI-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "a34750df45d9233c348703270a7c7d76", "sha256": "4d97d177d8a197d944784086be2332f4e620e1350ea08b927d22b7f37fbf40e6" }, "downloads": -1, "filename": "WS2801_RPI-1.0.2-py2.7.egg", "has_sig": false, "md5_digest": "a34750df45d9233c348703270a7c7d76", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 18288, "upload_time": "2018-01-02T13:48:52", "url": "https://files.pythonhosted.org/packages/3f/75/91ae1ef519d2607542865740fc687ec2e66f30942a87419994ea03c5f18a/WS2801_RPI-1.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "d78d8c54da44a936c1d01fbd3ec9fde2", "sha256": "83c88f7691c188702a655713e64bde665c563316a8498ad775cb6a81c54c0c6d" }, "downloads": -1, "filename": "WS2801_RPI-1.0.2-py3.6.egg", "has_sig": false, "md5_digest": "d78d8c54da44a936c1d01fbd3ec9fde2", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 18639, "upload_time": "2018-01-02T13:48:37", "url": "https://files.pythonhosted.org/packages/dd/c5/2322062145f96ae13b915d90f1a7306db19577da92746385271095209339/WS2801_RPI-1.0.2-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "f3761cbe04b993dec0c35c958b6b0117", "sha256": "d1781579b0b7a0961ab08f1e7c0a1dde914162443bbb895e4cadaa7dce2ddd09" }, "downloads": -1, "filename": "WS2801_RPI-1.0.2.tar.gz", "has_sig": false, "md5_digest": "f3761cbe04b993dec0c35c958b6b0117", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22878, "upload_time": "2018-01-02T13:48:38", "url": "https://files.pythonhosted.org/packages/05/e8/5561b45098d23a73bce08012f069cc83ebd90a334f8e49cadb582f139396/WS2801_RPI-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a34750df45d9233c348703270a7c7d76", "sha256": "4d97d177d8a197d944784086be2332f4e620e1350ea08b927d22b7f37fbf40e6" }, "downloads": -1, "filename": "WS2801_RPI-1.0.2-py2.7.egg", "has_sig": false, "md5_digest": "a34750df45d9233c348703270a7c7d76", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 18288, "upload_time": "2018-01-02T13:48:52", "url": "https://files.pythonhosted.org/packages/3f/75/91ae1ef519d2607542865740fc687ec2e66f30942a87419994ea03c5f18a/WS2801_RPI-1.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "d78d8c54da44a936c1d01fbd3ec9fde2", "sha256": "83c88f7691c188702a655713e64bde665c563316a8498ad775cb6a81c54c0c6d" }, "downloads": -1, "filename": "WS2801_RPI-1.0.2-py3.6.egg", "has_sig": false, "md5_digest": "d78d8c54da44a936c1d01fbd3ec9fde2", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 18639, "upload_time": "2018-01-02T13:48:37", "url": "https://files.pythonhosted.org/packages/dd/c5/2322062145f96ae13b915d90f1a7306db19577da92746385271095209339/WS2801_RPI-1.0.2-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "f3761cbe04b993dec0c35c958b6b0117", "sha256": "d1781579b0b7a0961ab08f1e7c0a1dde914162443bbb895e4cadaa7dce2ddd09" }, "downloads": -1, "filename": "WS2801_RPI-1.0.2.tar.gz", "has_sig": false, "md5_digest": "f3761cbe04b993dec0c35c958b6b0117", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22878, "upload_time": "2018-01-02T13:48:38", "url": "https://files.pythonhosted.org/packages/05/e8/5561b45098d23a73bce08012f069cc83ebd90a334f8e49cadb582f139396/WS2801_RPI-1.0.2.tar.gz" } ] }