Мазмуну:
- Жабдуулар
- 1 -кадам: Алгоритмдер 101
- 2 -кадам: Алгоритмдер
- 3 -кадам: LED тилкеси: масканы 3D басып чыгаруу
- 4 -кадам: LED Bar Alternatives
- 5 -кадам: LED тилкесинин корпусу
- 6 -кадам: Control Panel
- 7 -кадам: Түймө түйүн
- 8 -кадам: Rotary Encoder
- 9-кадам: 7 сегменттүү дисплей
- 10 -кадам: Башкы контролерлор кеңеши
- 11 -кадам: Ассамблея
- 12 -кадам: Код
- 13 -кадам: Кантип колдонуу керек
Video: Алгоритм машинасы: 13 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Мен 15 жылдан бери колледждин деңгээлинде информатика сабагынан сабак берип келем жана менин тажрыйбам программалоо жагында болсо да, издөө жана сорттоо үчүн стандарттык алгоритмдерди жабууга көп убакыт кетирем. Окутуу көз карашынан алганда, негизги маселе - эсептөө татаалдыгы: ар бир алгоритмге белгилүү бир өлчөмдү киргизүү канча убакытты талап кылат? Бирок көптөгөн нюанстар бар. Мисалы, алгоритмдердин конкреттүү кирүү маанилерине (размерден айырмаланып) жараша ар кандай иштөө убактысы барбы? Кайсы учурларда бир сорттоо алгоритмин башка бирөөнүн ордуна тандайт элеңиз? Биз бул маселелерди абстракттуу түрдө талкууласак да, ар кандай шарттарда ар кандай алгоритмдердин кантип иштээрин көрүүнүн оңой жолу жок экени мени дайыма тынчсыздандырды.
Максаттар
Бул долбоордун башкы максаты - студенттерге алгоритмдерди элестетүү жана изилдөө үчүн интерактивдүү дисплей түзүү болчу. Мен маанилердин массивдеринде (бүтүн сандар) иштеген алгоритмдер менен чектелдим, ошондуктан массивдин мазмунун элестетүү үчүн даректүү RGB LED тилкесин колдоно алам. Массивде 100 элемент бар жана ар бир бүтүн сан асан -үсөн тартибинде картага түшүрүлөт, андыктан массив иреттелгенде, жарым -жартылай иреттелгенде же рандомизацияланганда дароо көрүнөт. Баалардан тышкары, мен алгоритмдин башкаруу аспектилерин элестетүүнүн жолун кааладым - мисалы, массивдин кайсы элементтери учурда салыштырылып же алмаштырылып жатат.
Конкреттүү максаттар:
- Ар кандай издөө жана сорттоо алгоритмдерин берүү
- Массивдеги баалуулуктарды алгоритмдин прогрессин чагылдыра тургандай кылып элестетиңиз
- Алгоритмди башкарууну визуалдаштыруу; атап айтканда, каралып жаткан элементтер.
- Колдонуучуларга ар дайым туш келди баалуулуктарды жаратуунун ордуна, кириш маалыматтарынын үлгүлөрүн тандоого уруксат бериңиз
- Колдонуучуларга ылдамдыкты башкарууга жана алгоритмди тындырууга уруксат бериңиз
-Колдонуучуларга эң жакшы, эң начар, орточо абалдагы жүрүм-турумду мажбурлоого уруксат берүү (атайын алгоритм)
- Алгоритм ишке ашканда кадамдардын санын көрсөтүңүз
Визуализация
Физикалык дизайн көз карашынан алганда, бул долбоордун эң кызыктуу бөлүгү - массивдин визуализациясы. Мен маалыматтарды жана көзөмөлдү кантип көрсөтүү жана дисплей түзмөгүн кантип куруу керектиги менен күрөштүм. Менин максатым түстүү чөйрөлөр катары маалымат баалуулуктарын көрсөтүү жана түстүү жебелер катары маалымат баалуулуктарын көрсөтүүчү. Бир аз эксперименттен кийин, мен 100 RGB LED (WS2812) эки параллелдүү тилкелери бар дизайнга токтолуп, ар бир маалыматтын үстүндө тегерек маска жана ар бир көзөмөлдөөчү LEDдин үстүндө үч бурчтуу маска бар элем. Мен 10 жуп чөйрө жана үч бурчтук менен масканын 3D моделин жасадым, анан 3D бул модулдардын 10ун басып чыгарды, бардыгы 100 тегерек жана 100 үч бурчтук. Менин маскамдын өлчөмү жана аралыгы метрине 100 LED менен тилкелер үчүн иштелип чыккан. 3D модели файлдары бул сүрөттөмөдө кийинчерээк берилет.
Электроника жана корпус
Калган түзмөк электроника көз карашынан алганда жөнөкөй. Эки LED тилкесинен тышкары, бир нече баскычтар бар, айлануучу коддогуч (ылдамдыкты көзөмөлдөө үчүн) жана 7 сегменттүү дисплей (кадамдарды көрсөтүү үчүн). Көптөгөн баскычтар жана башкаруу элементтери менен мен ESP32 микроконтроллерин колдонууну чечтим, анткени ал көп казыктарды ачып берет жана ал абдан күчтүү. Мен зымдардын стратегиясын карап чыгам, бирок бул абдан жөнөкөй. Сиз азыраак төөнөгүчтөрдү колдонууну кааласаңыз, нөөмөт реестрлери менен акылдуу бир нерсе кыла аласыз.
Сиз бул түзмөктүн корпусун ар кандай формада кура аласыз. Башында мен муну чоң тик бурчтуу такта катары элестеттим, анын үстүндө LED тилкеси бар, ал эми ортосунда топчу тор бар. Мен аяктаган форма 1960-жылдардын космостук технологияга болгон көз карашынан шыктандырылган. Сиз аны LED тилкелери менен тик багытта курсаңыз болот. Же LED бөлүгүн чоңураак кылыңыз - бүт дубалды толтуруңуз - өзүнчө башкаруу панели менен.
Программалык камсыздоо
Бул түзмөктүн коду GitHubда бекер жеткиликтүү жана мен анын кантип иштээрин жана аны кантип конфигурациялоону документтештирүү үчүн болгон күчүмдү жумшадым. WS2812 тилкелерин айдай турган FastLED гана керек болгон тышкы китепкана.
Жабдуулар
Электроника
1 ESP32 өнүктүрүү тактасы (мис., 2 WS2812 же ага окшош LED тилкелери, тыгыздыгы 100 метрге (мисалы, 1 Triangle "start" баскычы (мис., 12 ирмемдик баскычтар (мис., Https://amzn.com/B01N4D4750) - эгер кааласаңыз, ар кандай форма
1 пакет (20) алдын ала түймө туташтыргычы (мис., 1 Pack JST туташтыргычы (мис., 1 Ротари коддоочу (мис., Ротари коддогучтун 1 баскычы (мис., 1 Pack Dupont коннекторлору (мис., Https://amzn.com/B014YTPFT8) - бул ошондой эле кысуучу куралды алууга арзыйт.
1 баррель уячасы (кубат үчүн) (мис., 1 TM1637 7 сегменттүү сандык дисплей (мис., Лайкоо жана электр өткөргүчтөрү
3D модель файлдары
Thingiverseде 10 жарык модулдарынын жуптары үчүн 3D моделин таба аласыз:
www.thingiverse.com/thing:4178181
Бул моделди беш жолу басып чыгаруу керек, бардыгы болуп 10 модуль.
Программалык камсыздоо
github.com/samguyer/AlgorithmMachine
Корпус
Жыгач, плексиглас, дат баспас болоттон жасалган болттар жана бурамалар
Диффузиялык материал. Менин сүйүктүүм Ли Чыпкалар #216 толук ак диффузия, бирок башка варианттар бар. Атүгүл жөнөкөй ак кагаз да жакшы иштейт.
1 -кадам: Алгоритмдер 101
Көптөр информатика негизинен программалоону изилдейт деп ойлошот. Бирок бул талаанын чыныгы жүрөгү жана жаны алгоритмдер: көйгөйлөрдү чечүү үчүн системалуу процедураларды жана алардын баасын изилдөө (адатта, алар канча убакытка созулат). Алан Тьюринг, Алонзо Черч жана Эдсгер Дейкстра сыяктуу талаадагы негизги фигуралар бул идеялар жөнүндө компьютерлерден мурун ойлонушкан.
Белгилүү бир маселени чечүү үчүн алгоритмдин негизги өзгөчөлүгү - анын деталдуу жана так болушу, ошондуктан кимдир бирөө анын кантип иштээрин түшүнбөстөн чечимди алуу үчүн колдонушу мүмкүн; кадамдарды механикалык түрдө аткарыңыз жана сиз туура жоопту аласыз. Бул компьютерлерди программалоого кандай жардам берерин көрө аласыз, анткени алар мындай деталга муктаж. Компьютер жетишсиз деталдарды толтура албайт же адамдай чечимдерди чыгара албайт.
Канча убакыт алат?
Бизде деталдуу жол -жобо болгондон кийин, табигый суроо - бул жоопту алуу үчүн канча убакыт талап кылынат? Биз кадимки убакыт бирдиктерин колдоно албайбыз, анткени бул ишти ким аткарып жатканына жараша болот (адам бир нерсени суперкомпьютерге салыштырмалуу канчалык ылдам эсептей алат). Мындан тышкары, бизде канча маалымат бар экенине көз каранды. Ооба, миллиондогон телефон номерлеринин тизмесин издөө жүзгө караганда көбүрөөк убакытты талап кылат.
Алгоритмдин баасын сүрөттөө үчүн, биз адегенде бир "кадамды" билдирген процедураны тандап алабыз - адатта эки нерсени салыштыруу же кошуу сыяктуу жөнөкөй нерсе, бул белгилүү бир убакытты талап кылат. Андан кийин, биз бир нече маалымат пунктун алгоритм канча кадамдарды жасаарын сүрөттөгөн формуланы ойлоп табабыз. Тарыхый себептерден улам, биз дээрлик ар дайым чоң тамга менен берилүүчү пункттардын санын белгилейбиз.
Мисалы, N телефон номерлеринин тизмесин карап чыгуу N кадамдарды талап кылат. Тизмени эки жолу карап чыгуу 2N кадамдарды талап кылат. Бул экөө тең сызыктуу убакыт алгоритмдери деп аталат - кадамдардын жалпы саны киргизүү өлчөмүнүн бир нече эсе көп. Башка алгоритмдер квадрат (N квадрат убактысы) же куб (N куб) же логарифмдик (лог N) же булардын кээ бир айкалышы. Кээ бир эң кыйын эсептөө маселелери экспоненциалдык убакыт алгоритмдерин талап кылат (2^N).
Макул, анда эмне?
Маалыматтардын N саны аз болгондо анча деле мааниге ээ эмес. Мисалы, N = 10 үчүн, 10N - бул N квадрат деп аталат. Бирок N = 1000 жөнүндө эмне айтууга болот? же N = 1000000? Миллион чарчы - бул абдан чоң сан. Ал тургай, абдан тез компьютерде, эгер квадрат алгоритм жетиштүү чоң болсо, көп убакыт талап кылынышы мүмкүн. Экспоненциалдык алгоритмдер алда канча түйшүктүү: N = 50 үчүн экспоненциалдык алгоритмдин ар бир кадамы бир наносекунд (секунддун 1 миллиарддан бири) болгон компьютерде да бүтүшү үчүн эки жума убакыт кетет. Ой!
Шкаланын экинчи учунда бизде логарифмдик убакыт алгоритмдери бар, алар абдан ылдам. Журналдын убактысы экспоненциалдык убакытка карама -каршы: киргизилген N өлчөмү, кадамдардын саны 2^T = N формуласындагы экспонент болуп саналат. Мисалы, эгерде биздин кирүү көлөмү бир миллиард болсо, анда журнал убактысынын алгоритми 30ду гана талап кылат. кадамдар, бери 2^30 = 1, 000, 000, 000. Бул кандай таттуу?! ??!
Сиз кызыкдар болушуңуз мүмкүн, миллиондогон же миллиарддаган киргизүү өлчөмүнө ким кызыкдар? Ойлонуп көрүңүз: Фейсбукта канча колдонуучу бар? Канча веб баракчалар Google тарабынан индекстелет? Адамдын геномунда канча негизги жуп бар? Аба ырайынын симуляциясына канча өлчөө кирет?
2 -кадам: Алгоритмдер
Алгоритм машинасы учурда төмөнкү алгоритмдерди ишке ашырат. Алардын экөө издөө алгоритмдери (тизмеден белгилүү бир маанини табуу), калгандары сорттоо алгоритмдери (маанилерди иретке келтирүү).
Сызыктуу издөө
Башынан баштап баалуулуктардын тизмесин бир -бирден издеңиз. Сызыктуу убакытты талап кылат.
Бинардык издөө
Тизмени кайра -кайра экиге бөлүп издеңиз. Журналдын убактысы талап кылынат, бирок анын иштеши үчүн тизме иреттелиши керек.
Bubble sort
Тизмени иретке келтирбеген кошуна элементтерди кайра -кайра алмаштырыңыз. Квадрат убакытты талап кылат.
Киргизүү түрү
Ар бир элементти мурунтан иреттелген баалуулуктардын тизмесине өз ордуна коюп тизмени иреттөө. Квадрат убакытты талап кылат.
Quicksort
Тизмени кайра -кайра экиге бөлүп, медианадан азыраак болгон бардык маанилерди биринчи жарымга, ал эми медианадан жогору болгон бардык маанилерди экинчи жарымга жылдыруу аркылуу тизмектөөнү иреттеңиз. Иш жүзүндө биз медианды эффективдүү таба албайбыз, андыктан биз туш келди маани тандап алабыз. Натыйжада, бул алгоритм эң начар учурда квадрат болуп калышы мүмкүн, бирок адатта N * logN убактысын талап кылат.
Түрүн бириктирүү
Тизмени экиге бөлүү менен иреттөө, эки жарымын өзүнчө иреттөө (бириктирүү иретин колдонуу), анан баалуулуктарды аралаштыруу менен аларды бириктирүү. Ар дайым N * logN убактысын талап кылат.
Үймөк түрү
Журнал мезгилинде эң кичине маанини табууга мүмкүндүк берүүчү үймө деп аталган маалымат структурасын түзүү аркылуу тизмекти иреттөө. Ар дайым N * logN убактысын талап кылат.
Bitonic sort
Сорттоо менен ылдамдыкты бириктирүүгө окшош, тизмени экиге бөлүп, жарымын иреттеп, кайра бириктириңиз. Бул алгоритм N * logN * logN убактысын талап кылат, бирок анын параллелизациялоо оңой экендигинин артыкчылыгы бар.
3 -кадам: LED тилкеси: масканы 3D басып чыгаруу
LED тилкесин куруунун биринчи кадамы - бул жарыктарга формасын берген масканы 3D басып чыгаруу. Ар бир модул массивдин он элементин, 10 маанини (тегерекчелерди) жана 10 индикаторду (үч бурчтукту) камтыйт, андыктан сизге жалпысынан 10 модуль керек болот. Мен бул жерде камсыз кылып жаткан STL файлы модулдун эки инстанциясын камтыйт, андыктан сиз беш басуу циклин жасашыңыз керек. Менде эң мыкты 3D принтер жок, андыктан файлды жана кумду колдонуп, аларды кол менен тазалоого туура келди. Эң негизгиси тегерек жана үч бурчтуу тешиктер таза болот.
Сүрөттөрдө менин тест орнотуумду көрөсүз: Мен эки LED тилкесин скотч менен микроконтроллери бар нан тактасына илип койдум. Бул кадамдын кереги жок, бирок мен корпусту жыйнай электе анын кандай болорун көргүм келди. Мен маска модулдарын эки LED тилкесине тизип, туш келди түстөр менен жөнөкөй эскиз чуркадым. Диффузиялык материалдын тилкеси менен формалар жана түстөр чындап эле пайда болот.
4 -кадам: LED Bar Alternatives
Бул долбоорду биринчи баштаганда мен LED масканы жасоонун башка жолдорун сынап көрдүм. Эгерде сизде 3D принтер жок болсо, анда бул параметрлердин бирин карап көрүңүз. Чынын айтсам: бул тетиктерди жасоо чоң азап.
Чөйрөлөр үчүн диаметри дээрлик 1 см болгон 13/32 жез түтүгүн сатып алдым. Мен аны 1 см сегменттерге бөлүп, анан ак түскө боёп чачтым.
Үч бурчтуктар үчүн мен бир жолку бышыруу табасынан кесилген оор салмактагы алюминий фольга колдондум. Мен жыгачтан үч бурчтук формасын жасадым, андан кийин фольгага кыска тилкелерди ороп, скотч менен чаптадым. Дагы, сизге булардын жүзү керек болот, андыктан бир аз убакыт жана чыдамкайлык керек.
5 -кадам: LED тилкесинин корпусу
Менин корпусум абдан жөнөкөй: капталдары үчүн жыгачтын эки тилкеси жана үстү менен асты үчүн плексигласстын эки тилкеси. Бардык бөлүктөрдүн узундугу болжол менен 102см (светодиоддор үчүн 1 метр, жана зымдарды жайгаштыруу үчүн бир аз кошумча). LED тилкелерине орун берүү үчүн тараптар 1смден бир аз бийик болушу керек. Тилкелерди кескенден кийин, мен алардын ортосуна 3D басып чыгарылган маска бөлүктөрүн салып, плексиглассанын туурасын өлчөдүм. Плексигласстын эки бөлүгүн тилкенин туурасы менен узундугун кесип алыңыз. Акыр -аягы, диффузиялык материалдын тилкесин маскага туура келгидей кылып кесип алыңыз.
Диффузия үчүн мага Li Filters #216 абдан жагат (толук ак диффузия). Бул жука пластикалык барак, ал көп жарыкты жоготпостон, диффузияны да берет. Бирок бул кымбат нерселер. Кээде Интернетте сатуу үчүн кичинекей барактарды таба аласыз, бирок бүтүндөй түрмөк сизге болжол менен $ 125 кайтарат. Кээ бир башка варианттар - ак кагаз же башка атлас же үшүк алган пластик. Популярдуу тандоо - жука пластикалык кесүүчү төшөктөр.
LED тилкесин чогултуудан мурун сизде LED тилкелерине тийиштүү туташтыргычтар бар экендигине ынануу керек. Көптөгөн тилкелер алдын ала ширетилген коргошун менен коштолот, андыктан аларды колдонсоңуз болот.
Жыйынды плексигласстын үстүңкү бөлүгүн жыгач капталдарына буроо менен баштадым (сүрөттү караңыз). Андан кийин мен аны оодарып, диффузия тилкесин, андан кийин 10 маска бөлүгүн койдум. Мен боштукка ыраазы болгондон кийин, аларды бир нече чекит ысык желим менен кададым.
Андан кийин, эки LED тилкесин маскалардын үстүнө жанаша кой. Светодиоддордун ылдый караганын текшериңиз жана ар бир светодиод маскадагы тиешелүү тешикке туура келерин текшериңиз. LED тилкелерин кармап туруу үчүн ысык желим же лента кошуңуз. Акырында, плексигласстын арткы бөлүгүн бурап алыңыз.
Тест үлгүсүн иштетүү. Жакшы жумуш! Сиз эң кыйын бөлүгүн жасадыңыз!
6 -кадам: Control Panel
Башкаруу панели эң чыгармачыл эркиндикти берген бөлүк. Бул жөн гана LED тилкеси менен бирге бардык көзөмөлдү жана электрониканы кармап турушу керек. Эң жөнөкөй дизайн - бул тик бурчтуу тактайлар: баскычтар жана башкаруу үчүн тешиктерди бургулаңыз жана LED тилкесин тиркеңиз. Мен жыгачты, плексиглассты жана башка материалдарды айкалыштырып, стампунк / ретро-модерн көрүнүшүн берүүнү жакшы көрөм. Бул учурда, мен негизги алгоритм тандоо баскычтарын кармоо үчүн оор плексигласс кесимин жана электрониканын калган бөлүгүн кармоо үчүн жыгач тилкени кесип алдым. Аркада баскычтарынын өлчөмүнө ылайыктуу тешиктерди бурдум. Арткы жагында зымдар көрсөтүлөт, бирок мага жагат!
Мен ошондой эле 7 сегменттүү дисплейге, айлануучу коддогучка жана арткы жагындагы кээ бир зымдарга орун бурдум. Мен LED тилкесин кармап туруу үчүн үстүнкү бөлүгүндө бир дадону кесип алдым.
7 -кадам: Түймө түйүн
Кнопкаларды көп зым менен жабуу чыныгы азап болушу мүмкүн. Бактыга жараша, аркада машиналарын жасоочу адамдар сиз колдоно турган стандарттуу коннекторлорду ойлоп табышкан. Ар бир баскычтын туташтыргыч кабелинде эки зым бар, бири VCC үчүн, экинчиси жерге. Бир учунда баскычтын арт жагындагы учтарга туура келген курч туташтыргычтар бар - жерди "кадимкидей ачык" коргошунга, ал эми "жалпы" коргошунга VCC тиркеңиз. Бул конфигурацияда, колдонуучу баскычты басканда, схема бүтөт жана микроконтроллер тиешелүү киргизүү пининде HIGH дегенди окуйт.
Кабелдин экинчи учунда JST туташтыргычы бар (кичинекей ак нерсе). Бул коннекторлордун жакшы жери, алар идишке бир гана жол менен кирет, андыктан кокусунан VCC менен жерди артка кайтаруунун эч кандай жолу жок.
Мен эмне кылдым, бул туташтыргычтар үчүн бир аз жабдыктарды куруу. Мен JST идиштеринин бир катарын протоботтун үстүнө кошуп, анан зымдарды Дупонттун коннекторлоруна кайра иштетип, микроконтроллерге туташтырам. Кызыл зым VCC линиясы болуп саналат жана ал JST контейнерлеринин баарына туташат. Көк зымдар ар бир баскыч үчүн өзүнчө болуп саналат.
8 -кадам: Rotary Encoder
Ротари коддоочу колдонуучуга алгоритмдин ылдамдыгын башкарууга мүмкүндүк берет. Мен эки маалымат линиясына (сары зымдар) тартылуу каршылыгын камтыган үзүлүү тактасы катары келген модулду колдоном. Бул дагы баскыч болуп калат, бирок мен бул мүмкүнчүлүктү колдонбойм. Калган эки зым VCC жана жерге. Менде да жакшы семиз баскыч бар.
Потенциометрден айырмаланып, айлануучу кодердин мага жакканы-бул жөн гана микроконтроллерге айланууну (сааттын жебесине каршы) билдирип турат, андыктан маанини чечмелөөнү өзгөртүү оңой. Мисалы, колдонуучу аны тез айлантып жатканда, аны ылдамдатуу сезимине (чычкан сыяктуу) бере аласыз.
9-кадам: 7 сегменттүү дисплей
Бул жерде айта турган көп нерсе жок. Бул нерселер бардык жерде бар. Светодиоддор жөнөкөй сериялык протокол аркылуу микроконтроллер менен байланышкан TM1637 деп аталган чип менен башкарылат. Мен бар китепкананы колдоном, ал мага кайсы номерди көрсөткүм келгенин айтууга мүмкүнчүлүк берет, ал эми калганын кылат.
Артында төрт казык бар: VCC, жерге жана сериялык протокол үчүн эки зым. Мен микроконтроллерге туташкан тиешелүү Dupont коннекторуна туташкан 4-пин башын ширеттим.
10 -кадам: Башкы контролерлор кеңеши
Негизги контроллер тактасында микроконтроллердин өзү жана башкаруу элементтеринин бардык туташтыргычтары (баскычтар, дисплей, LED) бар. Микроконтроллер ESP32 болуп саналат, ал көп эсептөө кубатын жана эс тутумун камсыз кылат жана көп казыктарды ачып көрсөтөт. Зымдар абдан стандарттуу, бирок мен бир нече кызыктуу биттерди көрсөтөм.
ЭСКЕРТҮҮ: Негизги тактаны туташтыруудан мурун, кодду (https://github.com/samguyer/AlgorithmMachine) карап көргүңүз келиши мүмкүн, ошондо сиздин пин -конфигурацияңыз меники менен дал келет.
Мен баррель уячасын тактага ширеттим жана эки жез зымды тактанын электр жана жер темирлерине туташтырдым. Себеби, эгерде жарыктуулук жогорку деңгээлге коюлса, LED тилкеси көп энергия тарта алат жана мен бул кубаттуулуктун бардыгын микроконтроллердеги USB туташтыргычы аркылуу тарткым келбейт.
Түймөнүн зымдарын жөнөкөйлөтүү үчүн, мен микроконтроллердин бүт тарабын (эркектин ургаачысынан аялга оң бурчтуу баш тилкесин) көрсөттүм (тактанын үстү жагын көрсөткөндөй). Дупонттун туташтыргычы ушул баштыкка туташтырылат.
МААНИЛҮҮ: баскычтардын күчү (кызыл зым) микроконтроллердеги 3.3В электр линиясына туташтырылышы керек. ESP32 3.3V чипи, ошондуктан 3.3V булактары качан гана маалымат казыктарына тиркелиши керек.
Микроконтроллер 5В USB пини жана жер аркылуу рельстерге (тактанын ылдыйкы тарабы) күч тартат (же күчтү түртөт). Башка кызыл/кара зымдардын бардыгы VCC жана жерге.
Эки көк зым - бул LED тилкелери үчүн маалымат линиялары (WS2812s). Сары/жашыл түгөй-айлануучу коддогучтун маалымат линиялары, ал эми сары түгөй-7 сегменттүү дисплейге сериялык байланыш.
11 -кадам: Ассамблея
Сүрөттөрдүн бул сериясы акыркы монтажды жана зымдарды көрсөтөт. Мен дагы башкы контролер тактасын үстүңкү жагындагы арткы жагына бекиттим.
Күйгүзүүдөн мурун жагымсыз сюрприздерди болтурбоо үчүн бир нече текшерүүлөрдү жасадым. Атап айтканда, менде эч кандай күч/жерге туташтыргыч жок экенине ынануу үчүн жана кыска туташуулар жок. Мультиметрди үзгүлтүксүздүктү текшерүү үчүн коюңуз - бул эки учтун ортосунда электр жолу болгондо сигнал берет. Баскычтарга жалпы VCC линиясына бир коргошун тиркеңиз. Андан кийин башка коргошун ар бир сайгычка бир -бирден байлаңыз. Мультиметр баскычты басканда гана сигнал бериши керек. Эгерде сиз башка сигналдарды алсаңыз, анда сизде тескери же кыска бар дегенди билдирет. Күчтү күйгүзүүдөн мурун аны байкап, оңдоңуз!
12 -кадам: Код
Биринчиден, Arduino IDE ачыңыз жана FastLED китепканасы орнотулганын текшериңиз.
GitHubдан Algorithm Machine кодун жүктөп алыңыз:
github.com/samguyer/AlgorithmMachine.git
Сиз аны Arduino папкаңызга клондоштуруп же кол менен көчүрө аласыз.
Аны жүктөөдөн мурун, пин орнотуулары сиздин аппараттык конфигурацияңызга дал келерин текшериңиз. Мен бардык пин орнотууларын файлдын жогору жагына койдум.
Жүктөө жана ырахат!
13 -кадам: Кантип колдонуу керек
Алгоритм машинасын колдонуу оңой жана баскычтардын дээрлик бардык айкалышы жакшы!
Биринчиден, массивдеги баалуулуктарды инициализациялоо үчүн маалымат баскычтарын колдонуңуз. Үч тандоо бар: (1) рандомизациялоо, (2) бир кокустук маанини кошуу жана (3) массивди артка кайтаруу. Белгилей кетчү нерсе, баалуулуктар туруктуу, андыктан аларды иреттөө, анан ызы -чуу кошуу, башка сорттоо же издөө алгоритмин иштетүү сыяктуу иштерди жасай аласыз.
Башка баскыч тандоолорунан издөө же иргөө алгоритмин тандаңыз. Азыркы учурда, сиз бул тандоо (келечектеги иш үчүн бир нерсе) кылганда эч кандай пикир жок. Андан кийин "ойнотуу" баскычын басыңыз.
Баскыч ылдамдыкты көзөмөлдөйт. Алгоритмди тындыруу жана токтотуу үчүн "ойноо" баскычын бассаңыз да болот.
Ал бүткөндө автоматтык түрдө токтойт. Сиз каалаган убакта башка алгоритм баскычын бассаңыз болот. Машина учурдагы алгоритмди токтотуп, жаңысын инициализациялайт, бирок маалыматтарды мурунку алгоритм калтыргандай сактайт.
STEM сынагынын баш байгеси
Сунушталууда:
Коктейль машинасы GUI Raspberry менен: 7 кадам (сүрөттөр менен)
Cocktail Machine GUI Raspberry менен: Сиз технологияны жана партияны жакшы көрөсүзбү? Бул долбоор сиз үчүн жасалган! Бул үйрөткүчтө биз графикалык интерфейси бар автоматташтырылган коктейль машинасын түзөбүз. Бардыгы малина тарабынан көзөмөлдөнөт! ТҮЗӨТҮҮ: Мен бул жердеги шилтемени оңой жана арзан кылдым
LED маркасын өзгөртүү менен аркада машинасы: 5 кадам (сүрөттөр менен)
Аркада машинасы LED маркасын өзгөртүү менен: Талап кылынган бөлүктөр: Сиз инструкциядагы файлдарды колдонуп же лазердик кескичке кире албагандар үчүн LED маркасын орното аласыз, ал дагы толугу менен чогултулган. LED Marquee
Батарея менен иштеген туман машинасы: 5 кадам (сүрөттөр менен)
Батарея менен иштеген туман машинасы: Алдыдагы долбоор үчүн мага батарейка менен иштеген кичинекей туман машинасы керек болчу. Электр тармагы менен иштеген туман баскычтар такыр кымбат эмес (~ 40 доллар). Бирок батарейка менен иштеген портативдүү, мен түшүнбөгөн себептерден улам, абдан чоң $ 800 (же 1850 доллар!). Ва бар
Raspberry Pi менен иштөөчү керексиз барабан машинасы: 15 кадам (сүрөттөр менен)
Raspberry Pi менен иштөөчү керексиз барабан машинасы: Бул көрсөтмө сизге Raspberry Pi менен иштөөчү робот барабан машинасын кантип жасоону көрсөтөт. Бул чынында эле кызыктуу, чыгармачыл, интерактивдүү долбоор. Мен сизге ички иштерди кантип жасоону көрсөтөм, бирок чыныгы барабандар сизге көз каранды болуп, сизге
AI менен Arduino боюнча Tic Tac Toe (Minimax Алгоритм): 3 кадам
AI менен Ардуинодо Tic Tac Toe (Minimax Алгоритм): Бул Нускамада мен сизге Arduino аркылуу AI менен Tic Tac Toe оюнун кантип курууну көрсөтөм. Сиз Arduino менен ойной аласыз же Arduino өзүнө каршы ойной аласыз. Мен " минимакс алгоритми " деп аталган алгоритмди колдонуп жатам