Arduino:Примеры/AnalogWriteMega: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
= Использование функции AnalogWrite для затухания-загорания светодиодов на Arduino Mega <ref>[http://www.arduino.cc/en/Tutorial/AnalogWriteMega Arduino - Analog Write with 12 LEDs on an Arduino Mega]</ref>= | |||
В этом примере демонстрируется, как сделать так, чтобы один за одним затухали и загорались 12 | В этом примере демонстрируется, как сделать так, чтобы один за одним затухали и загорались 12 [[светодиод]]ов, подключенных к плате [[Arduino Mega]]. | ||
== Необходимое оборудование == | == Необходимое оборудование == | ||
Строка 31: | Строка 31: | ||
Ниже – первая из них. С ее помощью код будет перемещаться от одного светодиода к другому – от самого «низкого» (lowestPin, т.е. от того, чья цифра меньше) к самому «высокому» (highestPin, т.е. к тому, чья цифра больше): | Ниже – первая из них. С ее помощью код будет перемещаться от одного светодиода к другому – от самого «низкого» (lowestPin, т.е. от того, чья цифра меньше) к самому «высокому» (highestPin, т.е. к тому, чья цифра больше): | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) | for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 37: | Строка 37: | ||
Теперь вторая – делаем так, чтобы светодиоды загорались один а другим. [[Программа]] последовательно выбирает то один, то другой выходной контакт (соответствующий тому или иному [[светодиод]]у), а затем передает ему значение переменной '''brightness'''. Значение этой переменной, тем временем, постоянно увеличивается по принципу: один цикл – плюс один пункт. | Теперь вторая – делаем так, чтобы светодиоды загорались один а другим. [[Программа]] последовательно выбирает то один, то другой выходной контакт (соответствующий тому или иному [[светодиод]]у), а затем передает ему значение переменной '''brightness'''. Значение этой переменной, тем временем, постоянно увеличивается по принципу: один цикл – плюс один пункт. | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
for (int brightness = 0; brightness < 255; brightness++) { | for (int brightness = 0; brightness < 255; brightness++) { | ||
analogWrite(thisPin, brightness); | analogWrite(thisPin, brightness); | ||
Строка 46: | Строка 46: | ||
Когда [[широтно-импульсная модуляция]] ([[ШИМ]]) на выходном контакте достигает максимума (255), в дело вступает третья [[Arduino:Справочник языка Arduino/Управляющие операторы/for|for]]. Ее задача – не увеличивать значение переменной '''brightness''', а уменьшать ( по тому же принципу: один цикл – минус один пункт), тем самым снижая яркость светодиода, пока он не погаснет совсем: | Когда [[широтно-импульсная модуляция]] ([[ШИМ]]) на выходном контакте достигает максимума (255), в дело вступает третья [[Arduino:Справочник языка Arduino/Управляющие операторы/for|for]]. Ее задача – не увеличивать значение переменной '''brightness''', а уменьшать ( по тому же принципу: один цикл – минус один пункт), тем самым снижая яркость светодиода, пока он не погаснет совсем: | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
for (int brightness = 255; brightness >= 0; brightness--) { | for (int brightness = 255; brightness >= 0; brightness--) { | ||
analogWrite(thisPin, brightness); | analogWrite(thisPin, brightness); | ||
Строка 55: | Строка 55: | ||
По достижении нуля программа делает задержку в 100 миллисекунд, а затем снова возвращается к первой [[Arduino:Справочник языка Arduino/Управляющие операторы/for|for]], берется за следующий [[светодиод]] и начинает все заново. | По достижении нуля программа делает задержку в 100 миллисекунд, а затем снова возвращается к первой [[Arduino:Справочник языка Arduino/Управляющие операторы/for|for]], берется за следующий [[светодиод]] и начинает все заново. | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
Использование функции analogWrite() на Arduino Mega | Использование функции analogWrite() на Arduino Mega | ||
Строка 103: | Строка 103: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=См.также= | |||
# [[Arduino:Справочник языка Arduino/Управляющие операторы/for|for]] | # [[Arduino:Справочник языка Arduino/Управляющие операторы/for|for]] | ||
Строка 114: | Строка 114: | ||
# [[Arduino:Примеры/ForLoop|ForLoop]] | # [[Arduino:Примеры/ForLoop|ForLoop]] | ||
=Внешние ссылки= | |||
<references /> | <references /> | ||
{{Навигационная таблица/ | {{Навигационная таблица/Портал/Arduino}} | ||
[[Категория:Пример]] | [[Категория:Пример]] |
Текущая версия от 09:22, 24 февраля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Использование функции AnalogWrite для затухания-загорания светодиодов на Arduino Mega [1]
В этом примере демонстрируется, как сделать так, чтобы один за одним затухали и загорались 12 светодиодов, подключенных к плате Arduino Mega.
Необходимое оборудование
- Плата Arduino Mega - 1 шт.;
- Светодиод - 12 шт.;
- Резистор на 220 Ом - 12 шт.;
- Провода-перемычки;
- Макетная плата - 1 шт. ;
Цепь
Аноды (длинные ноги с положительным зарядом) 12-ти светодиодов подключите к цифровым контактам Arduino (со 2-го по 13-ый), но не напрямую, а через токоограничивающие резисторы номиналом 220 Ом. Катоды (короткие ноги с отрицательным зарядом) подключите к «земле» (GND).
Схема
Код
Вначале займемся секцией * setup() и впишем туда функцию for, задача которой – задать цифровые контакты со 2-го по 13-ый как выходные контакты. Далее перемещаемся в секцию loop(), где воспользуемся сразу тремя функциями for. Ниже – первая из них. С ее помощью код будет перемещаться от одного светодиода к другому – от самого «низкого» (lowestPin, т.е. от того, чья цифра меньше) к самому «высокому» (highestPin, т.е. к тому, чья цифра больше):
for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++)
Теперь вторая – делаем так, чтобы светодиоды загорались один а другим. Программа последовательно выбирает то один, то другой выходной контакт (соответствующий тому или иному светодиоду), а затем передает ему значение переменной brightness. Значение этой переменной, тем временем, постоянно увеличивается по принципу: один цикл – плюс один пункт.
for (int brightness = 0; brightness < 255; brightness++) {
analogWrite(thisPin, brightness);
delay(2);
}
Когда широтно-импульсная модуляция (ШИМ) на выходном контакте достигает максимума (255), в дело вступает третья for. Ее задача – не увеличивать значение переменной brightness, а уменьшать ( по тому же принципу: один цикл – минус один пункт), тем самым снижая яркость светодиода, пока он не погаснет совсем:
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(thisPin, brightness);
delay(2);
}
По достижении нуля программа делает задержку в 100 миллисекунд, а затем снова возвращается к первой for, берется за следующий светодиод и начинает все заново.
/*
Использование функции analogWrite() на Arduino Mega
Задает одновременное затухание/загорание светодиодов,
подключенных к нескольким цифровым контактам – со 2-го по 13-ый.
Скетч написан для Arduino Mega и с другими платами работать не будет.
Цепь:
* Светодиоды подключены к цифровым контактам – со 2-го по 13-ый
Создан 8 февраля 2009 Томом Иго (Tom Igoe)
Этот код не защищен авторским правом.
*/
// Это константы – значения, которые не меняются.
// Воспользуемся ими для того, чтобы дать названия используемым контактам:
const int lowestPin = 2;
const int highestPin = 13;
void setup() {
// сделаем контакты со 2-го по 13-ый выходными контактами:
for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// делаем перебор контактов – один за другим:
for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) {
// повышаем яркость выбранного светодиода (thisPin) от нуля до максимума:
for (int brightness = 0; brightness < 255; brightness++) {
analogWrite(thisPin, brightness);
delay(2);
}
// понижаем яркость выбранного светодиода (thisPin) с максимума до нуля:
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(thisPin, brightness);
delay(2);
}
// делаем задержку между манипуляциями со светодиодами:
delay(100);
}
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino