Видеоуроки по Arduino #2.1: Кнопки, PWM / ШИМ, функции

preview_player
Показать описание
Урок о том как подключать кнопки к Arduino, зачем нужен breadboard, как использовать широтно-импульсную модуляцию сигналов (ШИМ или PWM) и о том как создавать собственные функции в среде программирования Arduino

Список деталей:

Оригинал —

Материалы переведены и опубликованы с разрешения автора
Рекомендации по теме
Комментарии
Автор

обратите внимание / if (digitalRead(switchPin) == HIGH) / нужно писать без - ; - тогда всё работает. Если нужно коммутировить 2 позиционную кнопку - то лучше использовать 2 раза (if)

bubuino
Автор

int switchPin = 8;
int ledPin = 13;
void setup()
{ pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}

void loop()
{
if (digitalRead(switchPin) == HIGH)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}

Вот все работает

JAILK
Автор

LOW, false и 0 — это по сути синонимы. Также как HIGH, true, 1

AmperkaRuOfficial
Автор

Последние минуты - взрыв головного мозга. Аж спать захотелось!

ВладимирАвдєєв
Автор

вместо int используйте char для определения ножек, это сильно экономит память.

amd
Автор

тяжело понять новичку, знания возможно у него есть, а вот с доходвичивым объяснением не так уж.

Rashid_
Автор

Даже сам Джереми не верно написал код скетча :) У него при нажатии на кнопку происходит включение и выключение диода с частотой итерации цикла. На каком состоянии он отпустит кнопку - на том и запомнится переменная xD. А при нажатии и удержании кнопки светодио светит "вполнакала", то есть от меандра постоянных включений-выключений ;-)

mrDream
Автор

Pardon. Didn't catch a question. As a rule of thumb you're always need a resistor in series with LED.

AmperkaRuOfficial
Автор

int switchPin = 8;
int ledPin = 13;

void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}

void loop()
{
if (digitalRead(switchPin) == HIGH)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}

andreykulackov
Автор

1) Проверить, что драйвер установился корректно
2) Проверить, что в Arduino IDE установлены нужные плата и порт, в меню Сервис
3) Проверить работоспособность USB-кабеля

AmperkaRuOfficial
Автор

Погрузился в ход его мысли ). На фразе:"убедимся что мы обновили наше значение, оно будет хранить это состояние. потому что храним в выражении..", и тут я ушёл в гипноз

olegl
Автор

интересное решение - убрать дребезжание программно. но лучше аппаратно, просто включив паралельно кнопке маленький кондер

SoulPervert
Автор

Как я где-то вычитал - прямым замыканием выходов -> входов можно повредить плату, ибо она рассчитана на ток до 40мА. Не этим ли самым не побрезговал Джереми, замкнув +5V на Pin8 через кнопку?

ruAnimus
Автор

В loop нужна только одна строчка:
digitalWrite(ledPin, digitalRead(switchPin));

golubevvictor
Автор

Надежнее подтягивать кнопку к питанию, а замыкать на землю. Тогда намного меньше шансов, что контроллер схватит какую-нибудь помеху пока кнопка не нажата.

imax
Автор

все понятно, просто надо внимательно вслушиваться и думать об услышанном

ЧуланЖопорукого
Автор

Нет. Смотрите, когда пин является INPUT'ом, он электрически является резистором с очень большим сопротивлением, поэтому тыкать в него напряжением до 5 В совершенно безопасно. А вот когда пин настроен, как OUTPUT и находится в состоянии LOW, электрически это эквивалент замыкания пина на землю. И вот тогда уже соединение его с +5V напрямую будет фатально.

AmperkaRuOfficial
Автор

Антон, очень по хоже по симптомам, что вы неправильно сделали стяжку/подтяжку резистором. И пока кнопка не нажата, ваш светодиод на деле очень часто мерцает и кажется, что он горит в полсилы.

AmperkaRuOfficial
Автор

А видео о tehbits про которое говорит Джереми где можно посмотреть в русской озвучке?

bolnoi
Автор

В явном виде эта фича появилась позже выхода ролика. Раньше внутренняя подтяжка была возможна, но инициализировалась неочевидным способом.

AmperkaRuOfficial