Мазмуну:

RGB LED матрицасы: 5 кадам
RGB LED матрицасы: 5 кадам

Video: RGB LED матрицасы: 5 кадам

Video: RGB LED матрицасы: 5 кадам
Video: RGB светодиодный дисплей 64x32 P2.5/P3 в связке с Arduino 2024, Ноябрь
Anonim
Image
Image
Аппараттык Дизайн
Аппараттык Дизайн

Издөө Instructable, жана сиз көптөгөн LED матрицалык долбоорлорду таба аласыз. Алардын бири да мен каалагандай болгон жок, ал бир нерсени өндүрүү үчүн аппараттык жана программалык камсыздоонун өз ара аракеттешүүсүн изилдөө жана акыркы продуктту драйвер менен тыкан ПКБда өндүрүү үчүн болчу, мен "LED экранына" жогорку деңгээлди колдонуп көрөлү. конструкциялар (мис., конкреттүү пикселдерди коюуга каршы сызык чийүү). Бул бөлүк мен үчүн маанилүү болгон, анткени LED матрицасынын драйверлеринин көбү жылаңач сөөктөр жана программалык түрдө сүрөт же анимация түзүү жолунда көп нерселерди камсыз кылышпайт. Бул башка драйверлер менен сүрөттөрдү жана анимацияларды түзө албайсыз дегенди билдирбейт, болгону сиз долбоордон долбоорго чейин кайталануучу иштерди жасашыңыз керек болот.

Ошентип, мен кыялымды ишке ашыруу үчүн жолго чыктым. Биринчи кадам аппараттык долбоорлоо болчу. Бул, балким, мен үчүн эң кыйын болду, анткени менин фонум көбүрөөк программалык камсыздоо. Дагы, көптөгөн бышырылган дизайндар бар болчу, мен аларды шыктандыруу үчүн колдондум, бирок мен муну үйрөнгүм келди, андыктан 4x4 матрицаны нан тактасына прототиптедим. Мен бул процесс аркылуу көп нерсени үйрөндүм, анткени менин алгачкы кайталоолорум иштебей калды. Бирок, мен иштеп жаткан аппараттык дизайнды кылдым, бул мага айдоочуну иштеп чыгууга мүмкүнчүлүк берди.

Мен Arduino драйвер платформасын тандадым, анткени ал кеңири жеткиликтүү жана интернетте көптөгөн шилтемелер бар. Карьералык тажрыйба мага айдоочунун иштөөчү версиясына жабдыктык аракеттериме караганда жакшыраак жетүүгө мүмкүндүк берди, бирок мен дагы ATMega микро контроллери үчүн драйвердин иштөөсүн оптималдаштырып, мага жаккан программалоо APIсин иштеп чыкканымда дагы көп кайталоолор болду.

Бул Нускамалуу документ долбоорду жана менин долбоорумдагы кээ бир негизги нерселерди документтештирет. Бул долбоор жөнүндө көбүрөөк маалыматты менин веб -сайтымдан таба аласыз, анын ичинде толук RGB LED матрицаңызды куруу үчүн сатып ала аласыз.

1 -кадам: Аппараттык дизайн

Менин аппараттык дизайнымдын негизги максаты мен программалай ала турган RGB LED диапазонун түзүү болчу, бирок мен да көп акча короткум келген жок. Мен чечкен ыкма, LEDди башкаруу үчүн 74HC595 нөөмөт регистрлерин колдонуу болчу. Зарыл болгон нөөмөт реестрлеринин санын азайтуу үчүн, мен RGB светодиоддорун матрицанын жайгашуусуна жайгаштырдым, анда кадимки аноддор катарда, кызыл, жашыл жана көк катоддордун мамылары колонкаларга байланган. 4х4 матрицасы үчүн схема тиркелген схемага окшош болгон.

Дароо белгилей турган бир нерсе, матрицалык схеманы эске алганда, каалаган LED диоддорун бир убакта күйгүзүү мүмкүн эмес болгон кээ бир LED жарык конфигурациялары бар. Мисалы, матрица бир эле учурда бири -биринен диагоналдуу болгон эки диодду күйгүзө албайт, анткени саптарды жана мамычаларды иштетүү эки карама -каршы келген диоддун керектүү диоддорго перпендикуляр диагоналында күйүшүнө алып келет. Мунун тегерегинде иштөө үчүн, биз ар бир сапты сканерлөө үчүн мультиплекстөөнү колдонобуз. Интернетте мультиплексирлөө техникасын камтыган көптөгөн ресурстар бар, мен аларды бул жерде кайталоого аракет кылбайм.

Мен жалпы аноддук светодиоддорду колдонгондуктан, бул саптар оң күчтү камсыз кылат жана мамычалар жерге чөгөт. Жакшы жаңылык, 74HC595 нөөмөт реестрлери булакты да, энергияны да чөктүрө алат, бирок жаман кабар аларда канчалык күч булагына же чөгүп кетишине чек коюлгандыгы. 74HC595тин жеке казыктары 70 мА максималдуу ток тартууга ээ, бирок 20 мАдан аз кармоо эң жакшы. Биздин RGB светодиоддорундагы жеке түстөрдүн ар бири 20 мА чиймеге ээ. Бул 74HC595, эгер мен алардын бардыгын күйгүзгүм келсе, диоддордун бир катарына түздөн -түз кубат бере албайт дегенди билдирет.

Ошентип, катарды түздөн -түз иштетүүнүн ордуна, 74HC595 анын ордуна ар бир транзисторду айдайт, ал эми транзистор катарды иштетүүчү токту күйгүзүп же өчүрөт. Дизайн жалпы аноддук диоддорду колдонгондуктан, коммутатордук транзистор PNP болот. Эгерде биз жалпы катоддук диодду колдонуп жаткан болсок, коммутатордук транзистор NPN болмок. Белгилей кетсек, PNP транзисторун колдонуу менен, кезек регистринин аны күйгүзүү жөндөөсү азыраак болуп калат, анткени PNP транзисторуна эмитент менен базанын ортосундагы терс чыңалуу керек, бул оң токтун агып кетүүсүнө мүмкүндүк берет. катар

Дагы бир нерсени эске алуу керек - нөөмөт регистрлеринин каалаган бит макети. Башкача айтканда, матрицада кайсы саптарды же мамычаларды башкарууну көзөмөлдөгөн сменалык регистрлердин арасында. Мен жөнөткөн дизайн - бул ромашка чынжырлуу нөөмөт регистрлерине жөнөтүлгөн биринчи бит, же "эң маанилүү бит", LED элементтеринин кызыл элементинин колоннасын көзөмөлдөйт, экинчи бит биринчи тилкенин жашыл элементин, үчүнчү бит биринчи тилкени башкарат көк элемент, төртүнчү бит экинчи тилкенин кызыл элементин көзөмөлдөйт,… бул үлгү солдордон оңго карай кайталанат. Кийинки жөнөтүлгөн бит акыркы, же астынкы сапты, экинчисинен экинчи сапка чейин көзөмөлдөйт … бул акыркы жөнөтүлгөнгө чейин кайталанат, же "анча чоң эмес бит" матрицанын биринчи же жогорку саптарын башкарат..

Акыр -аягы, мен RGB светодиодундагы ар бир светодиод үчүн кандай резисторлорду колдоноорумду аныкташым керек болчу. Сиз керектүү резисторду эсептөө үчүн алдыга чыңалуу менен керектүү токту айкалыштырган стандарттык формуланы колдоно алсаңыз да, мен ар бир светодиоддун агымын 20 миллиампка коюу кызыл, жашыл жана көк LEDлердин бардыгы күйүп турганда ак түскө алып келгенин байкадым.. Ошентип, мен аны көзгө иле баштадым. Ак түстөгү өтө көп кызыл түс токту азайтуу үчүн кызыл LEDдин каршылыгын жогорулатууну билдирет. Мен туура деп эсептеген ак түстү пайда кылган комбинацияны тапмайынча, ар кандай омдордун резисторлорун алмаштырууну кайталадым. Акыркы айкалышы кызыл LED үчүн 180 Ω, жашыл LED үчүн 220 Ω жана көк LED үчүн 100 was болгон.

2 -кадам: Аппараттык курулуш - Нан тактасы

Аппараттык курулуш - Нан тактасы
Аппараттык курулуш - Нан тактасы
Аппараттык курулуш - Нан тактасы
Аппараттык курулуш - Нан тактасы

