Last active
October 25, 2020 18:06
-
-
Save kris-jusiak/db980ff95450ed052053ac12182cd810 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Arduino.h - Main include file for the Arduino SDK | |
Copyright (c) 2005-2013 Arduino Team. All right reserved. | |
This library is free software; you can redistribute it and/or | |
modify it under the terms of the GNU Lesser General Public | |
License as published by the Free Software Foundation; either | |
version 2.1 of the License, or (at your option) any later version. | |
This library is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
Lesser General Public License for more details. | |
You should have received a copy of the GNU Lesser General Public | |
License along with this library; if not, write to the Free Software | |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
*/ | |
#ifndef Arduino_h | |
#define Arduino_h | |
#include <stdlib.h> | |
#include <stdbool.h> | |
#include <string.h> | |
#include <math.h> | |
#include <avr/pgmspace.h> | |
#include <avr/io.h> | |
#include <avr/interrupt.h> | |
/* | |
binary.h - Definitions for binary constants | |
Copyright (c) 2006 David A. Mellis. All right reserved. | |
This library is free software; you can redistribute it and/or | |
modify it under the terms of the GNU Lesser General Public | |
License as published by the Free Software Foundation; either | |
version 2.1 of the License, or (at your option) any later version. | |
This library is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
Lesser General Public License for more details. | |
You should have received a copy of the GNU Lesser General Public | |
License along with this library; if not, write to the Free Software | |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
*/ | |
#ifndef Binary_h | |
#define Binary_h | |
#define B0 0 | |
#define B00 0 | |
#define B000 0 | |
#define B0000 0 | |
#define B00000 0 | |
#define B000000 0 | |
#define B0000000 0 | |
#define B00000000 0 | |
#define B1 1 | |
#define B01 1 | |
#define B001 1 | |
#define B0001 1 | |
#define B00001 1 | |
#define B000001 1 | |
#define B0000001 1 | |
#define B00000001 1 | |
#define B10 2 | |
#define B010 2 | |
#define B0010 2 | |
#define B00010 2 | |
#define B000010 2 | |
#define B0000010 2 | |
#define B00000010 2 | |
#define B11 3 | |
#define B011 3 | |
#define B0011 3 | |
#define B00011 3 | |
#define B000011 3 | |
#define B0000011 3 | |
#define B00000011 3 | |
#define B100 4 | |
#define B0100 4 | |
#define B00100 4 | |
#define B000100 4 | |
#define B0000100 4 | |
#define B00000100 4 | |
#define B101 5 | |
#define B0101 5 | |
#define B00101 5 | |
#define B000101 5 | |
#define B0000101 5 | |
#define B00000101 5 | |
#define B110 6 | |
#define B0110 6 | |
#define B00110 6 | |
#define B000110 6 | |
#define B0000110 6 | |
#define B00000110 6 | |
#define B111 7 | |
#define B0111 7 | |
#define B00111 7 | |
#define B000111 7 | |
#define B0000111 7 | |
#define B00000111 7 | |
#define B1000 8 | |
#define B01000 8 | |
#define B001000 8 | |
#define B0001000 8 | |
#define B00001000 8 | |
#define B1001 9 | |
#define B01001 9 | |
#define B001001 9 | |
#define B0001001 9 | |
#define B00001001 9 | |
#define B1010 10 | |
#define B01010 10 | |
#define B001010 10 | |
#define B0001010 10 | |
#define B00001010 10 | |
#define B1011 11 | |
#define B01011 11 | |
#define B001011 11 | |
#define B0001011 11 | |
#define B00001011 11 | |
#define B1100 12 | |
#define B01100 12 | |
#define B001100 12 | |
#define B0001100 12 | |
#define B00001100 12 | |
#define B1101 13 | |
#define B01101 13 | |
#define B001101 13 | |
#define B0001101 13 | |
#define B00001101 13 | |
#define B1110 14 | |
#define B01110 14 | |
#define B001110 14 | |
#define B0001110 14 | |
#define B00001110 14 | |
#define B1111 15 | |
#define B01111 15 | |
#define B001111 15 | |
#define B0001111 15 | |
#define B00001111 15 | |
#define B10000 16 | |
#define B010000 16 | |
#define B0010000 16 | |
#define B00010000 16 | |
#define B10001 17 | |
#define B010001 17 | |
#define B0010001 17 | |
#define B00010001 17 | |
#define B10010 18 | |
#define B010010 18 | |
#define B0010010 18 | |
#define B00010010 18 | |
#define B10011 19 | |
#define B010011 19 | |
#define B0010011 19 | |
#define B00010011 19 | |
#define B10100 20 | |
#define B010100 20 | |
#define B0010100 20 | |
#define B00010100 20 | |
#define B10101 21 | |
#define B010101 21 | |
#define B0010101 21 | |
#define B00010101 21 | |
#define B10110 22 | |
#define B010110 22 | |
#define B0010110 22 | |
#define B00010110 22 | |
#define B10111 23 | |
#define B010111 23 | |
#define B0010111 23 | |
#define B00010111 23 | |
#define B11000 24 | |
#define B011000 24 | |
#define B0011000 24 | |
#define B00011000 24 | |
#define B11001 25 | |
#define B011001 25 | |
#define B0011001 25 | |
#define B00011001 25 | |
#define B11010 26 | |
#define B011010 26 | |
#define B0011010 26 | |
#define B00011010 26 | |
#define B11011 27 | |
#define B011011 27 | |
#define B0011011 27 | |
#define B00011011 27 | |
#define B11100 28 | |
#define B011100 28 | |
#define B0011100 28 | |
#define B00011100 28 | |
#define B11101 29 | |
#define B011101 29 | |
#define B0011101 29 | |
#define B00011101 29 | |
#define B11110 30 | |
#define B011110 30 | |
#define B0011110 30 | |
#define B00011110 30 | |
#define B11111 31 | |
#define B011111 31 | |
#define B0011111 31 | |
#define B00011111 31 | |
#define B100000 32 | |
#define B0100000 32 | |
#define B00100000 32 | |
#define B100001 33 | |
#define B0100001 33 | |
#define B00100001 33 | |
#define B100010 34 | |
#define B0100010 34 | |
#define B00100010 34 | |
#define B100011 35 | |
#define B0100011 35 | |
#define B00100011 35 | |
#define B100100 36 | |
#define B0100100 36 | |
#define B00100100 36 | |
#define B100101 37 | |
#define B0100101 37 | |
#define B00100101 37 | |
#define B100110 38 | |
#define B0100110 38 | |
#define B00100110 38 | |
#define B100111 39 | |
#define B0100111 39 | |
#define B00100111 39 | |
#define B101000 40 | |
#define B0101000 40 | |
#define B00101000 40 | |
#define B101001 41 | |
#define B0101001 41 | |
#define B00101001 41 | |
#define B101010 42 | |
#define B0101010 42 | |
#define B00101010 42 | |
#define B101011 43 | |
#define B0101011 43 | |
#define B00101011 43 | |
#define B101100 44 | |
#define B0101100 44 | |
#define B00101100 44 | |
#define B101101 45 | |
#define B0101101 45 | |
#define B00101101 45 | |
#define B101110 46 | |
#define B0101110 46 | |
#define B00101110 46 | |
#define B101111 47 | |
#define B0101111 47 | |
#define B00101111 47 | |
#define B110000 48 | |
#define B0110000 48 | |
#define B00110000 48 | |
#define B110001 49 | |
#define B0110001 49 | |
#define B00110001 49 | |
#define B110010 50 | |
#define B0110010 50 | |
#define B00110010 50 | |
#define B110011 51 | |
#define B0110011 51 | |
#define B00110011 51 | |
#define B110100 52 | |
#define B0110100 52 | |
#define B00110100 52 | |
#define B110101 53 | |
#define B0110101 53 | |
#define B00110101 53 | |
#define B110110 54 | |
#define B0110110 54 | |
#define B00110110 54 | |
#define B110111 55 | |
#define B0110111 55 | |
#define B00110111 55 | |
#define B111000 56 | |
#define B0111000 56 | |
#define B00111000 56 | |
#define B111001 57 | |
#define B0111001 57 | |
#define B00111001 57 | |
#define B111010 58 | |
#define B0111010 58 | |
#define B00111010 58 | |
#define B111011 59 | |
#define B0111011 59 | |
#define B00111011 59 | |
#define B111100 60 | |
#define B0111100 60 | |
#define B00111100 60 | |
#define B111101 61 | |
#define B0111101 61 | |
#define B00111101 61 | |
#define B111110 62 | |
#define B0111110 62 | |
#define B00111110 62 | |
#define B111111 63 | |
#define B0111111 63 | |
#define B00111111 63 | |
#define B1000000 64 | |
#define B01000000 64 | |
#define B1000001 65 | |
#define B01000001 65 | |
#define B1000010 66 | |
#define B01000010 66 | |
#define B1000011 67 | |
#define B01000011 67 | |
#define B1000100 68 | |
#define B01000100 68 | |
#define B1000101 69 | |
#define B01000101 69 | |
#define B1000110 70 | |
#define B01000110 70 | |
#define B1000111 71 | |
#define B01000111 71 | |
#define B1001000 72 | |
#define B01001000 72 | |
#define B1001001 73 | |
#define B01001001 73 | |
#define B1001010 74 | |
#define B01001010 74 | |
#define B1001011 75 | |
#define B01001011 75 | |
#define B1001100 76 | |
#define B01001100 76 | |
#define B1001101 77 | |
#define B01001101 77 | |
#define B1001110 78 | |
#define B01001110 78 | |
#define B1001111 79 | |
#define B01001111 79 | |
#define B1010000 80 | |
#define B01010000 80 | |
#define B1010001 81 | |
#define B01010001 81 | |
#define B1010010 82 | |
#define B01010010 82 | |
#define B1010011 83 | |
#define B01010011 83 | |
#define B1010100 84 | |
#define B01010100 84 | |
#define B1010101 85 | |
#define B01010101 85 | |
#define B1010110 86 | |
#define B01010110 86 | |
#define B1010111 87 | |
#define B01010111 87 | |
#define B1011000 88 | |
#define B01011000 88 | |
#define B1011001 89 | |
#define B01011001 89 | |
#define B1011010 90 | |
#define B01011010 90 | |
#define B1011011 91 | |
#define B01011011 91 | |
#define B1011100 92 | |
#define B01011100 92 | |
#define B1011101 93 | |
#define B01011101 93 | |
#define B1011110 94 | |
#define B01011110 94 | |
#define B1011111 95 | |
#define B01011111 95 | |
#define B1100000 96 | |
#define B01100000 96 | |
#define B1100001 97 | |
#define B01100001 97 | |
#define B1100010 98 | |
#define B01100010 98 | |
#define B1100011 99 | |
#define B01100011 99 | |
#define B1100100 100 | |
#define B01100100 100 | |
#define B1100101 101 | |
#define B01100101 101 | |
#define B1100110 102 | |
#define B01100110 102 | |
#define B1100111 103 | |
#define B01100111 103 | |
#define B1101000 104 | |
#define B01101000 104 | |
#define B1101001 105 | |
#define B01101001 105 | |
#define B1101010 106 | |
#define B01101010 106 | |
#define B1101011 107 | |
#define B01101011 107 | |
#define B1101100 108 | |
#define B01101100 108 | |
#define B1101101 109 | |
#define B01101101 109 | |
#define B1101110 110 | |
#define B01101110 110 | |
#define B1101111 111 | |
#define B01101111 111 | |
#define B1110000 112 | |
#define B01110000 112 | |
#define B1110001 113 | |
#define B01110001 113 | |
#define B1110010 114 | |
#define B01110010 114 | |
#define B1110011 115 | |
#define B01110011 115 | |
#define B1110100 116 | |
#define B01110100 116 | |
#define B1110101 117 | |
#define B01110101 117 | |
#define B1110110 118 | |
#define B01110110 118 | |
#define B1110111 119 | |
#define B01110111 119 | |
#define B1111000 120 | |
#define B01111000 120 | |
#define B1111001 121 | |
#define B01111001 121 | |
#define B1111010 122 | |
#define B01111010 122 | |
#define B1111011 123 | |
#define B01111011 123 | |
#define B1111100 124 | |
#define B01111100 124 | |
#define B1111101 125 | |
#define B01111101 125 | |
#define B1111110 126 | |
#define B01111110 126 | |
#define B1111111 127 | |
#define B01111111 127 | |
#define B10000000 128 | |
#define B10000001 129 | |
#define B10000010 130 | |
#define B10000011 131 | |
#define B10000100 132 | |
#define B10000101 133 | |
#define B10000110 134 | |
#define B10000111 135 | |
#define B10001000 136 | |
#define B10001001 137 | |
#define B10001010 138 | |
#define B10001011 139 | |
#define B10001100 140 | |
#define B10001101 141 | |
#define B10001110 142 | |
#define B10001111 143 | |
#define B10010000 144 | |
#define B10010001 145 | |
#define B10010010 146 | |
#define B10010011 147 | |
#define B10010100 148 | |
#define B10010101 149 | |
#define B10010110 150 | |
#define B10010111 151 | |
#define B10011000 152 | |
#define B10011001 153 | |
#define B10011010 154 | |
#define B10011011 155 | |
#define B10011100 156 | |
#define B10011101 157 | |
#define B10011110 158 | |
#define B10011111 159 | |
#define B10100000 160 | |
#define B10100001 161 | |
#define B10100010 162 | |
#define B10100011 163 | |
#define B10100100 164 | |
#define B10100101 165 | |
#define B10100110 166 | |
#define B10100111 167 | |
#define B10101000 168 | |
#define B10101001 169 | |
#define B10101010 170 | |
#define B10101011 171 | |
#define B10101100 172 | |
#define B10101101 173 | |
#define B10101110 174 | |
#define B10101111 175 | |
#define B10110000 176 | |
#define B10110001 177 | |
#define B10110010 178 | |
#define B10110011 179 | |
#define B10110100 180 | |
#define B10110101 181 | |
#define B10110110 182 | |
#define B10110111 183 | |
#define B10111000 184 | |
#define B10111001 185 | |
#define B10111010 186 | |
#define B10111011 187 | |
#define B10111100 188 | |
#define B10111101 189 | |
#define B10111110 190 | |
#define B10111111 191 | |
#define B11000000 192 | |
#define B11000001 193 | |
#define B11000010 194 | |
#define B11000011 195 | |
#define B11000100 196 | |
#define B11000101 197 | |
#define B11000110 198 | |
#define B11000111 199 | |
#define B11001000 200 | |
#define B11001001 201 | |
#define B11001010 202 | |
#define B11001011 203 | |
#define B11001100 204 | |
#define B11001101 205 | |
#define B11001110 206 | |
#define B11001111 207 | |
#define B11010000 208 | |
#define B11010001 209 | |
#define B11010010 210 | |
#define B11010011 211 | |
#define B11010100 212 | |
#define B11010101 213 | |
#define B11010110 214 | |
#define B11010111 215 | |
#define B11011000 216 | |
#define B11011001 217 | |
#define B11011010 218 | |
#define B11011011 219 | |
#define B11011100 220 | |
#define B11011101 221 | |
#define B11011110 222 | |
#define B11011111 223 | |
#define B11100000 224 | |
#define B11100001 225 | |
#define B11100010 226 | |
#define B11100011 227 | |
#define B11100100 228 | |
#define B11100101 229 | |
#define B11100110 230 | |
#define B11100111 231 | |
#define B11101000 232 | |
#define B11101001 233 | |
#define B11101010 234 | |
#define B11101011 235 | |
#define B11101100 236 | |
#define B11101101 237 | |
#define B11101110 238 | |
#define B11101111 239 | |
#define B11110000 240 | |
#define B11110001 241 | |
#define B11110010 242 | |
#define B11110011 243 | |
#define B11110100 244 | |
#define B11110101 245 | |
#define B11110110 246 | |
#define B11110111 247 | |
#define B11111000 248 | |
#define B11111001 249 | |
#define B11111010 250 | |
#define B11111011 251 | |
#define B11111100 252 | |
#define B11111101 253 | |
#define B11111110 254 | |
#define B11111111 255 | |
#endif | |
#ifdef __cplusplus | |
extern "C"{ | |
#endif | |
void yield(void); | |
#define HIGH 0x1 | |
#define LOW 0x0 | |
#define INPUT 0x0 | |
#define OUTPUT 0x1 | |
#define INPUT_PULLUP 0x2 | |
#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 EULER 2.718281828459045235360287471352 | |
#define SERIAL 0x0 | |
#define DISPLAY 0x1 | |
#define LSBFIRST 0 | |
#define MSBFIRST 1 | |
#define CHANGE 1 | |
#define FALLING 2 | |
#define RISING 3 | |
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) | |
#define DEFAULT 0 | |
#define EXTERNAL 1 | |
#define INTERNAL1V1 2 | |
#define INTERNAL INTERNAL1V1 | |
#elif defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) | |
#define DEFAULT 0 | |
#define EXTERNAL 4 | |
#define INTERNAL1V1 8 | |
#define INTERNAL INTERNAL1V1 | |
#define INTERNAL2V56 9 | |
#define INTERNAL2V56_EXTCAP 13 | |
#else | |
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) | |
#define INTERNAL1V1 2 | |
#define INTERNAL2V56 3 | |
#else | |
#define INTERNAL 3 | |
#endif | |
#define DEFAULT 1 | |
#define EXTERNAL 0 | |
#endif | |
// undefine stdlib's abs if encountered | |
#ifdef abs | |
#undef abs | |
#endif | |
#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() ) | |
#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() ) | |
#define lowByte(w) ((uint8_t) ((w) & 0xff)) | |
#define highByte(w) ((uint8_t) ((w) >> 8)) | |
#define bitRead(value, bit) (((value) >> (bit)) & 0x01) | |
#define bitSet(value, bit) ((value) |= (1UL << (bit))) | |
#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) | |
#define bitToggle(value, bit) ((value) ^= (1UL << (bit))) | |
#define bitWrite(value, bit, bitvalue) ((bitvalue) ? bitSet(value, bit) : bitClear(value, bit)) | |
// avr-libc defines _NOP() since 1.6.2 | |
#ifndef _NOP | |
#define _NOP() do { __asm__ volatile ("nop"); } while (0) | |
#endif | |
typedef unsigned int word; | |
#define bit(b) (1UL << (b)) | |
typedef bool boolean; | |
typedef uint8_t byte; | |
void init(void); | |
void initVariant(void); | |
int atexit(void (*func)()) __attribute__((weak)); | |
void pinMode(uint8_t pin, uint8_t mode); | |
void digitalWrite(uint8_t pin, uint8_t val); | |
int digitalRead(uint8_t pin); | |
int analogRead(uint8_t pin); | |
void analogReference(uint8_t mode); | |
void analogWrite(uint8_t pin, int val); | |
unsigned long millis(void); | |
unsigned long micros(void); | |
void delay(unsigned long ms); | |
void delayMicroseconds(unsigned int us); | |
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); | |
unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout); | |
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); | |
uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); | |
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode); | |
void detachInterrupt(uint8_t interruptNum); | |
void setup(void); | |
void loop(void); | |
// Get the bit location within the hardware port of the given virtual pin. | |
// This comes from the pins_*.c file for the active board configuration. | |
#define analogInPinToBit(P) (P) | |
// On the ATmega1280, the addresses of some of the port registers are | |
// greater than 255, so we can't store them in uint8_t's. | |
extern const uint16_t PROGMEM port_to_mode_PGM[]; | |
extern const uint16_t PROGMEM port_to_input_PGM[]; | |
extern const uint16_t PROGMEM port_to_output_PGM[]; | |
extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; | |
// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; | |
extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; | |
extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; | |
// Get the bit location within the hardware port of the given virtual pin. | |
// This comes from the pins_*.c file for the active board configuration. | |
// | |
// These perform slightly better as macros compared to inline functions | |
// | |
#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) | |
#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) | |
#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) | |
#define analogInPinToBit(P) (P) | |
#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) | |
#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) | |
#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) | |
#define NOT_A_PIN 0 | |
#define NOT_A_PORT 0 | |
#define NOT_AN_INTERRUPT -1 | |
#ifdef ARDUINO_MAIN | |
#define PA 1 | |
#define PB 2 | |
#define PC 3 | |
#define PD 4 | |
#define PE 5 | |
#define PF 6 | |
#define PG 7 | |
#define PH 8 | |
#define PJ 10 | |
#define PK 11 | |
#define PL 12 | |
#endif | |
#define NOT_ON_TIMER 0 | |
#define TIMER0A 1 | |
#define TIMER0B 2 | |
#define TIMER1A 3 | |
#define TIMER1B 4 | |
#define TIMER1C 5 | |
#define TIMER2 6 | |
#define TIMER2A 7 | |
#define TIMER2B 8 | |
#define TIMER3A 9 | |
#define TIMER3B 10 | |
#define TIMER3C 11 | |
#define TIMER4A 12 | |
#define TIMER4B 13 | |
#define TIMER4C 14 | |
#define TIMER4D 15 | |
#define TIMER5A 16 | |
#define TIMER5B 17 | |
#define TIMER5C 18 | |
#ifdef __cplusplus | |
} // extern "C" | |
#endif | |
//#ifdef __cplusplus | |
//#include "WCharacter.h" | |
//#include "WString.h" | |
//#include "HardwareSerial.h" | |
//#include "USBAPI.h" | |
//#if defined(HAVE_HWSERIAL0) && defined(HAVE_CDCSERIAL) | |
//#error "Targets with both UART0 and CDC serial not supported" | |
//#endif | |
uint16_t makeWord(uint16_t w); | |
uint16_t makeWord(byte h, byte l); | |
#define word(...) makeWord(__VA_ARGS__) | |
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); | |
unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); | |
void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); | |
void noTone(uint8_t _pin); | |
// WMath prototypes | |
long random(long); | |
long random(long, long); | |
void randomSeed(unsigned long); | |
long map(long, long, long, long, long); | |
#endif | |
//#include "pins_arduino.h" | |
#ifndef Pins_Arduino_h | |
#define Pins_Arduino_h | |
#include <avr/pgmspace.h> | |
#define NUM_DIGITAL_PINS 20 | |
#define NUM_ANALOG_INPUTS 6 | |
#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1) | |
#if defined(__AVR_ATmega8__) | |
#define digitalPinHasPWM(p) ((p) == 9 || (p) == 10 || (p) == 11) | |
#else | |
#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11) | |
#endif | |
#define PIN_SPI_SS (10) | |
#define PIN_SPI_MOSI (11) | |
#define PIN_SPI_MISO (12) | |
#define PIN_SPI_SCK (13) | |
static const uint8_t SS = PIN_SPI_SS; | |
static const uint8_t MOSI = PIN_SPI_MOSI; | |
static const uint8_t MISO = PIN_SPI_MISO; | |
static const uint8_t SCK = PIN_SPI_SCK; | |
#define PIN_WIRE_SDA (18) | |
#define PIN_WIRE_SCL (19) | |
static const uint8_t SDA = PIN_WIRE_SDA; | |
static const uint8_t SCL = PIN_WIRE_SCL; | |
#define LED_BUILTIN 13 | |
#define PIN_A0 (14) | |
#define PIN_A1 (15) | |
#define PIN_A2 (16) | |
#define PIN_A3 (17) | |
#define PIN_A4 (18) | |
#define PIN_A5 (19) | |
#define PIN_A6 (20) | |
#define PIN_A7 (21) | |
static const uint8_t A0 = PIN_A0; | |
static const uint8_t A1 = PIN_A1; | |
static const uint8_t A2 = PIN_A2; | |
static const uint8_t A3 = PIN_A3; | |
static const uint8_t A4 = PIN_A4; | |
static const uint8_t A5 = PIN_A5; | |
static const uint8_t A6 = PIN_A6; | |
static const uint8_t A7 = PIN_A7; | |
#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0)) | |
#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1)) | |
#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0)))) | |
#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14))) | |
#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) | |
#ifdef ARDUINO_MAIN | |
// On the Arduino board, digital pins are also used | |
// for the analog output (software PWM). Analog input | |
// pins are a separate set. | |
// ATMEL ATMEGA8 & 168 / ARDUINO | |
// | |
// +-\/-+ | |
// PC6 1| |28 PC5 (AI 5) | |
// (D 0) PD0 2| |27 PC4 (AI 4) | |
// (D 1) PD1 3| |26 PC3 (AI 3) | |
// (D 2) PD2 4| |25 PC2 (AI 2) | |
// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) | |
// (D 4) PD4 6| |23 PC0 (AI 0) | |
// VCC 7| |22 GND | |
// GND 8| |21 AREF | |
// PB6 9| |20 AVCC | |
// PB7 10| |19 PB5 (D 13) | |
// PWM+ (D 5) PD5 11| |18 PB4 (D 12) | |
// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM | |
// (D 7) PD7 13| |16 PB2 (D 10) PWM | |
// (D 8) PB0 14| |15 PB1 (D 9) PWM | |
// +----+ | |
// | |
// (PWM+ indicates the additional PWM pins on the ATmega168.) | |
// ATMEL ATMEGA1280 / ARDUINO | |
// | |
// 0-7 PE0-PE7 works | |
// 8-13 PB0-PB5 works | |
// 14-21 PA0-PA7 works | |
// 22-29 PH0-PH7 works | |
// 30-35 PG5-PG0 works | |
// 36-43 PC7-PC0 works | |
// 44-51 PJ7-PJ0 works | |
// 52-59 PL7-PL0 works | |
// 60-67 PD7-PD0 works | |
// A0-A7 PF0-PF7 | |
// A8-A15 PK0-PK7 | |
// these arrays map port names (e.g. port B) to the | |
// appropriate addresses for various functions (e.g. reading | |
// and writing) | |
const uint16_t PROGMEM port_to_mode_PGM[] = { | |
NOT_A_PORT, | |
NOT_A_PORT, | |
(uint16_t) &DDRB, | |
(uint16_t) &DDRC, | |
(uint16_t) &DDRD, | |
}; | |
const uint16_t PROGMEM port_to_output_PGM[] = { | |
NOT_A_PORT, | |
NOT_A_PORT, | |
(uint16_t) &PORTB, | |
(uint16_t) &PORTC, | |
(uint16_t) &PORTD, | |
}; | |
const uint16_t PROGMEM port_to_input_PGM[] = { | |
NOT_A_PORT, | |
NOT_A_PORT, | |
(uint16_t) &PINB, | |
(uint16_t) &PINC, | |
(uint16_t) &PIND, | |
}; | |
const uint8_t PROGMEM digital_pin_to_port_PGM[] = { | |
PD, /* 0 */ | |
PD, | |
PD, | |
PD, | |
PD, | |
PD, | |
PD, | |
PD, | |
PB, /* 8 */ | |
PB, | |
PB, | |
PB, | |
PB, | |
PB, | |
PC, /* 14 */ | |
PC, | |
PC, | |
PC, | |
PC, | |
PC, | |
}; | |
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { | |
_BV(0), /* 0, port D */ | |
_BV(1), | |
_BV(2), | |
_BV(3), | |
_BV(4), | |
_BV(5), | |
_BV(6), | |
_BV(7), | |
_BV(0), /* 8, port B */ | |
_BV(1), | |
_BV(2), | |
_BV(3), | |
_BV(4), | |
_BV(5), | |
_BV(0), /* 14, port C */ | |
_BV(1), | |
_BV(2), | |
_BV(3), | |
_BV(4), | |
_BV(5), | |
}; | |
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { | |
NOT_ON_TIMER, /* 0 - port D */ | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, | |
// on the ATmega168, digital pin 3 has hardware pwm | |
#if defined(__AVR_ATmega8__) | |
NOT_ON_TIMER, | |
#else | |
TIMER2B, | |
#endif | |
NOT_ON_TIMER, | |
// on the ATmega168, digital pins 5 and 6 have hardware pwm | |
#if defined(__AVR_ATmega8__) | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, | |
#else | |
TIMER0B, | |
TIMER0A, | |
#endif | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, /* 8 - port B */ | |
TIMER1A, | |
TIMER1B, | |
#if defined(__AVR_ATmega8__) | |
TIMER2, | |
#else | |
TIMER2A, | |
#endif | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, /* 14 - port C */ | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, | |
NOT_ON_TIMER, | |
}; | |
#endif | |
// These serial port names are intended to allow libraries and architecture-neutral | |
// sketches to automatically default to the correct port name for a particular type | |
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, | |
// the first hardware serial port whose RX/TX pins are not dedicated to another use. | |
// | |
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor | |
// | |
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial | |
// | |
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library | |
// | |
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. | |
// | |
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX | |
// pins are NOT connected to anything by default. | |
#define SERIAL_PORT_MONITOR Serial | |
#define SERIAL_PORT_HARDWARE Serial | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment