Giter VIP home page Giter VIP logo

pincabledstrip's Introduction

What is it ?

An alternative to drive WS2812 ledstrips with DirectOutput Framework (Virtual Pinball Cabinet) from a Wemos D1 mini pro (much cheaper) rather than a Teensy.

Important notes

Currently requires a patched DOF, the below won't work on existing one. Please use the DirectOutput.DLL from this repository

Latest version of the DirectOutput.DLL (the one that will be released to mjr R3++ version) is now using a separate controller for the Wemos D1 Mini Pro, called WemosD1MPStripController In you cabinet.xml, you'll have to change the headers by to make it work.

Note that the field in the controller can be anything you want, doesn't need to match the controller type name. Just be aware that this name has to match to any field in the descriptors.

  • Upgrade animation fluidity

    Your cabinet.xml file needs also to be adapted to use a 2Mbs serial connection & to activate a new feature (PerLedstripLength)

    	<ComPortBaudRate>2000000</ComPortBaudRate>
	<SendPerLedstripLength>true</SendPerLedstripLength>

There is also now te possibility to use compressed ledstrip data sent to the Wemos, highly reducing the band-with consumption. Just add this setup to the WemosD1MPStripController to activate it.

	<UseCompression>true</UseCompression>

With the latest version of the firmware, you don't have to change neither MaxLedsPerStrip nor NUMBER_LEDSTRIP. After the boot sequence updating all 8 hardcoded ledstrips, everything is reset to zero size ledstrips until DirectOutput send its setup for each ledstrip. So your Wemos will update exactly what needed for your setup, leading to way more fluidity if you have a regular ledstrips setup.

  • Ledstrip brightness :

You can also set the brightness values per ledstrips with the new DirectOutput.dll provided. Just add this setup to any of your descriptors in cabinet .xml You don't need to change any brightness anymore in the firmware.

<Brightness>value</Brightness> where value is the brightness in percent, so 0 to 100 values are accepted, default is 100
  • Test Command :

The usual RGB test at boot can now be triggered in other ways

  • enabling the TEST_ON_RESET define in PincabLedstrip.ino to have it trigerred on each Wemos reset
  • using a switch between D0 and GND
  • using DirectOutput via a 'T' command, set true in the WemosD1MPStripController descriptor in cabinet.xml
  • new with firmware 2.0, EEprom customizable firmware :

Up to 8 firmware settings are now configurable through EEProm data patching. You have to set READ_EEPROM_SETTINGS to 1 to enable this feature There are 8 available settings, 3 used for now.

Current used settings are :

  • Test On Reset : will make an RGB sequence each time the Wemos is powered or when the reset button is pressed.
  • Test Switch : Arnoz' new Pinmos has a button wired on D0, enable this setting to use it, disable it if D0 is not wired or you'll have issues.
  • Activity Led : activity led is using D4, if your setup use this output, disable this setting to avoid interferences.

All other settings are free for future firmware customization.

To patch your settings in the EEprom, you'll have to flash an 8 bytes file containing your settings at the 0x3FB000 address. esptool command line example (Windows version) :

esptool.exe -cp <COMPORT> -cd nodemcu -cb 921600 -cf <FirmwareFile> -ca 0x3FB000 -cf <SettingsFile>

pincabledstrip's People

Contributors

aetios50 avatar peskopat avatar vakaobr avatar vroonsh avatar yoyofr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

pincabledstrip's Issues

2 Wemos to get more ports. Is it possible ?

Hi, first of all, thanks for this great work. I got it working pretty well. This is wonderful. I'm now upgrading my back panel to one with higer density and planinng add a Stern (Fire) Button. I'm getting out of memory messege when trying to flash a code with #define MaxLedsPerStrip = 2048. So I'd like to know if is it possible to use 2 Wemos at the same time to get more possibilities and more ports ? How can I handle with Cabint.xml with different COM ports for each board ?

No led...

Hello.
WARNING: Perhaps I missed a configuration line in cabinet.xml, so not sure if it's a real problem.

Explanation:
DOF is running well, communication with the hardware.
Test LED at startup is ok.
But after that, no LED is lightning.

To solve my problem I made that change in code:
I remove (comment) the "ledstrip.reset();" in function "SendMaxNumberOfLeds()"and then all is running well!

As said in the beginning of my issue, it's perhaps due to that I'm not putting the right configuration in cabinet.xml. But I really don't know what parameters I could have missed.
My config is with a backboard and two ledstrip, one on each side of the playfield.

LED Matrixes also working?

Hi

i found this project and think its very interesting.

Do the adjusted dlls also work with an LED Matrix below rhe backboard and 2 LED strips on the side of the playfield?

random freezes in wemos

Hello there,

I'm experiencing random crashes of wemos (the wemos status led stop blinking and dof/doflinx effects in led strips got frozen also) while using this code.

My first suspicious was my cabinet windows install, did a fresh one but still getting the same. Don't now if its related to have the 8 strips connected (that not should be a problem), somebody already saw/got something similar ?

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.