facebook pixel מדריך: פירוט שפת תכנות - לכרטיסים מתקדמים - ()analogWriteResolution - www.4project.co.il
Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

פירוט שפת תכנות - לכרטיסים מתקדמים - ()analogWriteResolution


2022-06-14 10:27:21
פונקציית ()analogWriteResolution היא הרחבה לממשק של קווים אנלוגיים ונועדה לכרטיסי Arduino Due, Arduino Zero, MKR1000 או כרטיסים מתקדמים אחרים עם ממיר DAC.

הפונקציה מגדירה את הרזולוציה של פונקציה ()analogWrite. רזולוציית ברירת המחדל היא 8bit (ערכים בין 0 ל-255) לצורך התאימות עם כרטיסי Arduino המבוססים על מיקרובקרים ישנים ממשפחת AVR.

לכרטיסי Arduino Due יש את היכולות הבאות:
  • 12 קווים שיכולים לייצר PWM ברזולוציה של 8bit כמו בכרטיסי Arduino האחרים שמבוססים על מיקרובקרים ממשפחת AVR. קווים אלה אפשר לשנות לרזולוציה של 12bit
  • 2 קווים עם ממיר DAC (ממיר דיגיטלי לאנלוגי) בעל רזולוציה של 12bit
ע"י שינוי הרזולוציה ל-12bit תוכלו לנצל את היכולות המלאות של הממירים, תוכלו לקרוא לפונקציית ()analogWrite עם ערכים בין 0 ל-4095.


לכרטיסי Arduino Zero יש את היכולות הבאות:
  • 10 קווים שיכולים לייצר PWM ברזולוציה של 8bit כמו בכרטיסי Arduino האחרים שמבוססים על מיקרובקרים ממשפחת AVR. קווים אלה אפשר לשנות לרזולוציה של 12bit
  • 2 קווים עם ממיר DAC (ממיר דיגיטלי לאנלוגי) בעל רזולוציה של 10bit
ע"י שינוי הרזולוציה ל-10bit תוכלו לנצל את היכולות המלאות של הממירים, תוכלו לקרוא לפונקציית ()analogWrite עם ערכים בין 0 ל-1023.


לכרטיסי MKR1000 יש את היכולות הבאות:
  • 4 קווים שיכולים לייצר PWM ברזולוציה של 8bit כמו בכרטיסי Arduino האחרים שמבוססים על מיקרובקרים ממשפחת AVR. קווים אלה אפשר לשנות לרזולוציה של 12bit
  • קו אחד עם ממיר DAC (ממיר דיגיטלי לאנלוגי) בעל רזולוציה של 10bit
ע"י שינוי הרזולוציה ל-12bit תוכלו לנצל את היכולות המלאות של הממירים, תוכלו לקרוא לפונקציית ()analogWrite עם ערכים בין 0 ל-4095.


תחביר

קוד: בחר הכל
analogWriteResolution(bits);

פרמטרים:
bits - מציין את הרזולוציה בביטים (bits) של הערכים שתוכלו להעביר לפונקציה ()analogWrite. ערך ה-bits יכול להיות בין 1 ל-32. אפשר להגדיר את הרזולוציה לערך גבוה או נמוך יותר ממש יותר ממה שנתמך בכרטיס שלכם. הערכים יקוצצו אם הם גבוהים יותר, או ירפדו עם אפסים אם הם נמוכים יותר ממה שהכרטיס יכול לתמוך.

פונקציה זו לא מחזירה ערכים.

שימו לב:
כשמגדירים רזולוציה גבוהה יותר ממה שנתמך ע"י הכרטיס שלכם, ה-Arduino יתעלם מהביטים הגבוהים מעבר למה שנתמך בכרטיס. לדוגמה, אם קראתם לפונקציה (16)analogWriteResolution במיקרובקר עם ממיר DAC בעל 12bit, ה-12bit הנמוכים של הערך בפונקציה ()analogWrite יועברו לממיר ו-4 הסיביות האחרות לא יהיו בשימוש.

אם אתם מגדירים רזולוציה נמוכה יותר ממה שנתמך ע"י הכרטיס שלכם, ה-Arduino יוסיף אפסים בביטים הגבוהים. לדוגמה, אם קראתם לפונקציה (8)analogWriteResolution במיקרובקר עם ממיר DAC בעל 12bit, ה-Arduino יוסיף 4 סיביות בערך 0 לערך בעל 8 סיביות שהעברתם לפונקציה ()analogWrite כדי להשלים את 12 הסיביות הדרושות.

דוגמה

קוד: בחר הכל
void setup(){
  // open a serial connection
  Serial.begin(9600);
  // make our digital pin an output
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop(){
  // read the input on A0 and map it to a PWM pin
  // with an attached LED
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // the default PWM resolution
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0 ,255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0 ,255));

  // change the PWM resolution to 12 bits
  // the full 12 bit resolution is only supported
  // on the 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));

  // change the PWM resolution to 4 bits
  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);
}


ראו גם:

()analogWrite
()analogRead
()map
מדריך: תיאור של הקווים האנלוגיים - TODO

פירוט שפת תכנות לסביבת Arduino


עמוד זה הוא תרגום של ()analogWriteResolution לפי רישיון Creative Commons Attribution-ShareAlike 3.0.