()analogWriteResolution
היא הרחבה לממשק של קווים אנלוגיים ונועדה לכרטיסי Arduino Due, Arduino Zero, MKR1000 או כרטיסים מתקדמים אחרים עם ממיר DAC.הפונקציה מגדירה את הרזולוציה של פונקציה
()analogWrite
. רזולוציית ברירת המחדל היא 8bit (ערכים בין 0 ל-255) לצורך התאימות עם כרטיסי Arduino המבוססים על מיקרובקרים ישנים ממשפחת AVR.לכרטיסי Arduino Due יש את היכולות הבאות:
- 12 קווים שיכולים לייצר PWM ברזולוציה של 8bit כמו בכרטיסי Arduino האחרים שמבוססים על מיקרובקרים ממשפחת AVR. קווים אלה אפשר לשנות לרזולוציה של 12bit
- 2 קווים עם ממיר DAC (ממיר דיגיטלי לאנלוגי) בעל רזולוציה של 12bit
()analogWrite
עם ערכים בין 0 ל-4095.לכרטיסי Arduino Zero יש את היכולות הבאות:
- 10 קווים שיכולים לייצר PWM ברזולוציה של 8bit כמו בכרטיסי Arduino האחרים שמבוססים על מיקרובקרים ממשפחת AVR. קווים אלה אפשר לשנות לרזולוציה של 12bit
- 2 קווים עם ממיר DAC (ממיר דיגיטלי לאנלוגי) בעל רזולוציה של 10bit
()analogWrite
עם ערכים בין 0 ל-1023.לכרטיסי MKR1000 יש את היכולות הבאות:
- 4 קווים שיכולים לייצר PWM ברזולוציה של 8bit כמו בכרטיסי Arduino האחרים שמבוססים על מיקרובקרים ממשפחת AVR. קווים אלה אפשר לשנות לרזולוציה של 12bit
- קו אחד עם ממיר DAC (ממיר דיגיטלי לאנלוגי) בעל רזולוציה של 10bit
()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.