10 частых ошибок при работе с Arduino

 


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) Что в имени тебе моем?

Название переменной должно быть без пробелов. Допускается только нижнее подчеркивание. И следим за регистром (Прописные или строчные буквы).