שְׁאֵלָה:
שליטה על 500 נוריות LED עם PWM
littlebirdceo
2009-12-21 13:17:25 UTC
view on stackexchange narkive permalink

אני שוקל לקחת על עצמי פרויקט שיכלול טיפול אישי בנפרד ל -500 נוריות, באופן אופטימלי עם תמיכה ב- PWM לכל אחת מהן.

אני מתכנן להשתמש בארדואינו מכיוון שכבר יש לי כזה, אבל אני פתוח להצעות אם מישהו חושב שפלטפורמה אחרת תהיה התאמה טובה יותר.

רשומות משמרות היו צריך להיות מועסק. מהו פנקס משמרות טוב לשימוש במצב זה? אם PWM מייקר את הפרויקט הזה, אני בסדר להסתדר בלעדיו. אני רוצה לנסות להוציא פחות מ -100 דולר. הייתי קונה 500 נוריות בכמויות גדולות ב- eBay.

מה דעתך על הדרך הטובה ביותר לשלוט במספר כה גדול של נוריות LED? כמו כן, כיצד אמשיך לספק את הכוח? אודה לכל עזרה. אני די מנוסה באלקטרוניקה, פשוט מעולם לא עשיתי שום דבר בקנה מידה כה גדול.

חֲמֵשׁ עֶשׂרֵה תשובות:
#1
+14
ElcoJacobs
2012-08-10 03:09:16 UTC
view on stackexchange narkive permalink

אני המחבר של ספריית ShiftPWM ורק עדכנתי את התיעוד כך שיכלול סכימות ומידע כללי הרבה יותר עבור נוריות נוריות נוריות, רצועות לד ונורות צריכת חשמל גבוהות.

כנראה שכבר התחלת את הפרויקט שלך , אך מכיוון שדף זה זוכה להרבה מבקרים, אני עדיין רוצה לספק תשובה מפורטת.

אם ברצונך לשלוט על 500 נוריות LED עם ShiftPWM, תוכל לקבל כ- 64 רמות בהירות לכל נורית LED ב 60 הרץ. היית משתמש ב -64 רושמי משמרות. מנהלי התקני PWM ייעודיים לחומרה יעניקו לכם רמות בהירות רבות יותר, אך יהיו יקרים מעט יותר. אני חושב שהיתרון העיקרי של הספרייה שלי הוא קלות השימוש, מכיוון שהיא כוללת פונקציות RGB ו- HSV והרבה דוגמאות.

אני אישית הייתי הולך על TLC5916 של TLC5917 במקום רושמי משמרות רגילים, כי הם יש נהג LED זרם קבוע מובנה. זה יחסוך לך הרבה הלחמות, כי אתה לא צריך נגדים.

