Функція analogWriteResolution()

Документація

analogWriteResolution()


analogWriteResolution() це розширення аналогового API для Arduino Due, Genuino та Arduino Zero, а також MKR1000.

analogWriteResolution() встановлює розмірність функції analogWrite(). Стандартне значення для зворотної сумісності з платами на базі AVR становить 8 бітів.

Due має такі характеристики:
  • 12 пінів, за замовчуванням налаштовані на 8-бітну ШІМ, як і базовані на AVR плати. Вони можуть бути змінені до 12-бітної розмірності.

  • 2 піни з 12-бітним цифро-аналоговим перетворювачем.

Встановлюючи розмірність 12 бітів, Ви можете використовувати analogWrite() зі значеннями від 0 до 4095 для сигналів ШІМ. А встановлення 10 бітів на пін ЦАП відкриє повну розмірність ЦАП з 1024 значень.

Синтаксис

analogWriteResolution(біти)

Параметри

біти: визначає розмірність (у бітах) значень, які використовує функція analogWrite(). Це значення може бути в діапазоні від 1 до 32. Якщо Ви виберете розмірність вищу чи нижчу за технічні можливості плати, значення, яке використовується у analogWrite(), буде усічене, якщо воно занадто високе, або заповнене нулями, якщо воно занадто низьке. Деталі у примітці.

Повертає

Нічого.

Примітка

Якщо Ви встановлюєте значення analogWriteResolution() вищим за можливості плати, плата відхилить зайві біти. Наприклад, при використанні Due та analogWriteResolution(16) на 12-бітному піні ЦАП лише перші 12 бітів значень з переданих до analogWrite() будуть використані. Останні 4 біти будуть відхилені.

Якщо Ви встановлюєте значення analogWriteResolution() нижчим за можливості плати, біти,
яких бракує, будуть заповнені нулями, щоб відповідати розміру, якого вимагає апаратне забезпечення. Наприклад, при використанні Due та analogWriteResolution(8) на 12-бітному піні ЦАП, Arduino додасть 4 нульових біти до 8-бітного значення, що використовується у analogWrite(), щоб досягти 12 бітів, що вимагаються.

Приклад

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 біт (лише на  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, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));
 
  delay(5);
}


Повернутись до головної

Коментарі 0

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.