Arduino:Примеры/Fade: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
 
Нет описания правки
 
(не показано 14 промежуточных версий 1 участника)
Строка 2: Строка 2:
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}
== Затухание/загорание <ref>[http://www.arduino.cc/en/Tutorial/Fade Arduino - Fade]</ref> ==


Данная заметка демонстрирует использование функции [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWrite()|analogWrite()]] при затухании/загорании светодиода. При помощи операции под названием '''«широтно-импульсная модуляция» (ШИМ)''' эта функция может быстро включать/выключать контакт, тем самым создавая эффект затухания/загорания.
= Затухание/загорание <ref>[http://www.arduino.cc/en/Tutorial/Fade Arduino - Fade]</ref> =
 
Данная заметка демонстрирует использование функции [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWrite()|analogWrite()]] при затухании/загорании светодиода. При помощи операции под названием «[[широтно-импульсная модуляция]]» ([[ШИМ]]) эта функция может быстро включать/выключать контакт, тем самым создавая эффект затухания/загорания.


== Необходимое оборудование ==
== Необходимое оборудование ==


* Плата '''Arduino''';
* [[Плата Arduino]] - 1шт.
* Макетная плата '''Breadboard''';
* [[Макетная плата]] - 1шт.
* Светодиод;
* [[Светодиод]] - 1шт.
* '''220 Ом''' резистор;
* [[Резистор]] [[220 Ом]] - 1шт.


== Цепь ==
== Цепь ==


Подсоедините анод (длинную ногу с положительным зарядом) светодиода к цифровому выходу под номером 9 на плате '''Arduino''' через 220-омовый резистор, а катод (короткую ногу с отрицательным зарядом) – напрямую к контакту '''«земля»'''.
Подсоедините анод (длинную ногу с положительным зарядом) [[светодиод]]а к цифровому выходу под номером 9 на плате [[Arduino]] через 220-омовый [[резистор]], а [[катод]] (короткую ногу с отрицательным зарядом) – напрямую к контакту '''«земля»'''.


[[File:simplefade_bb.png]]
[[File:simplefade_bb.png|center|frame|'''Рис. 1.''' [[Плата Arduino]] с подключенным через [[резистор]] [[светодиод]]ом к 9-му контакту.|alt=Рис. 1. Плата Arduino с подключенным через резистор светодиодом к 9-му контакту.]]


== Схема ==
== Схема ==


[[File:simplefade_pin9_schem.png]]
[[File:simplefade_pin9_schem.png|center|frame|'''Рис. 2.''' Схема подключения к плате [[светодиод]]а через [[резистор]].|alt=Рис. 2. Схема подключения к плате светодиода через резистор.]]


== Код ==
== Код ==


Для начала нужно указать, что '''9 контакт''' – это контакт для светодиода ('''ledPin'''), после чего функцию [[Arduino:Справочник языка Arduino/setup()‎|setup()]] можно уже не трогать.  
Для начала нужно указать, что '''9 контакт''' – это контакт для [[светодиод]]а ('''ledPin'''), после чего функцию [[Arduino:Справочник языка Arduino/setup()‎|setup()]] можно уже не трогать.  
А вот функции [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWrite()|analogWrite()]], которую вы будете использовать в главном цикле вашего кода, потребуется два аргумента: один будет говорить функции, с каким контактом ей нужно работать, а другой будет указывать, какое значение '''ШИМ''' использовать.
А вот функции [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWrite()|analogWrite()]], которую вы будете использовать в главном цикле вашего кода, потребуется два аргумента: один будет говорить функции, с каким контактом ей нужно работать, а другой будет указывать, какое значение '''ШИМ''' использовать.
Чтобы заставить светодиод затухать и загораться, постепенно увеличивайте значение '''ШИМ от 0 (полностью потухший) до 255 (максимальная яркость) и снова до 0''', чтобы завершить цикл. На фрагменте кода внизу значение '''ШИМ''' использует переменную под названием '''brightness''' (т.е. '''«яркость»'''). Каждый раз, проходя цикл, она увеличивается на значение переменной '''fadeAmount'''.  
 
Чтобы заставить [[светодиод]] затухать и загораться, постепенно увеличивайте значение '''[[ШИМ]] от 0 (полностью потухший) до 255 (максимальная яркость) и снова до 0''', чтобы завершить цикл. На фрагменте кода внизу значение [[ШИМ]] использует переменную под названием '''brightness''' (т.е. '''«яркость»'''). Каждый раз, проходя цикл, она увеличивается на значение переменной '''fadeAmount'''.  
Если '''brightness''' достигнет крайнего значения (будь то '''0 или 255'''), то переменная '''fadeAmount''' сменится на противоположную. Другими словами, если '''fadeAmount''' будет в значении '''«5»''', то при достижении предела оно сменится на '''«-5»''', и наоборот – если будет '''«-5»''', то сменится на '''«5»'''. Таким образом, переменная '''brightness''' начнет либо увеличиваться, либо уменьшаться.  
Если '''brightness''' достигнет крайнего значения (будь то '''0 или 255'''), то переменная '''fadeAmount''' сменится на противоположную. Другими словами, если '''fadeAmount''' будет в значении '''«5»''', то при достижении предела оно сменится на '''«-5»''', и наоборот – если будет '''«-5»''', то сменится на '''«5»'''. Таким образом, переменная '''brightness''' начнет либо увеличиваться, либо уменьшаться.  
Функция [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWrite()|analogWrite()]] может менять значение '''ШИМ''' очень быстро, поэтому пауза ([[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay]]) в конце кода нужна для того, чтобы притормозить скорость затухания/загорания. Попробуйте поменять значение [[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay]], чтобы посмотреть, как изменится программа.  
Функция [[Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWrite()|analogWrite()]] может менять значение [[ШИМ]] очень быстро, поэтому пауза ([[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay]]) в конце кода нужна для того, чтобы притормозить скорость затухания/загорания. Попробуйте поменять значение [[Arduino:Справочник языка Arduino/Функции/Работа со временем/delay()|delay]], чтобы посмотреть, как изменится программа.  


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
  Затухание/загорание
  Затухание/загорание