באתר שלי ( http://www.elcojacobs.com/shiftpwm) יש לי עוד מידע על חיבור נוריות הנורה וכיצד להתמודד עם כונן חוטי האות הארוכים עם הארדואינו במהירות גבוהה.

אם יש לך שאלות נוספות, אנא שאל.

בדקת את התשובה שלי למטה? למרות שהטכניקה שאני מתאר משתמשת בחומרה נוספת, ייתכן שניתן להשתמש באותה גישה לשיפור ניכר של מהירות הספרייה שלך. לא תכננתי את Arduino, אז אני לא מכיר את תזמוני ההוראות שלו, אבל בצורה הפשוטה ביותר אתה יכול להפחית את טעינת המעבד שלך לכל מה שיידרש כדי פשוט לפוצץ חתיכות מה- SPI (אם אתה נמצא כעת בחמישה מחזורים. לסיבית ה- SPI לוקח 16 מחזורים לבייט, זה יהיה מהירות פי 2.5). אולי אפילו תוכל לעשות כמה דברים מתוחכמים יותר בזמן שאתה עדיין פועל במהירות זו.
לדוגמא, נניח שברצונך לקבל שמונה רמות בהירות המייצגות מלא, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64 ו- 1/128. אם הארדואינו יכול לבצע פעולת "AND" או "OR" בערך שנלקח מהמצביע ולהגדיל את המצביע בפחות מארבעה מחזורים, סביר להניח שתוכל להשתמש בשלוש סיביות לפיקסל כדי לאחסן את פרטי הבהירות שלך ובכל זאת להשיג מהירות העברה. של 16 מחזורים לכל 8 נוריות.
חישוב ערכי ה- PWM חופף את פלט ה- SPI בספריה שלי. אני מריץ את ה- SPI ב -4 מגה-הרץ והחישובים אורכים קצת יותר מהפלט של ה- SPI. זה לוקח 43 מחזורי שעון לבייט, כך לכל 8 יציאות. זה מהיר מספיק לרוב ההתקנות. תוכל להשיג מהירות רבה יותר באמצעות אפנון קוד סיביות, שבו יש לך 8 תקופות עדכון, כל תקופה הבאה מחצית מהקודמת הקודמת. כתבתי גרסת BCM, אך היא רגישה יותר לרגע שבו אתה מעדכן את הגדרת הבהירות. זה יכול לגרום להבהוב כאשר הוא לא מיושר. כנראה שאשתמש בו בגרסת המטריצה.
ל- BCM היתרון של הגישה שלך שאתה יכול להשתמש בתזמון 1 / 2,1 / 4 ... אבל עדיין לוקח רק סיכה אחת לכל נורית LED. אם יש לך רקע במדעי המחשב, אולי אתה מעניין איך מחושבים בתים SPI. אני מקבל את מחזור החובה מהזיכרון (2 שעונים) ועושה השוואה (שעון אחד). תוצאת ההשוואה מאוחסנת בשאת, כך שאוכל להזיז אותה לבייט בעזרת סיבוב על נשיאה (שעון אחד). פעולה זו 8 פעמים מכניסה את כל תוצאות ההשוואה לבית אחד שמוכן לשלוח ל- SPI.
#2
+13
Axeman
2009-12-21 13:21:13 UTC
view on stackexchange narkive permalink

פשוט העתק :-)

http://www.evilmadscientist.com/article.php/peggy2

היום אנחנו ' משחררת עדכון לפרויקט הקוד הפתוח LED Pegboard שלנו "פגי". גרסת פגי 2 עוצבה מחדש מהיסוד. וזה נראה ... כמעט בדיוק אותו דבר. השינויים מתחת למכסה המנוע הם משמעותיים, ואנחנו חושבים שזה שיפור גדול מבחינות רבות.

בראש ובראשונה, פגי 2.0 עדיין עושה את אותו הדבר הרעוע: היא מספקת כוח יעיל ל- 25 x 25 מערך של מיקומי LED. פגי נועדה להוציא חלק מהעוקץ, המורכבות והבלגן מהמשחק עם נוריות LED. זהו לוח פלטות אור רב-תכליתי ועוצמתי המאפשר לך להניע ביעילות מאות נוריות נוריות בכל תצורה שתרצה, מבלי לחשב נגד עומס יחיד. אתה יכול להתקין בכל מקום מ- 625 נוריות נוריות, ופגי תדליק אותן עבורך.


פגי 2.0 תואמת כעת גם לארדואינו: היא תומכת בתכנות באמצעות כבל USB-TTL, באמצעות סביבת התוכנה הפופולרית של Arduino.

