matrixorbital / eve-knob Goto Github PK
View Code? Open in Web Editor NEWAn Arduino Project. A simple AS5048 based infinitely rotating knob that you can add to any electronics project
License: MIT License
An Arduino Project. A simple AS5048 based infinitely rotating knob that you can add to any electronics project
License: MIT License
I have not found CMD_KEYS implemented in any MatrixOrbital code. I did find it implemented in the Riverdi code and extrapolated to get it into the Matrix Orbital code (nearly identical to the Cmd_Text). However the implementation seems to be somehow flawed. It shows the keys but with the extra "stacking" issue shown below.
Given a single row of keys, each key appears to be on top of a stack of (the same shaped) keys each shifted by a few pixels vertically.
Given multiple rows of keys, just the bottom row appears as above.
Is the EVE engine in the MatrixOrbital hardware not capable of this (hence the lack of current cmd_keys) or is it this implementation?
Here is my implementation..
void Cmd_Keys(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t font, uint16_t options, const char * str)
{
uint16_t DataPtr, LoopCount, StrPtr;
uint16_t length = (uint16_t)strlen(str);
if(!length)
return;
// Create a data the same size as the string only make it in 32 bit chunks instead of 8 bit.
uint32_t* data = (uint32_t*) calloc((length/4)+1, sizeof(uint32_t));
// With a length of three this allocates int(3/4 + 1) == 1 uint32.
// Loop over the incoming string and combine 4 consecutive elements into a single data element.
StrPtr = 0;
//for(DataPtr=0; DataPtr<(length/4); DataPtr++, StrPtr += 4)
for(DataPtr=0; DataPtr<(length/4); DataPtr++, StrPtr += 4)
data[DataPtr] = (uint32_t)str[StrPtr+3]<<24 | (uint32_t)str[StrPtr+2]<<16 | (uint32_t)str[StrPtr+1]<<8 | (uint32_t)str[StrPtr];
// insert the remaining (less than 4) characters into the last element in data array.
for(LoopCount=0; LoopCount<(length%4); LoopCount++, StrPtr++)
data[DataPtr] |= (uint32_t)str[StrPtr] << (LoopCount * 8);
//printf("-- CMD_KEYS -- Size(%d), DataPtr(%d), LoopCount(%d), Data0(%x)\n", sizeof(data[0]), DataPtr, LoopCount, data[0]);
Send_CMD(CMD_KEYS);
Send_CMD( ((uint32_t)y << 16) | x ); // Put two 16 bit values together into one 32 bit value - do it little endian
Send_CMD( ((uint32_t)h << 16) | w );
Send_CMD( ((uint32_t)options << 16) | font );
// Loop over the data array and send each 32 bit chunk to the display.
for (LoopCount = 0; LoopCount <= length / 4; LoopCount++)
{
Send_CMD(data[LoopCount]);
}
free(data);
}
In the file "EveKnob.ino" in the function "AS5048_GetRaw()", there is a while-statement after a Wire.requestFrom().
That while-statement can be removed, there is nothing to wait for, it is nonsense code.
Explanation: Common-mistakes#1
The while-statement is at the moment at line 413: https://github.com/MatrixOrbital/EVE-Knob/blob/master/EveKnob.ino#L413
First you need to rename the ino file to EVE-Knob.ino (arduino IDE complains if ino filename name doesn't match directory name)
After opening EVE-Knob.ino, compiling for uno gives this error
C:\tmp\EVE-Knob\Eve-Knob.ino:6:24: fatal error: Arduino_AL.h: No such file or directory
File Arduino_AL.h is in the same directory as ino file, but error occurs. At a loss, might be a filename case issue. Please fix.
ps. compiles fine ubuntu 16.04 arduino 1.8.9
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.