Приветствую Вас ГостьПятница, 03.05.2024, 12:45

AVR & ARDUINO




Каталог статей

Главная » Статьи » Справочник

analogWriteResolution()

Описание

analogWriteResolution() - функция, расширяющая API для работы с аналоговыми величинами для Arduino Due.

Функция устанавливает размер (в битах) значения, передаваемых функции analogWrite(). Для обратной совместимости с платами на базе AVR-микроконтроллеров эта размерность, по умолчанию, составляет 8 бит (диапазон чисел 0-255).

Due имеет следующие аппаратные возможности:

  • 12 контактов, по умолчанию принимающие 8-битные значения для вывода ШИМ-сигнала (как и на AVR-платах). Размерность может быть изменена на 12 бит.
  • 2 контакта 12-разрядного ЦАП (цифро-аналогового преобразователя).

Изменив размерность на 12, можно использовать функцию analogWrite() со значениями в диапазоне от 0 до 4095. Это позволит не только задействовать всю шкалу ЦАП, но и задавать более точные значения ШИМ-сигнала.

Синтаксис

 analogWriteResolution(bits);

Параметры

bits - размерность значения (в битах), передаваемых функции analogWrite(). Может быть в пределах от 1 до 32. Допускается задавать размерности, которые не соответствуют аппаратным возможностям вашей платы. В этом случае значение, передаваемое analogWrite() будет либо отсекаться (если размерность слишком велика), либо дополняться нулями (если слишком мала). См. примечание ниже.

Возвращаемые значения

Нет

Примечание

Если размерность, указанная в функции analogWriteResolution(), превышает возможности вашей платы, Arduino просто отбросит лишние биты. Например: после вызова analogWriteResolution(16) на Arduino Due, при отправке 16-битного значения 12-битному ЦАП функцией analogWrite() будут использованы только первые 12 бит, остальные же 4 бита будут отброшены.

Если же размерность, указанная в функции analogWriteResolution(), меньше максимально возможной, то недостающие биты будут дополнены нулями. Например: после вызова analogWriteResolution(8), для отправки 8-битного значения 12-битному ЦАП Arduino Due добавит дополнительных 4 нулевых бита к значению, передаваемому функции analogWrite().

Пример

void setup(){
 // открываем последовательное соединение
 Serial.begin(9600); 
 // переводим цифровые контакты в режим "выход"
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}
 
void loop(){
 // считываем значение с контакта A0 и масштабируем его для ШИМ-вывода,
 // к которому подсоединен светодиод
 int sensorVal = analogRead(A0);
 Serial.print("Analog Read) : ");
 Serial.print(sensorVal);
 
 // размерность ШИМ по умолчанию
 analogWriteResolution(8);
 analogWrite(11, map(sensorVal, 0, 1023, 0 ,255));
 Serial.print(" , 8-bit PWM value : ");
 Serial.print(map(sensorVal, 0, 1023, 0 ,255));
 
 // изменяем размерность ШИМ на 12 бит
 // полная шкала в 12 бит поддерживается только
 // Arduino Due
 analogWriteResolution(12);
 analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
 Serial.print(" , 12-bit PWM value : ");
 Serial.print(map(sensorVal, 0, 1023, 0, 4095));
 
 // изменяем размерность ШИМ на 4 бита
 analogWriteResolution(4);
 analogWrite(13, map(sensorVal, 0, 1023, 0, 127));
 Serial.print(", 4-bit PWM value : ");
 Serial.println(map(sensorVal, 0, 1023, 0, 127));
 
 delay(5);
}

Смотрите также:

Описание аналоговых входов

analogWrite()

analogRead()

map()


Справочник

Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.



Источник: http://arduino.cc/en/Reference/AnalogWriteResolution
Категория: Справочник | Добавил: magi (28.01.2015)
Просмотров: 1023 | Теги: Due | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Поиск
Вход на сайт
На правах рекламы

Мы переезжаем на сайт Arduino по-русски