יציאה "אנלוגית" - PWM
מה זה PWM?
הפינים של הארדואינו מוצייאם מתח של 5V או 0 (גבוה או נמוך), אך לעיתים אנו רוצים להוציא מתח ביניים. למשל כשאנו רוצים לעבוד עם LED RGB ורוצים לייצר צבע המורכב ממספר צבעי יסוד.
הפתרון לכך הוא לעבוד עם PWM - שינוי של המתח במוצא הפין בין גבוה לנמוך בתדר מהיר יחסית, ברוחב פולס משתנה, כך שבאופן אפקטיבי יש מתח ביניים.
PWM אלה ראשי תיבות של Pulse Width Modulation כלומר אפנון רוחב פולס. במצב זה המתח יהיה או 5 או 0 אבל משך השהייה על 5 ישתנה לפי המתח האפקטיבי שנרצה לקבל
ניתן לראות זאת בדיאגרמה הבאה:
הפינים שיכולים להוציא מתח PWM
בארדואינו נאנו, אלה פינים:
d3, d5, d6, d9, d10, d11
(כלומר 6 פינים סה"כ)
איך מוציאים מתח PWM
הערך של מתח זה יכול להשתנות בין 0 אל 255, כאשר 255 מקביל ל-5V קבוע
אם
int pwmVal=170;
ואז נעשה
analogWrite(9,pwmVal);
נקבל במוצא של פין 9 מתח השקול ל-
5*170/255=3.33v
מה בעצם זה עושה
הקוד של הפונקציה מקביל אל
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}