Аппараттык конструктордун биринчи этабы нан -интернат болгон. Бул жерде мен RGB светодиоддору менен 4х4 матрицасын түздүм. Бул матрицаны башкаруу үчүн 16 бит, RGB мамычалары үчүн 12 жана ар бир сап үчүн 4 талап кылынат. Эки 74HC595 нөөмөт реестри баарын чече алат. Мен адегенде иштейт деп ойлогон схеманы изилдеп, иштеп чыктым, анан аны нан тактасына курдум.

Балким, нан бышыруунун эң чоң көйгөйү бардык зымдарды башкаруу болгон. Мен нандар үчүн даярдалган зым топтомун алдым, бирок окуя анда бир аз ыңгайсыз болду. Мен пайдалуу деп тапкан бир амал - бул Arduino тактасына туташуу үчүн "порт" түзүү. Башкача айтканда, Arduinoдогу казыктарды нандын такасындагы ар кандай IC казыктарына туташтыруунун ордуна, нан тактасындагы бир нече катарды Arduino үчүн туташуу түйүнү деп бөлүп, анан тиешелүү ID төөнөгүчтөрдү ошол саптарга туташтырыңыз. Бул долбоор үчүн сизге Arduino менен беш гана байланыш керек: +5V, жер, маалымат, саат жана бекиткич.

Банндын курулушу бүткөндөн кийин, мен аны сынап көрүшүм керек болчу. Бирок, сменанын регистрлерине туура сигналдарды жөнөтүүчү драйвер жок болгондон кийин, мен аппараттык түзүлүштүн иштешин текшере албадым.

3 -кадам: Айдоочу программалык камсыздоонун дизайны

Image
Image

Программалык камсыздоону иштеп чыгуу боюнча өзүмдүн жеке тажрыйбамды эске алганда, бул долбоордун бир бөлүгү болгон, мен, балким, эң туура жолду тандадым. Мен башка Arduino негизделген LED матрицасынын көптөгөн драйверлерин сурамжылап көрдүм. Албетте, жакшы драйверлер бар, бирок мен каалаган дизайнга ээ эмес. Айдоочунун дизайндык максаттары:

  • Программалык түрдө сүрөттөрдү жана анимацияларды түзө алуу үчүн жогорку деңгээлдеги API менен камсыз кылыңыз. Мен көргөн айдоочулардын көбү катуу коддолгон сүрөттөргө көбүрөөк көңүл бурушту. Ошондой эле, мен C ++ программисти болгондуктан, мен LED матрицасына тартуу ишмердүүлүгүн ишке ашыруу жана башкаруу үчүн жакшы объектке багытталган дизайнды колдонгум келди.
  • Экрандагы сүрөттү башкаруу үчүн эки буферлүү ыкманы колдонуңуз. Бир буфер программалык түрдө тартылган нерсе, экинчиси матрицанын пикселдеринин абалын билдирет. Бул ыкманын артыкчылыгы - мультиплекстин жаңыртуу циклдеринин ортосунда экрандын кийинки кадрдык жаңыртуусун толугу менен көрсөтүүңүз талап кылынбайт.
  • PWMди колдонуп, RGB кызыл, жашыл жана көк элементтердин жөнөкөй айкалыштары аркылуу көрсөтө ала турган жети түстөн ашык түстөргө уруксат бериңиз.
  • Драйверди жазыңыз, ал менин жалпы матрицалык дизайн ыкмама ылайык келген ар кандай өлчөмдөгү RGB LED матрицалары менен "жөн эле иштейт". Белгилей кетчү нерсе, менин аппараттык дизайн 74HC595 сменалык реестрин колдонот, бирок мен айдоочумдун аппараттык дизайныма окшош бит макетин колдонуу менен орнотулган/өчүрүү механизми менен иштешин күтмөкмүн. Мисалы, мен айдоочумдун мамычаларды башкаруу үчүн DM13A чиптерин жана катарларды көзөмөлдөө үчүн 74HC595 чипин колдонгон аппараттык дизайн менен иштешин күтмөкмүн.

Эгерде сиз түз эле драйвердин кодун кароону кааласаңыз, аны GitHubдан бул жерден таба аласыз.

Менин айдоочумдун биринчи кайталоосу Arduino платформасынын мүмкүнчүлүктөрү боюнча бир аз үйрөнүү ийрими болду. Эң ачык чектөө - RAM, бул Arduino Uno жана Nano үчүн 2K байт. Мындай сценарийде C ++ объектилерин колдонуу, объекттердин эс тутумунан улам көп учурда сунушталбайт. Бирок, эгер мен туура жасасам, C ++ объектилеринин пайдасы алардын наркынан (RAM) ашып кеткенин сездим.

Экинчи чоң көйгөй, мен RGB LEDдин жети примитивдүү түстөрүнөн көбүрөөк генерациялоо үчүн, импульстун регистрлери аркылуу импульстун модуляциясын кантип ишке ашыруу керектигин ойлоп табуу болгон. Linux платформаларында көп жылдар бою программалангандыктан, ырааттуу убакытты талап кылган процесстерди башкаруу үчүн жип сыяктуу конструкцияларды колдонууга көнгөм. Сменалык реестрди жаңыртуу операциясынын убактысы мультиплекстөөнү колдонгон LED матрицасына драйвер жасоодо абдан маанилүү болуп калат. Мунун себеби, мультиплекстөө ушунчалык тез болуп жатканына карабастан, сиздин көзүңүз жеке LED жарыгынын күйүп -өчүп турганын көрө албаса да, сиздин айларыңыз кандайдыр бир светодиод күйүп турган жалпы агрегат убактысын айырмалай алат. Эгерде бир катар LEDлар башкаларга караганда узак убакыт бою үзгүлтүксүз күйүп турса, мультиплекстөө учурунда ал жаркырап көрүнөт. Бул матрицанын тегиз эмес жарыктыгына же бүтүндөй матрицанын мезгил -мезгили менен стробуна алып келиши мүмкүн (бул бир жаңыртуу цикли башкаларга караганда көбүрөөк убакытка созулганда болот).

Мага нөөмөт реестринин жаңыртууларын макулдук берүү үчүн ырааттуу убакыт механизми керек болгондуктан, бирок Arduino жипти расмий түрдө колдобойт, мен өзүмдүн жипке окшош механизмимди түзүүгө туура келди. Менин биринчи кайталоом - бул Arduino loop () функциясына көз каранды болгон цикл таймерин түзүү жана акыркы жолу иш -аракет кылынгандан бери белгилүү бир убакыт өткөндө иш -аракетти ишке ашыруу. Бул "кооперативдик көп тапшырманын" бир түрү. Жакшы угулат, бирок атуу ылдамдыгы микросекунд менен өлчөнгөндө иш жүзүндө бул карама -каршы келген. Мунун себеби, эгерде менде бул цикл таймерлеринин экөөсү бар болсо, анда алардын бир иш -аракети көп убакытты талап кылды, экинчи аракет каалагандан кийинчерээк күйүп кетти.

Мен бул көйгөйдүн чечими Ардуинонун эне саатын үзүү механизмин колдонуу экенин билдим. Бул механизм абдан ырааттуу интервалда кичине кодду иштетүүгө мүмкүндүк берет. Ошентип, мен драйвер кодун матрицанын жылышын жөнөтүү үчүн кодду иштетүү үчүн сааттын үзүлүшүн колдонуунун дизайн элементинин айланасында иштеп чыктым, мультиплекс циклиндеги кийинки жаңыртууну каттайт. Муну ишке ашыруу үчүн жана сменалык регистрлерге активдүү таштоого тоскоол болбоо үчүн экрандын сүрөтүнө жаңыртууларга жол берүү үчүн (биз "жарыш шарты" деп атаган нерсе), мен сменалык регистрдин биттери үчүн эгиз буферлерге ээ болуу ыкмасын колдондум. жазуу үчүн жана бирөө окуу үчүн. Колдонуучу матрицанын сүрөтүн жаңыртканда, бул операциялар жазуу буферине келип чыгат. Ал операциялар аяктаганда, үзгүлтүктөр убактылуу токтотулат (бул сааттын үзгүлтүгү иштей албайт дегенди билдирет) жана жазуу буфери мурунку окуу буферине алмаштырылган жана бул жаңы окуу буфери эмес, анда чечмелөө кайра иштетилет. Андан кийин, саат үзгүлтүккө учураганда, кийинки бит конфигурациясын нөөмөт регистрлерине жөнөтүү убактысы келди, бул маалымат учурдагы окуу буферинен окулат. Ошентип, сааттын үзгүлтүккө учуроосунда окулушу мүмкүн болгон буферде эч кандай жазуу болбойт, бул нөөмөт регистрлерине жөнөтүлгөн маалыматты бузушу мүмкүн.

Калган айдоочунун дизайны объектке багытталган дизайндын салыштырмалуу жөнөкөй учуру болгон. Мисалы, мен каалаган экрандын абалы үчүн жылыш регистринин бит сүрөтүн башкаруу үчүн объект түздүм. Бит сүрөтүн башкарууга тиешелүү кодду капсула кылуу менен, жогоруда айтылган эгиз буфердик ыкманы түзүү өзү эле жөнөкөй көнүгүү болгон. Бирок мен бул Нускаманы объектке багытталган дизайндын артыкчылыктарын даңазалоо үчүн жазган эмесмин. Башка дизайн элементине Glyph жана RGB Image түшүнүгү кирет. Глиф - бул тубаса түстүү маалыматка ээ болбогон негизги сүрөт. Сиз муну ак -кара сүрөт катары элестетсеңиз болот. Глиф LED экранга тартылганда, "ак" пикселдердин кандай түскө боёлушу керек экенин көрсөтүү үчүн түстүү маалымат берилет. RGB Image - бул ар бир пикселдин өзүнүн түстүү маалыматы бар сүрөт.

Мен сизге Arduino эскизинин мисалдарын карап чыгууну жана драйверди RGB LED матрицасында сүрөттөрдү жана анимацияларды түзүү үчүн кантип колдонуу керектигин билүү үчүн, айдоочунун үстүнкү документтерин карап чыгууну сунуштайм.

4 -кадам: LED Ghosting

LED Ghosting
LED Ghosting
LED Ghosting
LED Ghosting

LED матрицасында "арбак" - бул матрицада каалаган убакта жаркырап турган LED феномени, адатта өтө төмөндөтүлгөн деңгээл. Менин баштапкы аппараттык дизайным, айрыкча акыркы катарда, арбакка сезгич болчу. Мунун себеби эки нерсеге байланыштуу: транзисторлор дароо өчпөйт жана RGB светодиоддорундагы паразитардык сыйымдуулук.

Биз катарларды сканерлеп жатканда, транзисторлор дароо өчпөй тургандыгына байланыштуу, кийинки катар күйгүзүлгөндө сканерлөө циклиндеги мурунку сап дагы деле жарым -жартылай иштейт. Эгерде мурунку катарда өчүрүлгөн мамыча жаңы сапка киргенде жаңыдан күйгүзүлсө, мурунку катардагы транзистордун бурулуш процессинде турганда, мурунку катардагы ошол мамычанын диоду бир азга күйүп калат. өчүк Транзисторду өчүрүү үчүн көп убакыт талап кылынган нерсе - бул транзистордун базасындагы каныкуу. Бул транзистордун коллектордук-эмитенттик жолун базадан ток жок болгондо, жок дегенде каныкканга чейин өткөрүүнү улантууга алып келет. Биздин мультиплекстүү жаңыртуу цикли саптарды микросекунд менен өлчөнгөн убакытка атайылап кошууга алып келерин эске алганда, мурунку катардагы каныккан транзистордун өткөргүч бойдон калган убактысы анын көрүнүктүү бөлүгү болушу мүмкүн. Натыйжада, көзүңүз алдыңкы катардагы LED күйүп турган убакыттын өтө кичинесин сезе алат.

Транзистордун каныктыруу көйгөйүн чечүү үчүн, транзистор күйүп турганда базага кичине арткы токту алып келүү үчүн транзисторго Schottky диодун база менен коллектордун ортосуна кошууга болот. Бул өз кезегинде транзистор базадан ток алынып жатканда тезирээк өчүп калышына алып келет. Бул эффектин терең түшүндүрмөсү үчүн бул макаланы караңыз. Бул бөлүмдөгү сүрөттөн көрүнүп тургандай, диодсуз элес абдан байкалат, бирок диодду ар бир катар үчүн схемага кошуу арбакты олуттуу түрдө жок кылат.

RGB светодиоддору мите сыйымдуулук деп аталган дагы бир көрүнүшкө дуушар болушат. Мунун түпкү себеби, RGB LED бирдигиндеги үч түстүү LEDдин ар бири ар башка алдыга чыңалууга ээ болушу. Алдыңкы чыңалуудагы бул айырмачылык ар бир жеке LED түстөрүнүн ортосундагы электр сыйымдуулугуна таасирин тийгизиши мүмкүн. Электр заряды LED блогунда кубаттуулук болгондо, электр энергиясы өчүрүлгөндө, паразиттик сыйымдуулукту бошотуу керек. Эгерде бул LED мамычасы башка катарда иштөө үчүн күйгүзүлгөн болсо, паразиттик заряд ошол мамычалар аркылуу LED агып чыгып, анын кыскача жаркырашына алып келет. Бул эффект бул макалада сонун түшүндүрүлгөн. Чечим - бул паразиттик заряддын светодиодунан башка, башкача айтканда, мамычаны кайра иштетүүдөн мурун, разрядка LED убактысын берүү. Менин аппараттык дизайнымда, бул күчтү жерге туташтырган ар бир катардын электр линиясына резистор кошуу аркылуу ишке ашат. Бул катар иштетилгенде көбүрөөк токтун тартылышына алып келет, бирок катар иштетилбегенде паразитардык сыйымдуулук үчүн разряд жолун камсыз кылат.

Белгилей кетүүчү нерсе, иш жүзүндө мен паразиттик сыйымдуулуктун эффектин дээрлик байкабай жатам (эгер издесеңиз, аны таба аласыз), ошондуктан мен бул кошумча резисторду милдеттүү эмес деп эсептейм. Каныккан транзисторлор үчүн жай убакыттын таасири бир топ күчтүү жана байкаларлык. Ошентсе да, эгерде сиз бул бөлүмдө берилген үч сүрөттү текшерсеңиз, анда резисторлор жай транзистордун өчүрүү убактысынан дагы пайда болгон ар кандай элестерди толугу менен жок кыларын көрө аласыз.

5 -кадам: Акыркы өндүрүш жана кийинки кадамдар

Image
Image

Бул долбоордун акыркы этабы мен үчүн басылган платаны (ПХБ) түзүү болчу. Мен PCB долбоорлоо үчүн Fritzing ачык булак программасын колдондум. 100x10 диоддорун 10х10 тактайга жайгаштыруу үчүн көп кайталануучу тапшырмалар бар болчу, бирок мен долбоордун бул фазасын кызыктай канааттандырарлык деп таптым. Ар бир электрдик жолдун кантип пайда болорун табуу табышмакка окшош болчу жана бул табышмакты чечүү ийгилик сезимин жараткан. Мен схемаларды өндүрүү үчүн орнотула элек болгондуктан, мен бажы PCB чакан чуркап көптөгөн онлайн ресурстардын бирин колдонгон. Бөлүктөрдү бириктирүү абдан түз эле, анткени менин дизайным тешик аркылуу бүт тетиктерди колдонгон.

Бул Instructable жазылып жаткан учурда, менин RGB LED Matrix долбоорлорум үчүн төмөнкү пландарым бар:

  1. Программистке эң жогорку деңгээлдеги функцияны иштетүү үчүн драйверди API катмарында өркүндөтүүнү улантыңыз, айрыкча текстти жылдыруу.
  2. 16x16 же 16x32 сыяктуу чоңураак матрицалык дизайндарды түзүңүз.
  3. Катарды которуштуруу үчүн BJTлердин ордуна MOSFETтерди колдонууну изилдеңиз
  4. Мамычаларды которуштуруу үчүн 74HC595 эмес, DM13As туруктуу ток айдоочуларын колдонуп көрүңүз
  5. Teensy, ODROID C2 же Raspberry Pi сыяктуу башка микро көзөмөл платформалары үчүн драйверлерди түзүңүз.

Белгилей кетсек, аппараттык дизайн да, драйвер да GitHub репозиторийинде GPL v3 ачык булак лицензиясынын алдында чыгарылган. Мындан тышкары, PCB өндүрүштөрү менин ПХБ дизайнымды "кичине чуркап" жасашса да, мен жеке муктаждыгымдан алда канча көп нерсени алам. Ошентип, мен бул жерде менин веб -сайтымдан RGB LED матрицасынын ар кандай конструкциялары үчүн толук комплекттерди сатам (ПХБ жана анын бардык бөлүктөрү).

Сунушталууда: