aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid A. Mellis <d.mellis@arduino.cc>2007-11-21 17:08:07 +0000
committerDavid A. Mellis <d.mellis@arduino.cc>2007-11-21 17:08:07 +0000
commit0292fe91fc2de0e5c5b374a6d0e0c3879fe49387 (patch)
treef6361f290f3a2621e39f442ddda4c89cd4e5b915
parent72d917f70cdf8edbb11c0648b59bb9afeae64065 (diff)
Adding map(), fixing radians() and degrees(), adding cast functions (int(x) instead of (int) x), adding interrupts() and noInterrupts(), etc.
-rw-r--r--cores/arduino/WMath.cpp (renamed from cores/arduino/WRandom.cpp)4
-rwxr-xr-xcores/arduino/WProgram.h3
-rwxr-xr-xcores/arduino/wiring.h18
3 files changed, 24 insertions, 1 deletions
diff --git a/cores/arduino/WRandom.cpp b/cores/arduino/WMath.cpp
index c45c306..c83e2a2 100644
--- a/cores/arduino/WRandom.cpp
+++ b/cores/arduino/WMath.cpp
@@ -52,3 +52,7 @@ long random(long howsmall, long howbig)
return random(diff) + howsmall;
}
+long map(long x, long in_min, long in_max, long out_min, long out_max)
+{
+ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
+} \ No newline at end of file
diff --git a/cores/arduino/WProgram.h b/cores/arduino/WProgram.h
index d6d5ccc..206cdac 100755
--- a/cores/arduino/WProgram.h
+++ b/cores/arduino/WProgram.h
@@ -10,8 +10,9 @@
#ifdef __cplusplus
#include "HardwareSerial.h"
-// random prototypes
+// WMath prototypes
long random(long);
long random(long, long);
void randomSeed(unsigned int);
+long map(long, long, long, long, long);
#endif
diff --git a/cores/arduino/wiring.h b/cores/arduino/wiring.h
index 3c77389..e0c5315 100755
--- a/cores/arduino/wiring.h
+++ b/cores/arduino/wiring.h
@@ -44,6 +44,8 @@ extern "C"{
#define PI 3.14159265
#define HALF_PI 1.57079
#define TWO_PI 6.283185
+#define DEG_TO_RAD 0.01745329
+#define RAD_TO_DEG 57.2957786
#define SERIAL 0x0
#define DISPLAY 0x1
@@ -55,14 +57,30 @@ extern "C"{
#define FALLING 2
#define RISING 3
+// undefine stdlib's abs if encountered
+#ifdef abs
+#undef abs
+#endif
+
+#define int(x) ((int)(x))
+#define char(x) ((char)(x))
+#define long(x) ((long)(x))
+#define byte(x) ((uint8_t)(x))
+#define float(x) ((float)(x))
+#define boolean(x) ((uint8_t)((x)==0?0:1))
+
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(x) ((x)>0?(x):-(x))
#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
+#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
#define radians(deg) ((deg)*DEG_TO_RAD)
#define degrees(rad) ((rad)*RAD_TO_DEG)
#define sq(x) ((x)*(x))
+#define interrupts() sei()
+#define noInterrupts() cli()
+
#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )