1) Не обнаружена плата ардуино.
Если вы пользуетесь клоном Ардуино (он дешевле и не хуже оригинала), скорее всего автоматически он не распознается. Заходим в Диспетчер устройств, проверяем порты COM n LPT - пусто. Находим в любом поисковике и скачиваем "драйвер для китайских ардуино" CH340G. Нажимаем INSTALL, проверяем порты COM n LPT , появилась плата "USB-SERIAL CH340".
2) При загрузке видим надпись:
Проверяем номер порта в Диспетчере.
После этого заходим в Ардуино=>Инструменты=>Порт, ставим галочку с нужным номером порта. Заодно там же проверяем название платы и если у вас Ардуино Nano, то сверяем процессор, ставим галочку. Проверяем работоспособность ардуино: Файл => Примеры => Basics => Blink. Загружаем программу. Встроенный светодиод L на плате должен мигать с интервалом в 1 секунду. Мигает? - Плата в порядке. При любых сомнениях здоровья платы заливаем именно эту программу.
3)Скролим и читаем выше.
Возможно будет: avrdude: ser_open(): can't open device "\\.\COM18": Не удается найти указанный файл. Значит порт потерял плату. Помогает отсоединить и снова подключить ардуино. Если нет, то проверяем номер порта, название платы, процессор.
4) Синтаксис.
Строчкой выше забыли поставить точку с запятой ";".
Забыли скобку или поставили лишнюю. Считайте скобки на указанной строчке и/или выше
5) Библиотека.
Снова скроллим и читаем выше. fatal error: Adafruit_NeoPixels.h: No such file or directory
#include <Adafruit_NeoPixels.h>
Не может найти библиотеку, на которую мы ссылаемся в самом начале кода. Что делать?
Скачиваем библиотеку с Github или где найдете. Сохраняете zip файл. Заходите Ардуино => Скеч => Подключить библиотеку =>Добавить ZIP библиотеку и указываете скаченный файл.
6) Автор, ты о чем?
Ура! Зеленое окошко, загрузка завершена. Почему не работает? Частая новичковая ошибка.
А, собственно, что должно работать? Вы попросили плату считать данные с датчика на пине А5 (analogRead(A5);). Плата данные считала. Плата молодец. Вы не просили что-то делать с этими данными.
Если вы хотите воспользоваться данными, то пишем условие if (analogRead(A5)...) {действие;}.
Если хотите просто посмотреть, какие данные приходят с датчика, то открываем монитор порта, а в коде прописываем:
void setup() {
Serial.begin (9600) ; //запустить монитор порта
}
void loop() {
Serial.println (analogRead(A5)); //выдать данные с А5 в монитор порта
}
7) Снова синтаксис.
Скорее всего выше ошиблись в фигурных скобках. Поставили лишнюю или какую-то не закрыли. Или закрыли цикл loop () {....} и за ним написали строчки кода. Проверяем скобки.
Между условием и действием, которое должно выполняться, если условие верно, точку с запятой НЕ ставят!!!
if (analogRead(A5)...) {действие;}
8) Переменные. Вы ввели некую переменную led (вместо пина 13). Для платы это просто слово и что к нему привязать она не знает.
Объясните ардуино что означает слово led.
Если это просто имя для пина 13, то перед void setup пишем:
#define led 13
если с этим словом дальше придется выполнять различные действия (прибавлять, убавлять, вписывать в него данные с датчиков), пишем перед void setup int led; и внимательно читаем тему про переменные и их виды.
9) Одно имя для двух переменных.
Вы использовали одно и то же имя переменной для двух разных операций. Каждой переменной присваиваются свои данные. Не должно быть переменных с одинаковыми именами.
10) Что в имени тебе моем?
Название переменной должно быть без пробелов. Допускается только нижнее подчеркивание. И следим за регистром (Прописные или строчные буквы).