Инструкции

Справочный раздел

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

Разделы инструкций

В сети

Пользователей: 121
Из них просматривают:
Аналоги: 71. Даташиты: 31. Инструкции: 4. Новости: 2. Остальное: 3. Профиль пользователя: 4. Форум: 5. Чат: 1.
Участников: 3
Гостей: 118

an , Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

Функция analogWrite()

Выдает аналоговую величину (ШИМ-волну) на порт входа/выхода. Функция может быть полезна для управления яркостью подключенного светодиода или скоростью вращения электродвигателя. После вызова analogWrite() на выходе будет генерироваться постоянная прямоугольная волна с заданной шириной импульса до следующего вызова analogWrite (или вызова digitalWrite или digitalRead на том же порту входа/выхода). Частота ШИМ-сигнала приблизительно 490 Гц.

На большинстве плат Arduino (на базе микроконтроллера ATmega168 или ATmega328) ШИМ поддерживают порты 3, 5, 6, 9, 10 и 11, на плате Arduino Mega — порты с 2 по 13. На более ранних версиях плат Arduino analogWrite() ра- ботал только на портах 9, 10 и 11.

Для вызова analogWrite() нет необходимости устанавливать тип входа/выхода функцией pinMode(). Функция analogWrite() никак не связана с аналоговыми входами и с функцией analogRead().

Синтаксис:

analogWrite(pin, value);
 
Параметры:
- pin — порт входа/выхода, на который подается ШИМ-сигнал;
- value — период рабочего цикла: значение между 0 (полностью выключено) и 255 (сигнал подан постоянно).
 
Примечание
Период ШИМ-сигнала на портах входа/выхода 5 и 6 будет несколько длиннее. Это связано с тем, что таймер для данных выходов также задействован функциями millis() и delay(). Данный эффект более заметен при установке коротких периодов ШИМ-сигнала (0–10).

Пример задания яркости светодиода пропорционально значению, снимаемому с потенциометра, представлен

 

Функция analogWrite
 

int ledPin = 9; // Светодиод подключен к выходу 9
int analogPin = 3; // потенциометр подключен к выходу 3
int val = 0; // переменная для хранения значения

void setup()
{
pinMode(ledPin, OUTPUT); // установка порта на выход
}

void loop()
{
val = analogRead(analogPin); // считываем значение с порта,
// подключенного к потенциометру
analogWrite(ledPin, val / 4); // analogRead возвращает значения от 0
// до 1023, analogWrite должно быть
// в диапазоне от 0 до 255
}

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
 Функция analogWrite()
Технический Директор
Технический Директор
Дата регистрации: 08.02.2009
Откуда: Днестровск
Сообщений: 2539
не в сети
Проверил регулировку яркости светодиода на пинах со 2-го по 13-ый. Одинаково плавная регулировка отмечается только на 3, 5, 6, 9, 10 и 11 пинах, на остальных регулировка происходит, почему-то, скачкообразно - сперва не светит вообще, потом сразу на полный накал. Так и должно быть?
 Функция analogWrite()
Администратор
Администратор
Дата регистрации: 07.08.2008
Откуда: Тирасполь
Сообщений: 7285
не в сети
Не все выводы ШИМятся.
Цитата:
На большинстве плат Arduino (на базе микроконтроллера ATmega168 или ATmega328) ШИМ поддерживают порты 3, 5, 6, 9, 10 и 11, на плате Arduino Mega — порты с 2 по 13. На более ранних версиях плат Arduino analogWrite() работал только на портах 9, 10 и 11.
 Функция analogWrite()
Технический Директор
Технический Директор
Дата регистрации: 08.02.2009
Откуда: Днестровск
Сообщений: 2539
не в сети
Точно, а я не придал значению, а ведь, действительно это указывалось в статье. Ну хоть убедился в этом сам и запомнил.
 Функция analogWrite()
Технический Директор
Технический Директор
Дата регистрации: 08.02.2009
Откуда: Днестровск
Сообщений: 2539
не в сети
Вот ещё пример. Фотореле. Делитель из двух резисторов: фото и обычного. Фоторезистор при освещении выдаёт 200 кОм. По монитору порта взято значение 500, по условию всё что меньше 500 даёт команду на включение светодиода. И сделана задержка на 5 секунд, как по засветке, так и по затемнению фоторезистора.
Открыть изображение в новом окне
int analogPin 3// номер порта, к которому подключен делитель напряжения (LDR1 и R1)
int val 0// переменная для хранения считываемого значения
int ledPin 9// светодиод, подключенный к вход/выходу 9
int brightness 0// устанавливаем начальное значение яркости
void setup()
{
  
Serial.begin(9600); // установка связи по serial
}
void loop()
{
  
analogWrite(9brightness);
  
val analogRead(analogPin); // считываем значение
  
Serial.println(val); // выводим полученное значение
  
if (val 500// вводим нужное нам значение (порог срабатывания) из монитора порта
  
{
    
digitalWrite(ledPinHIGH); // включает светодиод
    
delay(5000); // 5 секунд на случайную засветку
  
}
  else
  {
    
digitalWrite(ledPinLOW); // выключает светодиод
    
delay(5000); // 5 секунд на случайное затемнение
  
}
}

 Функция analogWrite()
Главный Технолог
Главный Технолог
Дата регистрации: 27.03.2010
Откуда: Тирасполь
Сообщений: 262
не в сети
надо и мне поиграться как то с ардуинкой, а то лежит  без дела)

Разное

Интересно

При замене электролитических конденсаторов, кроме соблюдения полярности, не следует значительно превышать допустимое рабочее напряжение.
Например, если конденсатор рассчитан на рабочее напряжение 16 В, то при установке нового той же емкости, но рассчитанного на напряжение 300 В после непродолжительной эксплуатации произойдет его расформовка, и емкость его значительно уменьшится.

Похожие инструкции