Arduino15 channel
14 subscribers
32 photos
3 videos
21 links
Этот канал про проекты и уроки на Arduino, esp и т.д!

ЧАТ: @Arduino15Chat
Канал с библиотеками: https://t.me/Arduino15Libs
Download Telegram
Сегодня, как и ожидалось, мы будем программировать нану. Сначала надо установить ардуино иде, заходим на офф.сайт, тычем на версию 1,8 если система 32 битная и виндовс 7 и выше, если ниже, то 1.6.13, а если 64, то можно ставить версию 2,2(можно и меньше). Теперь нужно поставить драйвер на ch340 по этой ссылке(кстати на этом сайте хорошо описан процесс установки, всё таки в телеграме есть ограничение на длину текста) . Потом запускаем ардуино иде, заходим в инструменты->плата->(AVR boards->)arduino nano. Далее, если плата китайская, надо в инструменты->процессор(загрузчик) и меняем на ATmega328p old bootloader,а порт меняем на любой, кроме com1. Если других нет, проблема с платой или кабелем.Для проверки платы можно загрузить тестовую прошивку. Она называется блинк и мигает встроенным диодом на плате. Чтобы её загрузить, переходим в файл->примеры->basic->blinc, ждём пока всё загрузится и нажимаем стрелочку в верхнем левом углу или ctrl+u. Всё! Спустя пару секунд диод начнёт мигать.
А теперь сравнение другой ардуины уны и уже известной наны:у уны столько же памяти, но унаны на 2 ноги больше. 1:0 в пользу наны.
Уна большая. Нет, огромная! А нана компактная. 2:0 в пользу наны.
Нана втыкается в макетную плату. Или по простому, в макетку. Уна висит на проводочках. 3:0.
Нану можно паять для всяких самоделок. С уной так нельзя делать. Или будет очень неудобно. 4:0
У некоторых нан разъём для прошивки микро юсб. Он легко отрывается. Стандартный для нан мини юсб сложнее оторвать. У уны громоздкий и малоудобный юсб тип б. Его практически невозможно сломать. 4:0,5.
Выбор очевиден.
#начало
#платки
#ардуиноиде
#уроки
А сейчас мы подготавливаемся к настоящему программированию. Будем изучать структуру программы.
Изначально, если открыть ардуино иде, можно увидеть следующее:

void setup() {
// put your setup code here, to run once
}
void loop() {
// put your main code here, to run repeatedly:
}

А теперь объяснение:
void setup - основная функция, внутри скобок пишутся команды, которые должны выполниться один раз. Например, инициализация датчиков, настройка пинов и т.д.
void loop() - главная функция, команды в ней повторяются циклично: выполнилась последняя и всё начинается с начала loop'a.
// слова
- комментарий. В выполнении программы не участвует. Есть ещё многострочный комментарий, у него с /* и до */ всё пропускается:
/*
Цари
Ардуинки
Ещё что-то
*/

А потом будем разбираться с переменными

#начало
#уроки
НАШ ЧАТ!
👎1🤮1💩1
Очень сильно проще показать всё на картинке. (Щас пришлю )В следующем сообщении будет пример программы + типы данных
П. С. Надеюсь кто-нибудь поймёт мой почерк
#начало
#уроки
Типы данных
#начало
#уроки
Arduino15 channel pinned Deleted message
Arduino15 channel pinned «НАШ ЧАТ!»
Arduino15 channel
Photo
Перед примером программы надо кое-что ещё уточнить. С переменными работают почти все математические операции(корень и степень записываются подругому). Чтобы не писать a = a + 1;
Можно написать а += 1. Ещё есть особенный оператор — %. Это остаток от деления. Например 5%2=1 , 8%3=2 , 123%100=23.