קישור נפלא! מסומן בסימניות. לא תכננתי לעבוד על פרויקט כזה, אבל אני צריך לעשות את זה עכשיו ראיתי את הסרטון הקטן הזה :-)
@NicolaeSurdu לא שבור. פתחתי את זה ממש עכשיו.
למרות שזה תיאורטי יכול לענות על השאלה, [עדיף] (http://meta.stackexchange.com/q/8259) לכלול כאן את החלקים המהותיים של התשובה ולספק את הקישור להפניה.
#3
+6
davr
2009-12-21 15:09:54 UTC
view on stackexchange narkive permalink

באיזה פריסה אתה רוצה שנוריות הנורה יהיו? אתה יכול לחסוך הרבה עבודה אם אתה קונה כמה מטריצות LED, אתה יכול לקבל מטריצות LED 8x8 LED בצבע יחיד (64 נוריות) תמורת כסף או שתיים.

לא תשיג PWM אמיתי עם AVR ורישומי משמרות על נוריות נוריות רבות אלה, אך ייתכן שתוכל לסחוט 2-4 רמות בהירות. יהיה עליך להריץ את המספרים ולראות מה אפשרי.

Allegro מייצרת רישומי משמרות זרם קבועים של זרם קבוע שתוכננו במיוחד לשליטה במערכי נוריות, כדי שלא צריך נגדים נוספים, שיהפכו את הדברים לפשוטים יותר גם כן. יתכן שלא תוכל להניע את נוריות ה- LED ישירות מפלט ה- AVR אם הוא אינו יכול לספק מספיק כוח, כך שתצטרך להשתמש בטרנזיסטורים. אתה יכול להשיג אותם ב מערכים ב- IC יחיד, וזה גם חוסך קצת עבודה.

כל הנקודות טובות מאוד!
#4
+5
Len Holgate
2009-12-21 17:49:47 UTC
view on stackexchange narkive permalink

אין לי מושג לגבי טווח ה- PWM שאתה צריך עבור נורית LED, אבל עבדתי על בקר PWM עם 64 ערוצים ליישום בקרת סרוו שיכול לתת לי פעימות בין 600us ל -2.4ms. זה משתמש CD74HCT238E (3-8 קו demultiplexors) כדי ליצור 64 ערוצים מ 8 פינים I / O על ATMega168 והוא ניתן לשליטה באמצעות פקודות סדרתיות פשוטות. אני מניח שאתה יכול לשרשר מספר גרסאות של גרסה שונה של בקר זה יחד על קו סדרתי ולטפל בכל 500 נוריות ה- LED ... אתה יכול כנראה להשתמש בגרסת ATTiny2313 של הבקר, שכן דרישות הקושחה שלך יהיו פשוטות יותר.

הבלוג שלי מכיל את מקור ההרכבה ואת הסכימות ופרטי תהליך העיצוב.

#5
+5
David Brenner
2009-12-21 21:57:17 UTC
view on stackexchange narkive permalink

בדוק את ICs "מנהל התקן LED" במכשיר עכבר / digikey. TI, למשל, מייצרת חבורה של דרייברים עם מגוון ממשקים (I2C, SPI) שבהחלט יענו על הצרכים שלכם. רוב מנהלי ההתקנים הללו נועדו לשרשראות חינניות כך שהסידורי החוצה מאחד מוזרם לסידורי של אחר.

לדוגמה, משהו כמו TLC5940 מציע שליטת PWM של 16 ערוצים. אז, בעצם זהו רישום משמרות קבוע של 16 סיביות עם בקרת PWM בגווני אפור בגודל 12 סיביות. אני יכול להמליץ ​​על ה- IC המסוים הזה כשעזרתי לתכנן איתו תצוגה בגודל 80x16.

#6
+4
Lepton
2010-07-29 11:09:17 UTC
view on stackexchange narkive permalink

Mondomatrix מייצרת כמה לוחות נהגים LED סידוריים (rs-485), והיא מבוססת על פלטפורמת Arduino: http://www.displayduino.com/ יתכן שתוכלו להרכיב מערכת המשתמשת בחומרה זו די בקלות

#7
+4
supercat
2011-03-16 22:38:26 UTC
view on stackexchange narkive permalink

אם אינך רוצה יותר מדי סיביות של בקרת PWM עבור כל נורית, ואתה רוצה להימנע מהצורך שיהיה מעבד מגשש עם 500 נוריות בכל מחזור PWM, אתה יכול לשלוט על 8 נוריות עם N סיביות בהירות באמצעות N 74HC595 או שבבים מקבילים. חיבר את הפלטים של כל שבבי ה- N יחד, וחבר את המאפשר למעגלים כלשהם שיאפשרו רק אחד בכל פעם עם תזמון מתאים. סדר כך שהשבב הראשון יופעל חצי מהזמן, השני יופעל לחצי מהשאר וכו '.

כל טעינה מחדש של רושמי המשמרות צריכה להיות מסונכרנת עם קצב PWM, כדי למזער את הכינוי. השפעות (למשל, אם רמת הבהירות עברה במהירות בין 0111 ל -1000, הנקודה במחזור ה- PWM בה התרחש המתג יכולה לשנות לרגע את הבהירות הנראית לעין).

תוך צורך להשתמש ביציאות מרובות 74HC595 לכל נורית LED עשוי להיות מעצבן, גישה זו היא ככל הנראה הפשוטה ביותר שיכולה לשמור על רמות בהירות שונות ללא התערבות מתמשכת של המעבד.

#8
+3
Ricardo
2013-12-12 18:57:24 UTC
view on stackexchange narkive permalink

זה לא עונה ישירות על השאלה, אך היבט נוסף שעליך אולי לשקול הוא ה השתנות האמיצה בין נוריות LED בקבוצת 500 שלך. זה חשוב במיוחד אם נוריות LED אלה מותקנות אחת ליד השנייה, כמו במטריצה ​​או בתצוגות בעלות 7 קטעים. ראה תשובה זו לקבלת פרטים נוספים על אופן הטיפול בבעיה זו, במיוחד באמצעות תיקון נקודות כדי לפצות על וריאציות בהירות LED.

חוויתי בעיה זו כאשר קיבלתי 200 נוריות LED אדומות של 1 מ"מ לסט תצוגות גדולות בעלות 7 קטעים שבניתי. הפיתרון הזול שלי לפתרון הבעיה כלל את הדברים הבאים:

  1. בניתי בודק LED בקרש לחם כדי לסווג סטים של נוריות בקטגוריות אמיצות שונות
  2. הרכבתי כל קטע באמצעות נוריות באותה קטגוריה (בתכנון שלי כל קטע כלל 5 נוריות המותקנות בסדרה)
  3. פיציתי על ההבדל בכל בהירות של קטע באמצעות נגדים שונים להגבלת זרם. לדוגמה, עבור קטע עם נוריות LED בהירות, הייתי משתמש בנגד של 100 אוהם, ואילו עבור קטע אחר עם נוריות LED עמומות יותר, הייתי משתמש בנגדים של 120 אוהם.
נקודה תקפה, אך אינה עונה על השאלה.
@MattYoung מוסכם. השאלה נענית במידה רבה על ידי כל התשובות האחרות. רק רציתי להשלים את התשובות הללו, לטפל בבעיה צדדית שעשויה להשפיע על עיצוב ה- OP.
#9
+2
x4mer
2011-09-17 22:47:29 UTC
view on stackexchange narkive permalink

אני מציע להשתמש בטכניקת אפנון זווית בינארית המתוארת במאמר זה http://www.artisticlicence.com/WebSiteMaster/App%20Notes/appnote011.pdf

או לבדוק את ShiftPWM ספרייה http://www.elcojacobs.com/shiftpwm/

למרות שזה יכול לענות תיאורטית על השאלה, [עדיף] (http://meta.stackexchange.com/q/8259) לכלול כאן את החלקים המהותיים של התשובה ולספק את הקישור להפניה.
#10
+1
Leon Heller
2009-12-21 22:36:52 UTC
view on stackexchange narkive permalink

XMOS משתמש ב- Macroblock MBI5026 עם ערכות אריחי LED שלהם. אני חושב שהם משמשים ברוב המערכות המקצועיות האחרות.

ליאון

#11
+1
XTL
2010-07-28 18:52:59 UTC
view on stackexchange narkive permalink

שבבי נהגים ייעודיים עם ממשקים טוריים אכן יהיו כנראה המסלול הטוב ביותר. טיפול בפנקסי משמרות בודדים פירושו ככל הנראה מעגל מורכב מאוד. לפחות מקסים ו- TI עושים כאלה. אני לא זוכר אם לאחד מהם יש מודל שמתאים במיוחד לכל כך הרבה.

זה עדיין יידרש הרבה חומרה.

לגבי כוח, תכנות ואוטובוסים, גליון הנתונים ככל הנראה לכל הנהג יהיה הכי הרבה מידע שתזדקק לו.

#12
+1
supercat
2012-08-13 21:19:11 UTC
view on stackexchange narkive permalink

בתחום התוכנה, אם מספר הגדרות הבהירות המובהקות שאתה צריך אינו גדול מדי, זה עשוי להיות מועיל לאחסן את הנתונים בפורמט "מישורי סיביות" (כמתואר בתשובה האחרת שלי מבוססת חומרה ואז יש לשגרות הפלט להשתמש במפעילים בוליאניים לפעול על 8 פיקסלים בבת אחת. לצורך יעילות מקסימאלית, הדבר ידרוש שגרות פלט נפרדות מרובות המשמשות לחלקים שונים של מחזור PWM; לדוגמא, אם מעוניינים להשתמש בערכי בהירות של 4 סיביות, ישתמש בשמונה שגרות של הטופס:

 movf bit0Comp, w; צריך להיות 00 או FF תלוי בסיבית 0 של ההשוואה (FF אם ברור) iorwf POSTINCF, w; סיבית 0 של נתונים; השתמש תמיד ב- IORWF ו- wf POSTINCF, w; סיבית 1 של נתונים; השתמש ב- IORWF אם מוגדר ביט 1 של השוואה; ANDWF אם ברור ו- w POSTINCF, w; סיבית 2 של נתונים; השתמש ב- IORWF אם מוגדר ביט 1 של השוואה; ANDWF אם ברור ו wf POSTINCF, w; סיבית 2 של נתונים; השתמש ב- IORWF אם מוגדר ביט 1 של השוואה; ANDWF אם ברור movwf SPIREG; אחסן בתים שנוצרו (סיביות שהוגדרו אם> = השוואה) 

ישתמש בשילובים שונים של IORWF ו- ANDWF, בהתאם לערך ההשוואה. שים לב כי באמצעות גישה זו, כפי שמודגם, ניתן לעדכן את ערכי בהירות הפיקסלים בכל נקודה במחזור ה- PWM ללא הבהוב בתנאי שכל ארבעת הביטים נכתבים בין שיחות לשגרה של שינוי התצוגה, או על ידי כך ששגרת עדכון הפיקסלים קובעת אם המשמרת הבאה תפיק "1" או "0" לפיקסל, או שתקבע או תנקה את כל הסיביות של הפיקסל (פעולה כלשהי שתגרום לו לעשות את מה שהיא הולכת לעשות בכל מקרה) ואז תכתוב כל סיביות שערכן צריך להיות מנוגדים. שים לב גם שניתן להשיג סולמות בהירות לא ליניאריים שרירותיים על ידי שינוי תזמון עדכוני התצוגה, או על ידי שימוש בערכי השוואה מסוימים יותר מפעם אחת במחזור PWM. קשקשי בהירות לא ליניאריים שימושיים לעיתים קרובות עם נוריות LED, שכן ההבדל בין הבהירות בין חובת 1/128 לחובת 2/128 נראה בדרך כלל הרבה יותר מההבדל בין 127/128 ל- 128/128 (או אפילו בין 7/8 ל 8/8).

#13
+1
Carl
2012-08-15 02:25:06 UTC
view on stackexchange narkive permalink

FPGA או CPLD יכולים להיות טובים למשימות כאלה מכיוון שהם מציעים פינים רבים של קלט / פלט. לכו על הפשוטה והזולה ביותר. אם אחד לא מספיק, השתמש בזוג.

אתה יכול לתת לנו עוד כמה פרטים על הסיבה שזו אפשרות טובה, כרגע אני יודע על זה, אבל אני יודע מה האפשרויות ומהן הטכנולוגיות המוצעות שאתה מפרט, כנראה שב- Origial Poster (OP) אין כאלה רקע.
אני לא בטוח שזו האופציה הטובה ביותר אבל רציתי שהיא תוזכר בשלמותה. אם שליטה על 500 נוריות LED עם PWM, באופן כזה או אחר, בסופו של דבר יש צורך ב -500 חוטים הניתנים לשליטה. קשה למצוא מיקרו-בקר עם כל כך הרבה סיכות פלט. יש הרבה דרכים לעקוף את זה עדיין באמצעות מיקרו-בקרים, אך אחד או כמה CPLDs / FPGA זולים יכולים בקלות לתת סיכות פלט אלה.
#14
+1
Rocketmagnet
2012-08-15 05:35:08 UTC
view on stackexchange narkive permalink

כמעט בוודאות תוכלו לעשות זאת בקלות באמצעות PSoC3 או PSoC5.

שבבי PSoC הם מיקרו-בקרים המכילים חומרה דיגיטלית הניתנת להגדרה מחדש, קצת כמו FPGA או CPLD. זה אומר שאתה יכול ליצור מעגלים מורכבים לביצוע דברים יוצאי דופן כמו נהיגה של 500 נוריות עם PWM. יתרה מכך, ככל הנראה תוכלו ליישם את כל העניין באמצעות הבלוקים הדיגיטליים הניתנים להגדרה מחדש, כלומר חלק המעבד של השבב צריך רק לכתוב את בהירות ה- LED הרצויות למערך.

504 נוריות נכנסות מלבן 21 x 24. אם היו לך 24 ערוצי PWM ו- 21 GPIO, היית יכול לעבוד. נחש מה? ל- PSoC יש יותר מזה.

ניתן להגדיר 24 ערוצי PWM בקלות ב- PSoC ולהגדיר 21 פינים אחרים כך שהם יהיו חלק ממאגר המשמרות. לאחר מכן, הגדר כמה ערוצי DMA כדי לשאוב בתים מהזיכרון ליציאות PWM ואתה צוחק. כל מה שהמעבד צריך לעשות עכשיו זה ליצור גרפיקה. ל- PSoC3 יש ליבת 8051 של 8 ביט, ואילו ל- PSoC5 יש ARM של 32 ביט. תבחר. ICs החיצוניים היחידים שתזדקק להם הם כמה ULN2803 כדי לספק את זרם הכונן הגבוה לשורות. יציאות ה- PWM צריכות להכיל מספיק כונן זרם עבור נוריות LED בודדות.

זהו מיצוי יתר לנהיגה של נוריות LED. ישנם מנהלי התקני LED ייעודיים, זולים ומעוצבים מראש, המיועדים לשרשור כמויות גדולות כאלה המשמשות לתצוגות ענקיות כל הזמן. אין צורך להמציא את כל זה מחדש ובעלות גבוהה יותר.
@nemik - למעשה, העלות הכוללת של הצ'יפס (מפרנל היקר) היא 6.80 ליש"ט בלבד.
#15
  0
nemik
2012-08-14 09:54:08 UTC
view on stackexchange narkive permalink

השתמש בחיסכון בקנה מידה. אתרים סיניים כמו Aliexpress מוכרים גדילי LED מבוססי WS2811 במחיר של $ 15 לכל 50 נוריות. הם ניתנים לפנייה בנפרד, בהירים, בדרך כלל עמידים למים, ויש להם PWM לבהירות. אין הלחמות או משמרות רושמים להתעסק עם אף אחד מהם. עושה את כל זה בעצמך אני מהמר יעלה לך יותר, ייקח הרבה יותר זמן ויהיה מאוד מתסכל. בנוסף אתה נמצא ב- Oz כך שהמשלוח מסין לא יהיה יקר מדי.

אלה מיוצרים להכנת צגי LED ענקיים כך שהם נוטים להיות די זולים. רק דאג להזריק כוח בערך כל 50 נוריות בערך לקבלת הביצועים הטובים ביותר.

יש גם ספריות Arduino כדי שיהיה קל לשימוש.

15 דולר ל -50 נוריות LED? אז עבור 500 נוריות, זה מגיע ל -150 דולר? ויש לך עצב לומר לי שהפתרון שלי יקר? -1
כמו כן, בבקשה תוכל לספק קישור לכך. WS801 לא מצליח בגוגל, וגם לא מופיע בחיפוש ב- [Aliexpress] (http://www.aliexpress.com/wholesale?SearchText=WS801&catId=0&manual=y)
סליחה, התכוונתי ל WS2811, כמו אלה http://www.aliexpress.com/store/product/WS2811-LED-pixel-node-DC5V-input-full-color-RGB-string-50pcs-a-string-IP68- מדורג / 701799_581805567.htmlor, ללא עמעום PWM, אלה http://www.aliexpress.com/store/product/DC5V-input-Square-type12mm-led-string-light-RGB-color-50pcs-a-string/701799_605976057 .html
אות טורי אחד להנעת 50 נוריות עם עמעום PWM.תודה, זה בדיוק מה שאחרי.אך רושם משמרות רגיל מספק סיכת "תפס" להעתקת נתונים שנאגרו לפלטים לאחר העברת המסגרת המלאה.אין כאן תפס ולכן אני מצפה לרעש מורגש בשיעורי רענון גבוהים.השבבים תומכים בנתונים של 400 Kbps עם 15 סיביות לפיקסל, כך שהמסך יציג שטויות של 1.9 אלפיות השנייה תוך כדי עדכון המסגרת.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 2.0 עליו הוא מופץ.
Loading...