Skip to content

Commit 3d20391

Browse files
author
Nathan Seidle
committed
Add WMath for random() and map
1 parent a93dc39 commit 3d20391

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed

cores/arduino/ard_sup/Arduino.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ enum BitOrder
9494
#include "ap3_debugging.h"
9595
#include "ap3_uart.h"
9696
#include "ap3_analog.h"
97+
#include "WMath.h"
9798

9899
#include "variant.h"
99100

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
Copyright (c) 2014 Arduino. All right reserved.
3+
4+
This library is free software; you can redistribute it and/or
5+
modify it under the terms of the GNU Lesser General Public
6+
License as published by the Free Software Foundation; either
7+
version 2.1 of the License, or (at your option) any later version.
8+
9+
This library is distributed in the hope that it will be useful,
10+
but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12+
See the GNU Lesser General Public License for more details.
13+
14+
You should have received a copy of the GNU Lesser General Public
15+
License along with this library; if not, write to the Free Software
16+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17+
*/
18+
19+
extern "C" {
20+
#include "stdlib.h"
21+
#include "stdint.h"
22+
}
23+
#include "WMath.h"
24+
25+
extern void randomSeed( uint32_t dwSeed )
26+
{
27+
if ( dwSeed != 0 )
28+
{
29+
srand( dwSeed ) ;
30+
}
31+
}
32+
33+
extern long random( long howbig )
34+
{
35+
if ( howbig == 0 )
36+
{
37+
return 0 ;
38+
}
39+
40+
return rand() % howbig;
41+
}
42+
43+
extern long random( long howsmall, long howbig )
44+
{
45+
if (howsmall >= howbig)
46+
{
47+
return howsmall;
48+
}
49+
50+
long diff = howbig - howsmall;
51+
52+
return random(diff) + howsmall;
53+
}
54+
55+
extern long map(long x, long in_min, long in_max, long out_min, long out_max)
56+
{
57+
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
58+
}
59+
60+
extern uint16_t makeWord( uint16_t w )
61+
{
62+
return w ;
63+
}
64+
65+
extern uint16_t makeWord( uint8_t h, uint8_t l )
66+
{
67+
return (h << 8) | l ;
68+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
Copyright (c) 2014 Arduino. All right reserved.
3+
4+
This library is free software; you can redistribute it and/or
5+
modify it under the terms of the GNU Lesser General Public
6+
License as published by the Free Software Foundation; either
7+
version 2.1 of the License, or (at your option) any later version.
8+
9+
This library is distributed in the hope that it will be useful,
10+
but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12+
See the GNU Lesser General Public License for more details.
13+
14+
You should have received a copy of the GNU Lesser General Public
15+
License along with this library; if not, write to the Free Software
16+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17+
*/
18+
19+
#ifndef _WIRING_MATH_
20+
#define _WIRING_MATH_
21+
22+
extern long random( long ) ;
23+
extern long random( long, long ) ;
24+
extern void randomSeed( uint32_t dwSeed ) ;
25+
extern long map( long, long, long, long, long ) ;
26+
27+
extern uint16_t makeWord( uint16_t w ) ;
28+
extern uint16_t makeWord( uint8_t h, uint8_t l ) ;
29+
30+
#define word(...) makeWord(__VA_ARGS__)
31+
32+
33+
#endif /* _WIRING_MATH_ */

0 commit comments

Comments
 (0)