# A Beginner's Arduino Guide/Arduino Language

The Arduino Language is the set of words, expressions and rules that are used to create Arduino Sketches.
The Arduino Language is based on C and C++
The Arduino Language allows for the use of any functions from the 'AVR Libc' which is a subset of the standard C library for Atmel AVR 8-bit RISC micro-controllers
The language is made up of keywords that are written based on rules.

## Arduino Keywords

The keywords used to create the sketches can be divided into three types- Functions ,Structures and Values ( Values can be either Constants or Variables).
Below are a non-exhaustive list of standard Arduino sketch words, to add words, new libraries can be imported into the IDE.

### Functions

Functions are small groups of code that do a single task or group of tasks (they have one function). They include
| Category | Keyword |
| Digital I/O | pinMode digitalWrite digitalRead |
| Analog I/O | analogReference analogRead analogWrite - PWM |
| Due & Zero only | analogReadResolution analogWriteResolution |
| Advanced I/O | tone noTone shiftOut shiftIn pulseIn |
| Time | millis micros delay delayMicroseconds |
| Math | min max abs constrain map pow sqrt |
| Trigonometry | sin cos tan |
| Characters | isAlphaNumeric isAlpha isAscii isWhitespace isControl isDigit isGraph isLowerCase isPrintable isPunct isSpace isUpperCase isHexadecimalDigit |
| Random Numbers | randomSeed random |
| Bits and Bytes | lowByte highByte bitRead bitWrite bitSet bitClear bit |
| External Interrupts | attachInterrupt detachInterrupt |
| Interrupts | interrupts noInterrupts |
| Communication | Serial Stream |
| USB (32u4 based boards and Due/Zero only) | Keyboard Mouse |
Structures these are words used to create a flow or structure in the program. they include
| Category | Keyword |
| Overall Structure | setup loop |
| Control Structures | if if...else for switch case while do... while break continue return goto |
| Arithmetic Operators | = (assignment operator) + (addition) - (subtraction) * (multiplication) / (division)  % (modulo) |
| Comparison Operators | == (equal to)  != (not equal to) < (less than) > (greater than) <= (less than or equal to) >= (greater than or equal to) |
| Boolean Operators | && (and) | (or)  ! (not) |
| Bitwise Operators | & (bitwise and) | (bitwise or) ^ (bitwise xor) ~ (bitwise not) << (bitshift left) >> (bitshift right) |
| Compound Operators | ++ (increment) -- (decrement) += (compound addition) -= (compound subtraction) *= (compound multiplication) /= (compound division)  %= (compound modulo) &= (compound bitwise and) |= (compound bitwise or) |
| Pointer Access Operators | * dereference operator & reference operator |
| Syntax | ; (semicolon) (curly braces) // (single line comment) /* */ (multi-line comment) #define #include |

### Values

These act like containers and hold a certain value they may be constant which implies a container whose value that doesn't change throughout the program or a variable, which implies a container whose value that does change.
| Category | Keyword |
| Constants | HIGH | LOW INPUT | OUTPUT | INPUT_PULLUP LED_BUILTIN true | false integer constants floating point constants |
| Data Types | void boolean char unsigned char byte int unsigned int word long unsigned long short float double string - char array String - object array |
| Conversion | char byte int word long float |
| Variable Scope & Qualifiers | variable scope static volatile const |
| Utilities | sizeof PROGMEM |