Arduino:Справочник языка Arduino/Функции/Аналоговый ввод/вывод/analogWriteResolution()
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Функция analogWriteResolution()[1]
Эта функция — расширение Analog API для Arduino Due и Zero.
Она задает разрешение для функции analogWrite(). По умолчанию у нее стоит 8 бит (значения в диапазоне 0-255) — для обратной совместимости с платами на базе AVR.
Arduino Due имеет следующие аппаратные возможности:
- 12 контактов, по умолчанию работающих с 8-битной ШИМ (как платы на базе AVR). Впрочем, его можно поменять на 12-битное разрешение.
- 2 контакта, работающих с 12-битным АЦП (аналогово-цифровым преобразованием).
Таким образом, выставив analogWriteResolution() на «12», в функции analogWrite() можно будет использовать значения в диапазоне от 0 до 4095 (тем самым имея возможность работать с полным АЦП-разрешением), а также задавать ШИМ-сигнал без переполнения.
Arduino Zero имеет следующие аппаратные возможности:
- 10 контактов, по умолчанию работающих с 8-битной ШИМ (как платы на базе AVR). Впрочем, его можно поменять на 12-битное разрешение.
- 1 контакт, работающий с 10-битным АЦП (аналогово-цифровым преобразованием)
Таким образом, выставив analogWriteResolution() на «10», в функции analogWrite() можно будет использовать значения в диапазоне от 0 до 1023, тем самым получая возможность работать с полным АЦП-разрешением.
Синтаксис
analogWriteResolution(bits)
Параметры
bits — разрешение (в битах) значения, используемого в функции analogWrite(). Это значение может варьироваться от 1 до 32. Впрочем, если разрешение будет ниже или выше аппаратных возможностей платы, то значение, используемое в analogWriteResolution(), будет, соответственно, либо обрезано (если будет слишком большим), либо дополнено нулями (если будет слишком маленьким). Более подробно читайте в приложении ниже.
Что возвращает
Ничего.
Примечание
Если выставить в analogWriteResolution() значение, которое будет выше аппаратных возможностей платы, то Arduino просто урежет лишние биты. Допустим, у вас плата Due, и вы приписали 12-битному АЦП-контакту значение analogWriteResolution(16) — в этом случае первые 12 бит функции analogWrite() использованы будут, а «лишние» 4 бита будут урезаны.
Если выставить в analogWriteResolution() значение, которое будет ниже аппаратных возможностей платы, то для того, чтоб чтобы привести значение к соответствующему размеру, вместо недостающих битов будут добавлены нули.
Допустим, у вас плата Due, и вы приписали 12-битному АЦП-контакту значение analogWriteResolution(8) — в этом случае Arduino добавит к 8-битному значению, используемому в функции analogWrite(), еще 4 бита (с нулями), чтобы сделать его 12-битным.
Пример
void setup(){
// Запускаем последовательное соединение:
Serial.begin(9600);
// переключаем цифровой контакт в режим OUTPUT:
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 : "); // " , 8-битное ШИМ-значение : "
Serial.print(map(sensorVal, 0, 1023, 0 ,255));
// Меняем ШИМ-разрешение на 12 бит
// (полное 12-битное разрешение поддерживается только на Due):
analogWriteResolution(12);
analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
Serial.print(" , 12-bit PWM value : "); // " , 12-битное ШИМ-значение : "
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 : "); // ", 4-битное ШИМ-значение : "
Serial.println(map(sensorVal, 0, 1023, 0, 127));
delay(5);
}
См.также
Внешние ссылки
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.
|
Клавиатура |
|
Мышь |
|
Разное |