Page 8 of 25
Re: wishlist for NXC
Posted: 16 Feb 2011, 22:12
by mattallen37
afanofosc wrote:I will work to incorporate the new absolute position regulation changes from Nicolas into my enhanced NBC/NXC firmware. I am also working on getting my firmware SVN repository up on sourceforge. Hopefully I can get it up there this month.
John Hansen
Thanks a bunch.
Re: wishlist for NXC
Posted: 16 Feb 2011, 22:21
by schodet
afanofosc wrote:I will work to incorporate the new absolute position regulation changes from Nicolas into my enhanced NBC/NXC firmware. I am also working on getting my firmware SVN repository up on sourceforge. Hopefully I can get it up there this month.
Nice
In this case, for backward compatibility, I suppose it is still better to keep the 100 ms regulation interval by default. I did not handle the TurnRatio != 0 case yet, I think it is buggy (TurnRatio value should be divided by 100ms/regulation time). I have to add fractional value support for TurnRatio like I did for Speed.
EDIT: I started to patch bricxcc to add new fields, this is really a draft (missing doc for example), but it may help:
http://ni.fr.eu.org/~nico/nxc/bricxcc-absreg.patch
Re: wishlist for NXC
Posted: 17 Feb 2011, 07:00
by muntoo
I had the same "fakedio.h" * wish as doc-helmut since forever (which was way before yesterday, but sometime after time came into existence).
Insanity:
Re: wishlist for NXC
Posted: 19 Feb 2011, 03:21
by muntoo
atan2 says:
atan2 wrote:Returns:
Arc tangent of y/x, in the interval [-pi,+pi] radians.
atan2d says:
atan2d wrote:Returns:
Arc tangent of y/x, in the interval [-90,+90] degrees.
Notice anything? Hint:
Not ringing a bell? What about this:
My question is... why are they different? Shouldn't the atan2d() say +/-180 degrees? Or is the output really between 90 and -90? Should I start using my own atan2d() function?
Code: Select all
inline float myatan2d(float y, float x)
{
return(atan2(y, x) * DEGREES_PER_RADIAN);
}
-----
And another thing... (
)
Could we have these built in:
Code: Select all
// #define degToRad(x) (x * RADIANS_PER_DEGREE)
// #define radToDeg(x) (x * DEGREES_PER_RADIAN)
inline float degToRad(float x)
{
return(x * RADIANS_PER_DEGREE);
}
inline float radToDeg(float x)
{
return(x * DEGREES_PER_RADIAN);
}
I don't like thinking about [simple or complicated] conversions, especially if I have about ten of them on one line:
My 1yHz* Brain wrote:
00101010 10011010 01101110
[Translation:]
Now, if I'm converting x degrees to y radians, do I do y = x * RADIANS_PER_DEGREE, since it will be rad = deg * (rad / deg), or should I do it the other way around?
-- Later --
01000111 01001111 01001111 01000111 01001100 01000101 01001011 01001111
[Translation:]
Code: Select all
float z = x == 3 * DEGREES_PER_RADIAN ? y == 4 * RADIANS_PER_DEGREE ? 5*x/RADIANS_PER_DEGREE : y+42*RADIANS_PER_DEGREE : 101 == LOL ? LOL : 42;
*
yoctohertz
Re: wishlist for NXC
Posted: 19 Feb 2011, 03:28
by mattallen37
I am sure it is just a mistake, as there are many in the help files.
Re: wishlist for NXC
Posted: 19 Feb 2011, 11:27
by HaWe
muntoo, please stop faking and bastardizing the sources of quotes - it's weird and confusing !
My 1yHz* Brain wrote:00101010 10011010 01101110
[Translation:]
Now, if I'm converting x degrees to y radians, do I do y = x * RADIANS_PER_DEGREE, since it will be rad = deg * (rad / deg), or should I do it the other way around?
-- Later --
01000111 01001111 01001111 01000111 01001100 01000101 01001011 01001111
[Translation:]...
float Rad_Per_Deg= 3.14159265 / 180
float Deg_Per_Rad= 180 / 3.14159265
for atan you may get only values of the interval ] −π/2 ; +π/2 [ (π/2 = 90°)
by atan2 you may use all 4 quadrants for x, y of the coordinate system (except discontinuities at +/- π/2)
(CMIIW)
Re: wishlist for NXC
Posted: 19 Feb 2011, 22:39
by mattallen37
I would like higher I2C speed to be supported (but optional) in NXC. There are a few things the NXT could do much better if it was able to run the I2C bus at 100kHz or so. Ideally, you could allow the speed to be selected (maybe 4 speed options). Perhaps even an infinite number of speeds, allowing for the highest speed the external hardware supports.
A quote from Andy
gloomyandy wrote:Hi,
So I've been tweaking the i2c code in the leJOS firmware. With that I can run reliably at 125KHz (as opposed to the standard 9.6KHz). This seems to work with all of the non Lego i2c devices I have (half a dozen or so in all). I can even combine most of them on a single bus (using a port splitter). Any faster than this though and things seem to fall apart...
Andy
No rush getting it implemented (if at all), but it would be cool.
Re: wishlist for NXC
Posted: 23 Feb 2011, 17:49
by HaWe
Dear Santa-John,
I firmly hope you're not stuck in the chimney anywhere, so please forgive me when I respectfully dare to kindly remind you of my Christmas present...of
last year...?
I hope you still remember what I am referring to .... ?
If I'm not much mistaken, it might be rather far back in the Book of Christmas Wishes ... from
last Christmas ... and it starts with a "T "....
Kind regards,
*cough*
D.H.
(!! INPUT !! - Johnny_7 needs action...)
Re: wishlist for NXC
Posted: 28 Feb 2011, 21:46
by HaWe
John,
though everybody might do it "his way", what do you think about simplifying the confusion about raw sensor modes by defining in NXC API something like
which does with
SetSensor() like
Code: Select all
SetSensor(_port, SENSOR_ANALOG_RAW)
the same as
Code: Select all
SetSensorType(_port, SENSOR_TYPE_TOUCH);
SetSensorMode(_port, SENSOR_MODE_RAW);
Wait(20);
- if possible not by a macro but by an inline function, so that also variables like function returned values may be passed to it.
Having once configured the sensor this way, the standard reading
should always give the same result as SensorRaw(_port).
Re: wishlist for NXC
Posted: 07 Mar 2011, 09:00
by muntoo
I can't include more than a few files. (They all have include guards, except the ones with * after their name.)
-----
To be exact, I'm including multiple files inside "MM_v0_3.nxc". "MM.nxc" * #includes "MM_v0_3.nxc". "MM-Demo.nxc" * #includes "MM.nxc" *.
The first two files of "MM_v0_3.nxc" cause no trouble.
The last three
do cause trouble. Removing the includes doesn't cause any trouble. (After you copy some of the MM_get_LONG/MM_set_LONG functions before removing the #include, of course.)
-----
Leaving this at the end of "MM_v0_3.nxc" causes another compile error:
Code: Select all
/*
Reasons to use:
//...
To do:
// ...
// Blah blah blah
*/
. Remove it, and the three "bad include files", and I finally get a successful compile.
-----
EDIT: Alternatively, you can add a line break after /*<br />*/ to prevent compile errors
Code: Select all
/*
Reasons to use:
//...
To do:
// ...
// Blah blah blah
*/