riban-bw / i2c-hardware-controller Goto Github PK
View Code? Open in Web Editor NEWA hardware controller providing rotary encoders, switches and potentiometer values via I2C
License: GNU General Public License v3.0
A hardware controller providing rotary encoders, switches and potentiometer values via I2C
License: GNU General Public License v3.0
Setting potentiomter fully up should result in the highest possible value but sometimes it provides a value one less than maximum. This may be after fast or slow movement but does not always occur. It seems to happen at the top end but not at the bottom (zero) end.
It would be advantageous to be able to reset all the values via I2C message.
It may be advantageous to be able to disable controllers to reduce the risk of unused controllers triggering events. Could use a spare configuration switch to disable / enable all controllers. Could write I2C value to each controller to disable / enable.
This may not be an issue if there is insufficient noise on controllers to trigger false signals.
The schematic circuit diagram should be added to repository.
It may be advantageous to be able to send I2C messages to the device to configure its behaviour, e.g. to set the threshold and scaling of fast encoder rotation.
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
There are rotary encoder modules with resistors between the wipers and VDD. VDD is not used by HWC and the resistors are not required but the module is popular with hobbyist. Need to check whether pull-up resistors (to a disconnected VDD) impact performance.
Test issue for training.
It may be advantageous to configure the I2C address at boot time instead of at compile time, e.g. using dip switches.
It may be advantageous for the host machine to be able to update the firmware of the I2C HWC. There is already an I2C connection and all other pins are currently utilised. Could we add the ability for firmware update via I2C?
The current implementation of I2C HWC supports the Maple Mini STM32 board. It may be advantageous to also support the cheaper Blue Pill STM32 board.
When using multiplexed ADC the readings are inconsistent causing excessive (invalid) I2C messages.
With a potentiometer turned fully up one would expect the ADC reading to be (2^n)-1 (where n is the quantity of bits), e.g. 0x3ff (1023) for 10-bits. This is true with a potentiometer directly feeding an ADC input pin but when a HCF4051BE multiplexer is inserted between the potentiometer and the ADC input pin then the ADC reads a maximum of 0x3d1 (977).
This may be due to impedance of the multiplexer. Need to check the datasheet and do some old-school Thevenin calculations. May be able to add a scaling factor or define a maximum expected value. May be related to the type of multiplexer chip used (just one in the drawer). It may be due to the resistor matrix arrangement. There may be some optimisation possible via code or hardware.
It may be advantageous to present the HWC as a USB device which may be plugged into a host device. This would allow the unit to be self contained and used as an external extension rather than an internally connected, integral part of the host device.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.