arduino
Fork of arduino by
Diff: Arduino.h
- Revision:
- 3:2f501d4fa486
diff -r f032b07dbff0 -r 2f501d4fa486 Arduino.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Arduino.h Mon Apr 15 15:11:37 2019 +0800 @@ -0,0 +1,173 @@ +#ifndef _ARDUINO_H_ +#define _ARDUINO_H_ + +#include "mbed.h" +#include "math.h" +// Macros +//add by gastonfeng begin +typedef enum WiringPinMode +{ + OUTPUT, /**< Basic digital output: when the pin is HIGH, the + voltage is held at +3.3v (Vcc) and when it is LOW, it + is pulled down to ground. */ + + OUTPUT_OPEN_DRAIN, /**< In open drain mode, the pin indicates + "low" by accepting current flow to ground + and "high" by providing increased + impedance. An example use would be to + connect a pin to a bus line (which is pulled + up to a positive voltage by a separate + supply through a large resistor). When the + pin is high, not much current flows through + to ground and the line stays at positive + voltage; when the pin is low, the bus + "drains" to ground with a small amount of + current constantly flowing through the large + resistor from the external supply. In this + mode, no current is ever actually sourced + from the pin. */ + + INPUT, /**< Basic digital input. The pin voltage is sampled; when + it is closer to 3.3v (Vcc) the pin status is high, and + when it is closer to 0v (ground) it is low. If no + external circuit is pulling the pin voltage to high or + low, it will tend to randomly oscillate and be very + sensitive to noise (e.g., a breath of air across the pin + might cause the state to flip). */ + + INPUT_ANALOG, /**< This is a special mode for when the pin will be + used for analog (not digital) reads. Enables ADC + conversion to be performed on the voltage at the + pin. */ + + INPUT_PULLUP, /**< The state of the pin in this mode is reported + the same way as with INPUT, but the pin voltage + is gently "pulled up" towards +3.3v. This means + the state will be high unless an external device + is specifically pulling the pin down to ground, + in which case the "gentle" pull up will not + affect the state of the input. */ + + INPUT_PULLDOWN, /**< The state of the pin in this mode is reported + the same way as with INPUT, but the pin voltage + is gently "pulled down" towards 0v. This means + the state will be low unless an external device + is specifically pulling the pin up to 3.3v, in + which case the "gentle" pull down will not + affect the state of the input. */ + + INPUT_FLOATING, /**< Synonym for INPUT. */ + + PWM, /**< This is a special mode for when the pin will be used for + PWM output (a special case of digital output). */ + + PWM_OPEN_DRAIN, /**< Like PWM, except that instead of alternating + cycles of LOW and HIGH, the voltage on the pin + consists of alternating cycles of LOW and + floating (disconnected). */ +} WiringPinMode; + +// Roger Clark. Added _BV macro for AVR compatibility. As requested by @sweetlilmre and @stevestrong +#ifndef _BV +#define _BV(bit) (1 << (bit)) +#endif +#define HIGH 1 +#define LOW 0 +#define digitalRead(x) x +#define digitalWrite(a, b) a->write(b) +void *pinMode(PinName pin, uint8_t f); +//gastonfeng end + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define pgm_read_word(x) (*(const short int*)x) +#define pgm_read_dword_near(x) (*(const int*)x) +#define pgm_read_word_near(x) (*(const unsigned int*)x) +#define pgm_read_int_near(x) (*(const int*)x) +#define pgm_read_int(x) (*(const int*)x) +#define pgm_read_byte(x) (*(const char*)x) +#define pgm_read_byte_near(x) (*(const char*)x) +#define PROGMEM const +#define char(x) ((char)x) +#define byte(x) ((byte)x) +#define int(x) ((int)x) +#define word(x) ((word)x) +#define long(x) ((long)x) +#define float(x) ((float)x) + +#define in_range(c, lo, up) ((uint8_t)c >= lo && (uint8_t)c <= up) +#define isprint(c) in_range(c, 0x20, 0x7f) +#define isdigit(c) in_range(c, '0', '9') +#define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'A', 'F')) +#define islower(c) in_range(c, 'a', 'z') +#define isspace(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v') + +/** Macro for delay() + * + * @param void + */ +#define delay(x) (wait_ms(x)) +/** Macro for delayMicroseconds() + * + * @param void + */ +#define delayMicroseconds(x) (wait_us(x)) + +/** Macro for min() + * + * @param any + */ +#define min(a,b) ((a)<(b)?(a):(b)) +/** Macro for max() + * + * @param any + */ +#define max(a,b) ((a)>(b)?(a):(b)) +/** Macro for abs() + * + * @param any + */ +#define abs(x) ((x)>0?(x):(x*-1)) + +/** Macro for randomSeed() + * + * @param int + */ +#define randomSeed(x) srand(x) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + +// typedefs + +typedef unsigned char prog_uchar; +typedef unsigned char prog_uint8_t; +typedef unsigned int prog_uint16_t; +typedef unsigned int prog_uint32_t; +typedef unsigned char byte; +typedef bool boolean; +typedef unsigned char prog_uchar; +typedef signed char prog_char; +typedef signed long int word; + +// function prototypes + +void timer_start(void); +long millis(void); +long micros(void); +byte lowByte(short int low); +byte highByte(short int high); + +int random(int number); +int random(int numberone, int numbertwo); +#endif \ No newline at end of file