Строка 67: Строка 69:
</syntaxhighlight>
</syntaxhighlight>


==См.также==
=См.также=


# [[Arduino:Справочник языка Arduino/setup()‎|setup()‎]]
# [[Arduino:Справочник языка Arduino/setup()‎|setup()‎]]
Строка 83: Строка 85:
# [[Arduino:Примеры/ReadAnalogVoltage|ReadAnalogVoltage]]
# [[Arduino:Примеры/ReadAnalogVoltage|ReadAnalogVoltage]]


==Внешние ссылки==
=Внешние ссылки=


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}
[[Категория:Пример]]
[[Категория:Пример]]
[[Категория:Примеры]]
[[Категория:Примеры]]
[[Категория:Пример программирования Arduino]]
[[Категория:Пример программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:setup]]
[[Категория:setup()]]
[[Категория:void]]
[[Категория:pinMode]]
[[Категория:pinMode()]]
[[Категория:loop()]]
[[Категория:loop]]
[[Категория:analogWrite(led, brightness)]]
[[Категория:analogWrite()]]
[[Категория:analogWrite]]
[[Категория:if]]
[[Категория:delay(30)]]
[[Категория:delay()]]
[[Категория:delay]]

Текущая версия от 12:32, 20 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Затухание/загорание [1]

Данная заметка демонстрирует использование функции analogWrite() при затухании/загорании светодиода. При помощи операции под названием «широтно-импульсная модуляция» (ШИМ) эта функция может быстро включать/выключать контакт, тем самым создавая эффект затухания/загорания.

Необходимое оборудование

Цепь

Подсоедините анод (длинную ногу с положительным зарядом) светодиода к цифровому выходу под номером 9 на плате Arduino через 220-омовый резистор, а катод (короткую ногу с отрицательным зарядом) – напрямую к контакту «земля».

Рис. 1. Плата Arduino с подключенным через резистор светодиодом к 9-му контакту.
Рис. 1. Плата Arduino с подключенным через резистор светодиодом к 9-му контакту.

Схема

Рис. 2. Схема подключения к плате светодиода через резистор.
Рис. 2. Схема подключения к плате светодиода через резистор.

Код

Для начала нужно указать, что 9 контакт – это контакт для светодиода (ledPin), после чего функцию setup() можно уже не трогать. А вот функции analogWrite(), которую вы будете использовать в главном цикле вашего кода, потребуется два аргумента: один будет говорить функции, с каким контактом ей нужно работать, а другой будет указывать, какое значение ШИМ использовать.

Чтобы заставить светодиод затухать и загораться, постепенно увеличивайте значение ШИМ от 0 (полностью потухший) до 255 (максимальная яркость) и снова до 0, чтобы завершить цикл. На фрагменте кода внизу значение ШИМ использует переменную под названием brightness (т.е. «яркость»). Каждый раз, проходя цикл, она увеличивается на значение переменной fadeAmount. Если brightness достигнет крайнего значения (будь то 0 или 255), то переменная fadeAmount сменится на противоположную. Другими словами, если fadeAmount будет в значении «5», то при достижении предела оно сменится на «-5», и наоборот – если будет «-5», то сменится на «5». Таким образом, переменная brightness начнет либо увеличиваться, либо уменьшаться. Функция analogWrite() может менять значение ШИМ очень быстро, поэтому пауза (delay) в конце кода нужна для того, чтобы притормозить скорость затухания/загорания. Попробуйте поменять значение delay, чтобы посмотреть, как изменится программа.

/*
 Затухание/загорание

 Этот пример показывает как сделать затухание/загорание светодиода на контакте 9 при помощи функции analogWrite().
 
 Данный пример кода не защищен авторским правом.
 */

int led = 9;           // контакт, к которому подсоединен светодиод
int brightness = 0;    // как ярко горит светодиод
int fadeAmount = 5;    // на какое значение будет затухать/загораться светодиод

// эта функция запускается при рестарте:
void setup()  { 
  // указываем, что контакт 9 будет выходом:
  pinMode(led, OUTPUT);
} 

// этот цикл будет повторятся снова и снова:
void loop()  { 
  // устанавливаем переменную «brightness» для контакта 9:
  analogWrite(led, brightness);    

  // меняем яркость при переходе на новый цикл:
  brightness = brightness + fadeAmount;

  // переходим в режим затухания/загорания при достижении крайнего значения яркости: 
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
  }     
  // ждем 30 миллисекунд для лучшего эффекта
  delay(30);                            
}

См.также

  1. setup()‎
  2. loop()
  3. analogWrite()
  4. for
  5. ШИМ
  6. int
  7. Serial
  8. BareMinimum
  9. Blink
  10. DigitalReadSerial
  11. AnalogReadSerial
  12. Fade
  13. ReadAnalogVoltage

Внешние ссылки