arduino

Fork of arduino by SE HUI PARK

Committer:
gastonfeng
Date:
Mon Apr 15 15:23:54 2019 +0800
Revision:
4:b000674ff8b3
Parent:
2:f032b07dbff0
remove

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aluqard 0:3b83fc30bbdf 1 /**
aluqard 0:3b83fc30bbdf 2 * @section LICENSE
aluqard 0:3b83fc30bbdf 3 * Copyright (c) 2012
aluqard 0:3b83fc30bbdf 4 *
aluqard 0:3b83fc30bbdf 5 * Permission is hereby granted, free of charge, to any person obtaining a copy
aluqard 0:3b83fc30bbdf 6 * of this software and associated documentation files (the "Software"), to deal
aluqard 0:3b83fc30bbdf 7 * in the Software without restriction, including without limitation the rights
aluqard 0:3b83fc30bbdf 8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
aluqard 0:3b83fc30bbdf 9 * copies of the Software, and to permit persons to whom the Software is
aluqard 0:3b83fc30bbdf 10 * furnished to do so, subject to the following conditions:
aluqard 0:3b83fc30bbdf 11 *
aluqard 0:3b83fc30bbdf 12 * The above copyright notice and this permission notice shall be included in
aluqard 0:3b83fc30bbdf 13 * all copies or substantial portions of the Software.
aluqard 0:3b83fc30bbdf 14 *
aluqard 0:3b83fc30bbdf 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
aluqard 0:3b83fc30bbdf 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
aluqard 0:3b83fc30bbdf 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
aluqard 0:3b83fc30bbdf 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
aluqard 0:3b83fc30bbdf 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
aluqard 0:3b83fc30bbdf 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
aluqard 0:3b83fc30bbdf 21 * THE SOFTWARE.
aluqard 0:3b83fc30bbdf 22 *
aluqard 0:3b83fc30bbdf 23 * @section DESCRIPTION
aluqard 0:3b83fc30bbdf 24 * This is a library for allowing the use of programs written for the Arduino
aluqard 0:3b83fc30bbdf 25 * with the mbed. This was started for use with the Gameduino shield Library.
aluqard 0:3b83fc30bbdf 26 * It is currently uncomplete and not fully tested, but I don't see myself spending time on it.
aluqard 0:3b83fc30bbdf 27 * See TODOs and check http://arduino.cc/en/Reference/HomePage for missing parts
aluqard 0:3b83fc30bbdf 28 *
aluqard 0:3b83fc30bbdf 29 * @file arduino.c
aluqard 0:3b83fc30bbdf 30 *
aluqard 0:3b83fc30bbdf 31 * Example:
aluqard 0:3b83fc30bbdf 32 * @code
aluqard 0:3b83fc30bbdf 33 *
aluqard 0:3b83fc30bbdf 34 * #include "mbed.h"
aluqard 0:3b83fc30bbdf 35 * #include "arduino.h"
aluqard 0:3b83fc30bbdf 36 *
aluqard 0:3b83fc30bbdf 37 * void setup(){
aluqard 0:3b83fc30bbdf 38 * // setup code
aluqard 0:3b83fc30bbdf 39 * }
aluqard 0:3b83fc30bbdf 40 *
aluqard 0:3b83fc30bbdf 41 *void loop(){
aluqard 0:3b83fc30bbdf 42 * // loop code
aluqard 0:3b83fc30bbdf 43 *}
aluqard 0:3b83fc30bbdf 44 *
aluqard 0:3b83fc30bbdf 45 * int main() {
aluqard 0:3b83fc30bbdf 46 * timer_start();
aluqard 0:3b83fc30bbdf 47 * setup();
aluqard 0:3b83fc30bbdf 48 * while(1) {
aluqard 0:3b83fc30bbdf 49 * loop();
aluqard 0:3b83fc30bbdf 50 * }
aluqard 0:3b83fc30bbdf 51 * }
aluqard 0:3b83fc30bbdf 52 * @endcode
aluqard 0:3b83fc30bbdf 53 */
gastonfeng 2:f032b07dbff0 54 #include "Arduino.h"
aluqard 0:3b83fc30bbdf 55
aluqard 0:3b83fc30bbdf 56 /*****************************************************
aluqard 0:3b83fc30bbdf 57 Digital I/O
aluqard 0:3b83fc30bbdf 58
aluqard 0:3b83fc30bbdf 59 pinMode()- TODO
aluqard 0:3b83fc30bbdf 60 digitalWrite()- TODO
aluqard 0:3b83fc30bbdf 61 digitalRead()- TODO
aluqard 0:3b83fc30bbdf 62
aluqard 0:3b83fc30bbdf 63 ******************************************************/
gastonfeng 1:4e1b6bfbac98 64 void *pinMode(PinName pin, uint8_t f)
gastonfeng 1:4e1b6bfbac98 65 {
gastonfeng 1:4e1b6bfbac98 66 if (f == INPUT)
gastonfeng 1:4e1b6bfbac98 67 return new DigitalIn(pin);
gastonfeng 1:4e1b6bfbac98 68 else if (f == OUTPUT)
gastonfeng 1:4e1b6bfbac98 69 return new DigitalOut(pin);
gastonfeng 1:4e1b6bfbac98 70 }
gastonfeng 1:4e1b6bfbac98 71
aluqard 0:3b83fc30bbdf 72 /*****************************************************
aluqard 0:3b83fc30bbdf 73 Analog I/O
aluqard 0:3b83fc30bbdf 74
aluqard 0:3b83fc30bbdf 75 analogReference() - TODO
aluqard 0:3b83fc30bbdf 76 analogRead() - TODO
aluqard 0:3b83fc30bbdf 77 analogWrite()-(PWM) - TODO
aluqard 0:3b83fc30bbdf 78
aluqard 0:3b83fc30bbdf 79 *****************************************************/
aluqard 0:3b83fc30bbdf 80
aluqard 0:3b83fc30bbdf 81 /*****************************************************
aluqard 0:3b83fc30bbdf 82 Advanced I/O
aluqard 0:3b83fc30bbdf 83
aluqard 0:3b83fc30bbdf 84 tone() - TODO
aluqard 0:3b83fc30bbdf 85 noTone() - TODO
aluqard 0:3b83fc30bbdf 86 shiftOut() - TODO
aluqard 0:3b83fc30bbdf 87 shiftIn() - TODO
aluqard 0:3b83fc30bbdf 88 pulseIn() - TODO
aluqard 0:3b83fc30bbdf 89
aluqard 0:3b83fc30bbdf 90 *****************************************************/
aluqard 0:3b83fc30bbdf 91
aluqard 0:3b83fc30bbdf 92 /*****************************************************
aluqard 0:3b83fc30bbdf 93 Time
aluqard 0:3b83fc30bbdf 94
aluqard 0:3b83fc30bbdf 95 millis() - need to start timer first
aluqard 0:3b83fc30bbdf 96 micros() - need to start timer first
aluqard 0:3b83fc30bbdf 97 delay() - done by Macro
aluqard 0:3b83fc30bbdf 98 delayMicroseconds() - Done byMacro
aluqard 0:3b83fc30bbdf 99
aluqard 0:3b83fc30bbdf 100 *****************************************************/
aluqard 0:3b83fc30bbdf 101
aluqard 0:3b83fc30bbdf 102 Timer arduino_timer;
aluqard 0:3b83fc30bbdf 103 /** start the arduino_timer timer for millis() and micros() running.
aluqard 0:3b83fc30bbdf 104 *
aluqard 0:3b83fc30bbdf 105 * @param void
aluqard 0:3b83fc30bbdf 106 */
aluqard 0:3b83fc30bbdf 107 void timer_start(void) {
aluqard 0:3b83fc30bbdf 108 arduino_timer.start();
aluqard 0:3b83fc30bbdf 109 }
aluqard 0:3b83fc30bbdf 110 /** return a long for the amount of time since the timer was started in milliseconds.
aluqard 0:3b83fc30bbdf 111 *
aluqard 0:3b83fc30bbdf 112 * @param void
aluqard 0:3b83fc30bbdf 113 */
aluqard 0:3b83fc30bbdf 114 long millis(void) {
aluqard 0:3b83fc30bbdf 115 return arduino_timer.read_ms();
aluqard 0:3b83fc30bbdf 116 }
aluqard 0:3b83fc30bbdf 117 /** return a long for the amount of time since the timer was started in microseconds.
aluqard 0:3b83fc30bbdf 118 *
aluqard 0:3b83fc30bbdf 119 * @param void
aluqard 0:3b83fc30bbdf 120 */
aluqard 0:3b83fc30bbdf 121 long micros(void) {
aluqard 0:3b83fc30bbdf 122 return arduino_timer.read_us();
aluqard 0:3b83fc30bbdf 123 }
aluqard 0:3b83fc30bbdf 124
aluqard 0:3b83fc30bbdf 125
aluqard 0:3b83fc30bbdf 126 /*****************************************************
aluqard 0:3b83fc30bbdf 127 Maths
aluqard 0:3b83fc30bbdf 128
aluqard 0:3b83fc30bbdf 129 min() - done by Macro
aluqard 0:3b83fc30bbdf 130 max() - done by Macro
aluqard 0:3b83fc30bbdf 131 abs() - done by Macro
aluqard 0:3b83fc30bbdf 132 constrain() - TODO
aluqard 0:3b83fc30bbdf 133 map() - TODO
aluqard 0:3b83fc30bbdf 134 pow() - implemented by including math.h
aluqard 0:3b83fc30bbdf 135 sqrt() - implemented by including math.h
aluqard 0:3b83fc30bbdf 136
aluqard 0:3b83fc30bbdf 137 *****************************************************/
aluqard 0:3b83fc30bbdf 138
aluqard 0:3b83fc30bbdf 139
aluqard 0:3b83fc30bbdf 140 /*****************************************************
aluqard 0:3b83fc30bbdf 141 Trigonometry
aluqard 0:3b83fc30bbdf 142
aluqard 0:3b83fc30bbdf 143 sin() - implemented by including math.h
aluqard 0:3b83fc30bbdf 144 cos() - implemented by including math.h
aluqard 0:3b83fc30bbdf 145 tan() - implemented by including math.h
aluqard 0:3b83fc30bbdf 146
aluqard 0:3b83fc30bbdf 147 *****************************************************/
aluqard 0:3b83fc30bbdf 148
aluqard 0:3b83fc30bbdf 149 /*****************************************************
aluqard 0:3b83fc30bbdf 150 Random Numbers
aluqard 0:3b83fc30bbdf 151
aluqard 0:3b83fc30bbdf 152 randomSeed() - done by Macro
aluqard 0:3b83fc30bbdf 153 random() - function below
aluqard 0:3b83fc30bbdf 154
aluqard 0:3b83fc30bbdf 155 *****************************************************/
aluqard 0:3b83fc30bbdf 156
aluqard 0:3b83fc30bbdf 157 /** generates a random number from 0 to defined number
aluqard 0:3b83fc30bbdf 158 *
aluqard 0:3b83fc30bbdf 159 * @param number maximum value for random number
aluqard 0:3b83fc30bbdf 160 */
aluqard 0:3b83fc30bbdf 161 int random(int number) {
aluqard 0:3b83fc30bbdf 162 return (rand()%number);
aluqard 0:3b83fc30bbdf 163 }
aluqard 0:3b83fc30bbdf 164 /** generates a random number between two numbers
aluqard 0:3b83fc30bbdf 165 *
aluqard 0:3b83fc30bbdf 166 * @param numberone minimum value for random number
aluqard 0:3b83fc30bbdf 167 * @param numbertwo maximum value for random number
aluqard 0:3b83fc30bbdf 168 */
aluqard 0:3b83fc30bbdf 169 int random(int numberone, int numbertwo) {
aluqard 0:3b83fc30bbdf 170 int random = 0;
aluqard 0:3b83fc30bbdf 171 if ((numberone < 0) && (numbertwo < 0)) {
aluqard 0:3b83fc30bbdf 172 numberone = numberone * -1;
aluqard 0:3b83fc30bbdf 173 numbertwo = numbertwo * -1;
aluqard 0:3b83fc30bbdf 174 random = -1 * (rand()%(numberone + numbertwo));
aluqard 0:3b83fc30bbdf 175 }
aluqard 0:3b83fc30bbdf 176 if ((numbertwo < 0) && (numberone >= 0)) {
aluqard 0:3b83fc30bbdf 177 numbertwo = numbertwo * -1;
aluqard 0:3b83fc30bbdf 178 random = (rand()%(numberone + numbertwo)) - numbertwo;
aluqard 0:3b83fc30bbdf 179 }
aluqard 0:3b83fc30bbdf 180 if ((numberone < 0) && (numbertwo >= 0)) {
aluqard 0:3b83fc30bbdf 181 numberone = numberone * -1;
aluqard 0:3b83fc30bbdf 182 random = (rand()%(numberone + numbertwo)) - numberone;
aluqard 0:3b83fc30bbdf 183 } else {
aluqard 0:3b83fc30bbdf 184 random = (rand()%(numberone + numbertwo)) - min(numberone, numbertwo);
aluqard 0:3b83fc30bbdf 185 }
aluqard 0:3b83fc30bbdf 186 return random;
aluqard 0:3b83fc30bbdf 187 }
aluqard 0:3b83fc30bbdf 188
aluqard 0:3b83fc30bbdf 189 /*****************************************************
aluqard 0:3b83fc30bbdf 190 Bits and Bytes
aluqard 0:3b83fc30bbdf 191
aluqard 0:3b83fc30bbdf 192 lowByte() - function below
aluqard 0:3b83fc30bbdf 193 highByte() - function below
aluqard 0:3b83fc30bbdf 194 bitRead() - TODO
aluqard 0:3b83fc30bbdf 195 bitWrite() - TODO
aluqard 0:3b83fc30bbdf 196 bitSet() - TODO
aluqard 0:3b83fc30bbdf 197 bitClear() - TODO
aluqard 0:3b83fc30bbdf 198 bit() - TODO
aluqard 0:3b83fc30bbdf 199
aluqard 0:3b83fc30bbdf 200 *****************************************************/
aluqard 0:3b83fc30bbdf 201
aluqard 0:3b83fc30bbdf 202 /** returns the lower nibble of first byte
aluqard 0:3b83fc30bbdf 203 *
aluqard 0:3b83fc30bbdf 204 * @param high byte of which the high nibble is required
aluqard 0:3b83fc30bbdf 205 */
aluqard 0:3b83fc30bbdf 206 byte lowByte(short int low) {
aluqard 0:3b83fc30bbdf 207 byte bytelow = 0;
aluqard 0:3b83fc30bbdf 208 bytelow = (low & 0xFF);
aluqard 0:3b83fc30bbdf 209 return bytelow;
aluqard 0:3b83fc30bbdf 210 }
aluqard 0:3b83fc30bbdf 211 /** returns the higher nibble of first byte
aluqard 0:3b83fc30bbdf 212 *
aluqard 0:3b83fc30bbdf 213 * @param high byte of which the high nibble is required
aluqard 0:3b83fc30bbdf 214 */
aluqard 0:3b83fc30bbdf 215 byte highByte(short int high) {
aluqard 0:3b83fc30bbdf 216 byte bytehigh = 0;
aluqard 0:3b83fc30bbdf 217 bytehigh = ((high >> 8) & 0xFF);
aluqard 0:3b83fc30bbdf 218 return bytehigh;
aluqard 0:3b83fc30bbdf 219 }
aluqard 0:3b83fc30bbdf 220
aluqard 0:3b83fc30bbdf 221
aluqard 0:3b83fc30bbdf 222
aluqard 0:3b83fc30bbdf 223 /*****************************************************
aluqard 0:3b83fc30bbdf 224 External Interrupts
aluqard 0:3b83fc30bbdf 225
aluqard 0:3b83fc30bbdf 226 attachInterrupt() - TODO
aluqard 0:3b83fc30bbdf 227 detachInterrupt() - TODO
aluqard 0:3b83fc30bbdf 228
aluqard 0:3b83fc30bbdf 229 *****************************************************/
aluqard 0:3b83fc30bbdf 230
aluqard 0:3b83fc30bbdf 231 /*****************************************************
aluqard 0:3b83fc30bbdf 232 Interrupts
aluqard 0:3b83fc30bbdf 233
aluqard 0:3b83fc30bbdf 234 interrupts() - TODO
aluqard 0:3b83fc30bbdf 235 noInterrupts() - TODO
aluqard 0:3b83fc30bbdf 236
aluqard 0:3b83fc30bbdf 237 *****************************************************/
aluqard 0:3b83fc30bbdf 238
aluqard 0:3b83fc30bbdf 239 /*****************************************************
aluqard 0:3b83fc30bbdf 240 Communication
aluqard 0:3b83fc30bbdf 241
aluqard 0:3b83fc30bbdf 242 Serial - TODO
aluqard 0:3b83fc30bbdf 243 Stream - TODO
aluqard 0:3b83fc30bbdf 244
gastonfeng 2:f032b07dbff0 245 *****************************************************/