diff --git a/build/macosx/Arduino.xcodeproj/project.pbxproj b/build/macosx/Arduino.xcodeproj/project.pbxproj index c20b5d560..93167b34e 100644 --- a/build/macosx/Arduino.xcodeproj/project.pbxproj +++ b/build/macosx/Arduino.xcodeproj/project.pbxproj @@ -116,7 +116,7 @@ productName = App; productReference = 33DD8FB6096AC8DA0013AF8F /* Arduino.app */; productSettingsXML = " - + CFBundleDevelopmentRegion @@ -903,6 +903,7 @@ 33FFFD3F0965B1E40016AC38 /* Project object */ = { isa = PBXProject; buildConfigurationList = 33FFFD400965B1E40016AC38 /* Build configuration list for PBXProject "Arduino" */; + compatibilityVersion = "Xcode 2.4"; hasScannedForEncodings = 0; mainGroup = 33FFFD3D0965B1E40016AC38; productRefGroup = 33FFFD3D0965B1E40016AC38; @@ -913,6 +914,7 @@ ProjectRef = 33FFFE940965BD110016AC38 /* Arduino.xcodeproj */; }, ); + projectRoot = ""; targets = ( 33FFFE1C0965BBEF0016AC38 /* Setup */, 33AF61680965C4C600B514A9 /* App */, diff --git a/build/shared/lib/keywords.txt b/build/shared/lib/keywords.txt index 888dce357..160d236f4 100644 --- a/build/shared/lib/keywords.txt +++ b/build/shared/lib/keywords.txt @@ -165,5 +165,6 @@ printBinary KEYWORD2 printNewline KEYWORD2 pulseIn KEYWORD2 shiftOut KEYWORD2 +map KEYWORD2 random KEYWORD2 randomSeed KEYWORD2 \ No newline at end of file diff --git a/hardware/cores/arduino/WRandom.cpp b/hardware/cores/arduino/WMath.cpp similarity index 90% rename from hardware/cores/arduino/WRandom.cpp rename to hardware/cores/arduino/WMath.cpp index c45c306c8..c83e2a2f4 100644 --- a/hardware/cores/arduino/WRandom.cpp +++ b/hardware/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/hardware/cores/arduino/WProgram.h b/hardware/cores/arduino/WProgram.h index d6d5ccce7..206cdaca9 100755 --- a/hardware/cores/arduino/WProgram.h +++ b/hardware/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/hardware/cores/arduino/wiring.h b/hardware/cores/arduino/wiring.h index 3c7738935..e0c53156f 100755 --- a/hardware/cores/arduino/wiring.h +++ b/hardware/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() )