Директива define

#define это удобная директива, который позволяет дать имя константе перед тем как программа будет скомпилирована. Определенные этой директивой константы не занимают программной памяти, поскольку компилятор заменяет все обращения к ним их значениями на этапе компиляции, соответственно они служат исключительно для удобства программиста и улучшения читаемости текста программы.

Стоит упомянуть о некотором нежелательном эффекте, который может иметь место при использовании директивы #define. Например, если имя константы, заданное с помощью директивы #define включить в имя другой константы или переменной, то оно будет заменено на свое значение.

В общем случае рекомендуется использовать выражение const для определения констант вместо #define

Синтаксис для Arduino такой же как и для C:

Синтаксис:

#define constantName value
Внимание! Символ # перед словом define обязателен.
Пример

#define ledPin 3
// компилятор заменит любое упоминание ledPin на значение 3 во время компиляции
Замечание по использованию

Обратите внимание, что точка с запятой не ставится, иначе компилятор выдаст критическую ошибку.
#define ledPin 3; // это ошибка, ; здесь не нужна
Точно так же знак равно после имени константы тоже вызовет критическую ошибку компилятора.
#define ledPin = 3 // это тоже ошибка, знак = не нужен