Library to allow the use of Arduino specific language with the mbed
Dependents: mbed_shiftreg mbed_shiftreg mbed_shiftreg_4 mbed_shiftreg_3
Fork of Arduino by
arduino.c
- Committer:
- TheChrisyd
- Date:
- 2012-10-21
- Revision:
- 0:8d785e80d3ba
- Child:
- 1:b22cf6a5957d
File content as of revision 0:8d785e80d3ba:
/** * @section LICENSE * Copyright (c) 2012 * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * @section DESCRIPTION * This is a library for allowing the use of programs written for the Arduino * with the mbed. This was started for use with the Gameduino shield Library. * It is currently uncomplete and not fully tested, but I don't see myself spending time on it. * See TODOs and check http://arduino.cc/en/Reference/HomePage for missing parts * * @file arduino.c * * Example: * @code * * #include "mbed.h" * #include "arduino.h" * * void setup(){ * // setup code * } * *void loop(){ * // loop code *} * * int main() { * timer_start(); * setup(); * while(1) { * loop(); * } * } * @endcode */ #include "arduino.h" /***************************************************** Digital I/O pinMode()- TODO digitalWrite()- TODO digitalRead()- TODO ******************************************************/ /***************************************************** Analog I/O analogReference() - TODO analogRead() - TODO analogWrite()-(PWM) - TODO *****************************************************/ /***************************************************** Advanced I/O tone() - TODO noTone() - TODO shiftOut() - TODO shiftIn() - TODO pulseIn() - TODO *****************************************************/ /***************************************************** Time millis() - need to start timer first micros() - need to start timer first delay() - done by Macro delayMicroseconds() - Done byMacro *****************************************************/ Timer arduino_timer; /** start the arduino_timer timer for millis() and micros() running. * * @param void */ void timer_start(void) { arduino_timer.start(); } /** return a long for the amount of time since the timer was started in milliseconds. * * @param void */ long millis(void) { return arduino_timer.read_ms(); } /** return a long for the amount of time since the timer was started in microseconds. * * @param void */ long micros(void) { return arduino_timer.read_us(); } /** Macro for delay() * * @param void */ #define delay(x) (wait_ms(x)) /** Macro for delayMicroseconds() * * @param void */ #define delayMicroseconds(x) (wait_us(x)) /***************************************************** Maths min() - done by Macro max() - done by Macro abs() - done by Macro constrain() - TODO map() - TODO pow() - implemented by including math.h sqrt() - implemented by including math.h *****************************************************/ /** 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)) /***************************************************** Trigonometry sin() - implemented by including math.h cos() - implemented by including math.h tan() - implemented by including math.h *****************************************************/ /***************************************************** Random Numbers randomSeed() - done by Macro random() - function below *****************************************************/ /** Macro for randomSeed() * * @param int */ #define randomSeed(x) srand(x) /** generates a random number from 0 to defined number * * @param number maximum value for random number */ int random(int number) { return (rand()%number); } /** generates a random number between two numbers * * @param numberone minimum value for random number * @param numbertwo maximum value for random number */ int random(int numberone, int numbertwo) { int random = 0; if ((numberone < 0) && (numbertwo < 0)) { numberone = numberone * -1; numbertwo = numbertwo * -1; random = -1 * (rand()%(numberone + numbertwo)); } if ((numbertwo < 0) && (numberone >= 0)) { numbertwo = numbertwo * -1; random = (rand()%(numberone + numbertwo)) - numbertwo; } if ((numberone < 0) && (numbertwo >= 0)) { numberone = numberone * -1; random = (rand()%(numberone + numbertwo)) - numberone; } else { random = (rand()%(numberone + numbertwo)) - min(numberone, numbertwo); } return random; } /***************************************************** Bits and Bytes lowByte() - function below highByte() - function below bitRead() - TODO bitWrite() - TODO bitSet() - TODO bitClear() - TODO bit() - TODO *****************************************************/ /** returns the lower nibble of first byte * * @param high byte of which the high nibble is required */ byte lowByte(short int low) { byte bytelow = 0; bytelow = (low & 0xFF); return bytelow; } /** returns the higher nibble of first byte * * @param high byte of which the high nibble is required */ byte highByte(short int high) { byte bytehigh = 0; bytehigh = ((high >> 8) & 0xFF); return bytehigh; } /***************************************************** External Interrupts attachInterrupt() - TODO detachInterrupt() - TODO *****************************************************/ /***************************************************** Interrupts interrupts() - TODO noInterrupts() - TODO *****************************************************/ /***************************************************** Communication Serial - TODO Stream - TODO *****************************************************/