Чтобы вывести на экран переменную или какой-нибудь текст, надо написать
Serial.print("ваш текст");
ВАЖНЫЕ ДОПОЛНЕНИЯ: 1.чтобы вывести число или переменную, кавычки НЕ нужны. Для текста они обязательны!
2.этим способом весь текст выводится в одну строку, это неудобно. Если не надо выводить что-то типа
Значение 1: 1234
то лучше заменить print на println. Это выведет в столбик. 3.чтобы всё это работало, внутри {} скобок void setup надо написать Serial.begin(9600);
Это инициализация uart'а.
А сейчас программа...
#начало
#уроки
//глобальные переменные.  и доступны везде
int a = 1;
byte val = 123;
void setup() {
Serial.begin(9600);
Serial.println(a); // выведет 1
a = -10*2+40;
Serial.println(a); // выведет 20
byte ostatok = val % a; // локальная переменная. Видна только в этих фигурных скобках.
val -= 3; // 123 - 3 = 120
val /= a; // 120 / 20 = 6
Serial.println(val); // выведет 6
}
void loop() {}
П. С. Чтобы открыть порт, надо нажать на значок лупы в правом верхнем углу или нажать ctrl+shift+m
#ардуиноиде
#начало
#начало
Для всего следующего, сначала надо понять, как работает макетная плата(макетка). На второй картинке её изображение, на первой показано, как соединены контакты

#начало
#уроки
👍1
Совет: для есп32 берите сразу 2-3 макетки. А ещё лучше сразу набор гайверкит
Arduino15 channel
Совет: для есп32 берите сразу 2-3 макетки. А ещё лучше сразу набор гайверкит
Так ну здравствуйте, чет я не заметил как получил админку ну да ладно
😁1
У ардуины есть 2 вида ног: цифровые и аналоговые. Почти все ноги могут быть входом и выходом сигнала. У обычных avr'ок нет ЦАПа, т.е. они не могут выдавать аналоговый сигнал. Только 0 и 1. Но есть ШИМ, и он позволяет плавно управлять яркостью, скоростью и т.д. У есп есть и ЦАП, и ШИМ. У всех обычных микроконтроллеров есть АЦП, которое преобразовывает аналоговый сигнал в цифровой. Ну и есть цифровой вход/выход. 0 или 1, 0В или 5В. Вот функции для управления этим всем на AVR :
Цифр. выход: digitalWrite(пин, значение)
Цифр. вход: digitalRead(пин)
Аналоговый вход: analogRead(пин)
ШИМ: analogWrite(пин, значение от 0 до 255)
Скоро будет остальное. И проекты!

#начало
#уроки
Сначала расскажу про потенциометр. Это резистор, сопротивлением которого можно управлять. К ардуинке он подключается просто: одна крайняя нога на gnd, другая на 5в, а средняя на аналоговую ногу ардуины(А0, А1, А2 и т.д.). Прошивка для проверки этого всего тоже простая:
#define POT_PIN A0 // пин потенциометра
void setup() {
Serial.begin(9600); // настраиваем порт
pinMode(POT_PIN, 0); // настраиваем пин
}
void loop() {
// таймер на миллисе
static uint32_t tmr;
if(millis() - tmr >= 150) {
tmr = millis();
Serial.println(analogRead(POT_PIN)); // вывод в порт
}
}

Тут в порт выводятся числа от 0 до 1024, это значение с АЦП. Ещё можно открыть плоттер(ctrl+shif+l или через инструменты).
#начало
#уроки

П. С. Дополнение: в pinMode 0 можно поменять на INPUT, это то же самое
А так потенциометры выглядят и обозначаются
А теперь кнопки. Обычно у них 4 ноги, но они попарно соединены. Остаётся 2 контакта. Кнопку можно подключать по разному. Обычно одна нога идёт на пин, вторая на gnd или 5В. Если на 5В, то к пину надо подключить резистор(обычно на 10 или 4,7 кОм). Вот прошивка без библиотеки:
#define BTN 3  // кнопка на д3
void setup() {
Serial.begin(9600); // настройка порта
pinMode(BTN, 2); // настройка пина на подтяжку к +
}
void loop() {
static bool flg; // флаг состояния кнопки
bool s = !digitalRead(BTN); // текущее состояние кнопки
if (s && !flg) { // кнопка нажата
flg = true;
Serial.println("Click");
}
if (!s && flg) { // кнопка отпущена
flg = false;
Serial.println("Relase");
}
}

Это минимальная обработка нажатия, в которой нет антидребезга. Все не сенсорные кнопки дребезжат, т.е. нажатие происходит не сразу, т.е. на ардуину приходит много 0 и 1. Из-за этого будут ложные срабатывания. Потом пришлю прошивку с антидребезгом

#начало
#уроки
This media is not supported in your browser
VIEW IN TELEGRAM
Вот кнопки