Мазмұны:

Алгоритм машинасы: 13 қадам (суреттермен)
Алгоритм машинасы: 13 қадам (суреттермен)

Бейне: Алгоритм машинасы: 13 қадам (суреттермен)

Бейне: Алгоритм машинасы: 13 қадам (суреттермен)
Бейне: Тигр😂 #семья #жаналиевтертеатры 2024, Шілде
Anonim
Image
Image
LED жолағы: масканы 3D басып шығару
LED жолағы: масканы 3D басып шығару

Мен 15 жыл бойы колледжде информатика пәнінен сабақ бердім, және менің тәжірибем бағдарламалау саласында болса да, мен іздеуге және сұрыптауға арналған стандартты алгоритмдерді құруға көп уақыт жұмсаймын. Педагогикалық тұрғыдан алғанда, есептің күрделілігі басты мәселе болып табылады: әр алгоритм белгілі бір көлемді енгізгенде қанша уақытты қажет етеді? Бірақ көптеген нюанстар бар. Мысалы, алгоритмдердің нақты кіріс мәндеріне байланысты (жұмыс көлеміне қарағанда) әр түрлі жұмыс уақыты бар ма? Қандай жағдайларда бір сұрыптау алгоритмін басқасына таңдар едіңіз? Біз бұл мәселелерді рефератта талқылағанымызбен, әр түрлі алгоритмдердің әр түрлі жағдайда қалай жұмыс істейтінін көрудің оңай жолы жоқ екендігі мені үнемі мазалайтын.

Мақсаттар

Бұл жобаның негізгі мақсаты - оқушыларға алгоритмдерді елестету және зерттеу үшін интерактивті дисплей құру. Мен мәндер массивтерінде (бүтін сандар) жұмыс істейтін алгоритмдермен шектелдім, сондықтан массив мазмұнын визуализациялау үшін адрестелетін RGB LED жолағын қолдана аламын. Массив 100 элементтен тұрады және әрбір бүтін сан кемпірқосақ ретіндегі түспен салыстырылады, сондықтан массив сұрыпталғанда, жартылай сұрыпталғанда немесе рандомизацияланған кезде бірден байқалады. Мәндерге қосымша, мен алгоритмнің басқару аспектілерін визуализациялау әдісін алғым келді, мысалы, қазіргі уақытта массивтің қандай элементтері салыстырылады немесе ауыстырылады.

Нақты мақсаттар мыналар:

- Әр түрлі іздеу және сұрыптау алгоритмдерін ұсыну

- алгоритмнің орындалуын көрсететін жолдағы мәндерді визуализациялаңыз

- алгоритмді басқаруды визуализациялау; атап айтқанда, қарастырылатын элементтер.

- Пайдаланушыларға кездейсоқ мәндерді шығарудан гөрі кіріс деректерінің үлгісін таңдауға рұқсат етіңіз

- Пайдаланушыларға жылдамдықты басқаруға және алгоритмді кідіртуге рұқсат етіңіз

-Пайдаланушыларға ең жақсы, ең нашар, орташа жағдайдағы мінез-құлықты мәжбүр етуге мүмкіндік беру (арнайы алгоритм)

- Алгоритм жүріп жатқанда қадамдар санын көрсетіңіз

Көрнекілік

Физикалық дизайн тұрғысынан бұл жобаның ең қызықты бөлігі - массивтің визуализациясы. Мен деректер мен бақылауды қалай көрсету керектігін және дисплей құрылғысын қалай құруға болатынын білдім. Менің мақсатым - деректер мәндерін түрлі -түсті шеңберлер ретінде және бақылау нүктелерін деректер мәндерін көрсететін түсті көрсеткілер ретінде көрсету. Бірнеше эксперименттен кейін мен 100 RGB жарық диодты (WS2812) екі параллель жолағы бар, әр деректер диодының айналасында дөңгелек маска мен әр басқару шамының үстінде үшбұрышты маска бар дизайнға тоқталдым. Мен 10 жұп шеңбер мен үшбұрыштан тұратын масканың 3D моделін жасадым, содан кейін 3D модульдердің 10 -ын басып шығарды, барлығы 100 шеңбер мен 100 үшбұрыш. Менің маскамның өлшемі мен аралығы метрге 100 светодиоды бар жолақтарға арналған. 3D модельдік файлдар кейінірек осы сипаттамада берілген.

Электроника және қоршау

Қалған құрылғы электроника тұрғысынан қарапайым. Светодиодты екі жолақтан басқа, бір сәттік түймелер, айналмалы кодер (жылдамдықты бақылау үшін) және 7 сегментті дисплей (қадамдарды көрсету үшін) бар. Көптеген түймелер мен басқару элементтерінің көмегімен мен ESP32 микроконтроллерін қолдандым, себебі ол көп түйреуіштерді шығарады және ол өте қуатты. Мен сымдар стратегиясын қарастырамын, бірақ бұл өте қарапайым. Егер сіз түйреуіштерді аз қолданғыңыз келсе, ауысым регистрлерімен ақылды нәрсе жасай аласыз.

Сіз бұл құрылғыға арналған қоршауды әр түрлі формада жасай аласыз. Мен оны бастапқыда жарық диодты жолағы бар үлкен төртбұрышты тақта, ал ортасында түймелер торы деп елестеттім. Мен аяқтаған форма 1960 жылдардың ғарыштық технологияға деген көзқарасынан шабыттанған. Сіз оны жарық диодты жолақтармен тік бағытта құра аласыз. Немесе жарықдиодты бөлікті едәуір үлкейтіңіз - тұтас қабырғаны толтырыңыз - бөлек басқару панелімен.

Бағдарламалық қамтамасыз ету

Бұл құрылғының коды GitHub -те еркін қол жетімді және мен оның қалай жұмыс істейтінін және оны қалай конфигурациялау керектігін құжаттау үшін бар күшімді салдым. Сізге қажет жалғыз сыртқы кітапхана - WS2812 жолақтарын жүргізуге арналған FastLED.

Жабдықтар

Электроника

1 ESP32 әзірлеу тақтасы (мысалы, 2 WS2812 немесе ұқсас жарықдиодты жолақтар, тығыздығы метрге 100 жарық диодтары (мысалы, 1 «бастау» үшбұрышы түймесі (мысалы, 12 лездік түймелер (мысалы, https://amzn.com/B01N4D4750) - қаласаңыз, әр түрлі пішіндер

1 пакеттік (20) алдын ала орнатылған түйме қосқыштары (мысалы, 1 пакеттік JST қосқыштары (мысалы, 1 айналмалы кодер (мысалы, Айналмалы кодердің 1 тұтқасы (мысалы, 1 пакеттік 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 телефон нөмірлерінің тізімін қарау үшін N қадамдар қажет. Тізімді екі рет қарау үшін 2N қадамдар қажет. Бұл екеуі де сызықтық уақыт алгоритмдері деп аталады - қадамдардың жалпы саны кіріс өлшемінің бірнеше еселігін құрайды. Басқа алгоритмдер - квадраттық (N квадраттық уақыт) немесе текше (N текше) немесе логарифмдік (лог N) немесе олардың комбинациясы. Кейбір күрделі есептер экспоненциалды уақыт алгоритмдерін қажет етеді (2^N).

Жарайды, онда не?

Мәліметтер N саны аз болғанда, маңызды емес. Мысалы, N = 10 үшін 10N - бұл N квадраты деп аталатын атау. Бірақ N = 1000 ше? немесе N = 1000000? Миллион квадрат - бұл өте үлкен сан. Тіпті өте жылдам компьютерде, егер кіріс жеткілікті үлкен болса, квадрат алгоритм ұзақ уақытқа созылуы мүмкін. Экспоненциалды алгоритмдер әлдеқайда қиын: N = 50 үшін экспоненциалды алгоритм екі аптаның ішінде аяқталуы керек, тіпті әрбір қадамы бір наносекунд (секундтың 1 миллиардтан бір бөлігі) компьютерде. Ой!

Шкаланың екінші шетінде логарифмдік уақыт алгоритмдері бар, олар өте жылдам. Журнал уақыты экспоненциалды уақытқа қарама -қарсы: берілген кіріс өлшемі N, қадамдар саны 2^T = N формуласындағы T көрсеткіші болып табылады. Мысалы, егер біздің енгізу көлемі бір миллиард болса, онда журнал уақыт алгоритмі тек 30 -ды қажет етеді. қадамдар, өйткені 2^30 = 1, 000, 000, 000. Бұл қандай тәтті?! ??!

Сіз миллиондаған немесе миллиардтаған көлемді енгізу туралы кім ойлайды? Ойланыңыз: Facebook -те қанша қолданушы бар? Google қанша веб -бетті индекстейді? Адам геномында неше негізгі жұп бар? Ауа райының симуляциясына қанша өлшем кіреді?

2 -қадам: Алгоритмдер

Алгоритм машинасы қазіргі уақытта келесі алгоритмдерді жүзеге асырады. Олардың екеуі іздеу алгоритмдері (тізімнен белгілі бір мәнді табыңыз), қалғандары сұрыптау алгоритмдері (мәндерді ретке келтіріңіз).

Сызықтық іздеу

Мәндер тізімін басынан бастап бірінен соң бірін іздеңіз. Сызықтық уақытты қажет етеді.

Екілік іздеу

Тізімді бірнеше рет екіге бөлу арқылы іздеңіз. Журнал уақыты қажет, бірақ жұмыс істеу үшін тізім сұрыпталуы керек.

Көпіршікті сұрыптау

Тізімді ретсіз алмасатын көрші элементтерді сұрыптаңыз. Квадрат уақытты қажет етеді.

Енгізудің сұрыпталуы

Тізімді сұрыпталған мәндер тізімінде әр элементті тиісті орнына орналастыру арқылы сұрыптаңыз. Квадрат уақытты қажет етеді.

Quicksort

Тізімді бірнеше рет бөліп, медианадан кіші барлық мәндерді бірінші жартыға, ал медианадан жоғары барлық мәндерді екінші жартыға жылжыту арқылы тізімді сұрыптаңыз. Іс жүзінде біз медиананы тиімді таба алмаймыз, сондықтан кездейсоқ мәнді таңдаймыз. Нәтижесінде бұл алгоритм нашар жағдайда квадрат болуы мүмкін, бірақ әдетте N * logN уақытын қажет етеді.

Сұрыптауды біріктіру

Тізімді екіге бөлу арқылы сұрыптаңыз, екі бөлікті бөлек сұрыптаңыз (біріктіру сұрыптауын қолданыңыз), содан кейін мәндерді араластыру арқылы оларды біріктіріңіз. Әрқашан N * logN уақытын қажет етеді.

Үйме сұрыптау

Журнал уақытында ең кіші мәнді табуға мүмкіндік беретін үйме деп аталатын деректер құрылымын құру арқылы тізімді сұрыптаңыз. Әрқашан N * logN уақытын қажет етеді.

Битоникалық сұрыптау

Сұрыптау мен сұрыптауды біріктіру сияқты, тізімді екіге бөліп, жартысын сұрыптап, оларды қайта біріктіріңіз. Бұл алгоритм N * logN * logN уақытын қажет етеді, бірақ оның артықшылығы бар, ол параллельдеуге оңай.

3 -қадам: LED жолағы: масканы 3D басып шығару

LED жолағы: масканы 3D басып шығару
LED жолағы: масканы 3D басып шығару
LED жолағы: масканы 3D басып шығару
LED жолағы: масканы 3D басып шығару

Жарықдиодты жолақты құрудың бірінші қадамы - бұл шамдардың пішінін беретін масканы 3D басып шығару. Әр модуль массивтің он элементін, 10 мәнді (шеңберді) және 10 индикаторды (үшбұрышты) қамтиды, сондықтан сізге барлығы 10 модуль қажет. Мен ұсынатын STL файлында модульдің екі данасы бар, сондықтан сізге бес басып шығару циклын орындау қажет. Менде ең жақсы 3D принтер жоқ, сондықтан мен оларды қолмен тазалауды файл мен зімпарамен жасауға тура келді. Ең бастысы - дөңгелек және үшбұрышты тесіктер таза.

Фотосуреттерде сіз менің сынақ қондырғымды көресіз: мен екі жарықдиодты жолақты төмен түсіріп, оларды микроконтроллері бар тақтаға жалғадым. Бұл қадам қажет емес, бірақ мен қоршауды құрастыруды бастамас бұрын оның қалай болатынын көргім келді. Мен маска модульдерін екі жарықдиодты жолаққа қойдым және кездейсоқ түстермен қарапайым эскиз жасадым. Диффузиялық материалдың жолағымен пішіндер мен түстер шынымен шығады.

4 -қадам: жарық диодты жолақтың баламалары

Жарықдиодты жолақтардың баламалары
Жарықдиодты жолақтардың баламалары
Жарықдиодты жолақтардың баламалары
Жарықдиодты жолақтардың баламалары
Жарықдиодты жолақтардың баламалары
Жарықдиодты жолақтардың баламалары

Мен бұл жобаны алғаш бастаған кезде мен диодты масканы жасаудың басқа әдістерін сынап көрдім. Егер сізде 3D принтері болмаса, сіз осы нұсқалардың бірін қарастыра аласыз. Шынымды айтсам: бұл бөлшектерді жасау - үлкен азап.

Дөңгелектер үшін мен 13/32 жезден жасалған түтік сатып алдым, ол диаметрі шамамен 1 см. Мен оны 1 см сегменттерге бөлдім, содан кейін оларды ақ түске боялдым.

Үшбұрыштар үшін мен бір реттік пісіру табасынан кесілген ауыр салмақты алюминий фольга қолдандым. Мен ағаштан үшбұрышты пішінді жасадым, содан кейін фольгаға қысқа жолақтарды орап, таспамен жапсырдым. Тағы да, сізге жүздеген заттар қажет, сондықтан біраз уақыт пен шыдамдылық қажет.

5 -қадам: жарықдиодты жолақтың қоршауы

Жарықдиодты жолақтардың корпусы
Жарықдиодты жолақтардың корпусы
Жарықдиодты жолақтардың корпусы
Жарықдиодты жолақтардың корпусы
Жарықдиодты жолақтардың корпусы
Жарықдиодты жолақтардың корпусы

Менің қоршауым өте қарапайым: бүйірлері үшін ағаштан екі жолақ және үстіңгі және астыңғы жағынан екі жолақты плексиглас. Барлық бөлшектердің ұзындығы шамамен 102 см (светодиодтар үшін 1 метр, сонымен қатар сымдарды орналастыру үшін сәл қосымша). Жарық диодты жолақтарға орын беру үшін бүйірлері 1 см -ден сәл жоғары болуы керек. Жолақтарды кескеннен кейін мен олардың арасына 3D басып шығарылған маска бөліктерін салып, плексиглассаның енін өлшедім. Штанганың ені мен ұзындығынан екі плексигласс кесіңіз. Ақыр соңында, диффузиялық материалдың жолағын маскаға сай етіп кесіңіз.

Диффузия үшін маған Ли Фильтрлері #216 қатты ұнайды (толық ақ диффузия). Бұл жарықтың көп мөлшерін жоғалтпай біркелкі таралуға мүмкіндік беретін жұқа пластикалық парақ. Бірақ бұл қымбат заттар. Кейде сіз Интернетте сатылатын кішігірім парақтарды таба аласыз, бірақ тұтас орама сізге шамамен $ 125 қайтарады. Кейбір басқа нұсқалар - ақ қағаз немесе кез келген басқа сатин немесе аязды пластик. Танымал таңдау - пластиктен жасалған жұқа төсеніштер.

Жарықдиодты жолақты жинамас бұрын, жарықдиодты жолақтарға дәнекерленген тиісті қосқыштардың бар екеніне көз жеткізіңіз. Көптеген жолақтар алдын ала дәнекерленген сымдармен келеді, сондықтан оларды қолдануға болады.

Мен құрастыруды плексигласстың жоғарғы бөлігін ағаш жақтарға бұрау арқылы бастадым (суретті қараңыз). Содан кейін мен оны аударып, диффузиялық жолақты қойдым, содан кейін 10 маска бөлігін қойдым. Бірде мен бос орынға риза болдым, оларды ыстық желімнің бірнеше нүктесімен түйістірдім.

Содан кейін, екі жарықдиодты жолақты маскалардың үстіне қатар қойыңыз. Светодиодтардың төмен қарайтынына көз жеткізіңіз және әрбір жарықдиодты маскадағы сәйкес тесікке сәйкес келетініне көз жеткізіңіз. Жарықдиодты жолақтарды орнында ұстау үшін ыстық желім немесе таспа қосыңыз. Соңында, плексигласстың артқы бөлігін бұраңыз.

Тест үлгісін іске қосыңыз. Жақсы жұмыс! Сіз ең қиын бөлікті жасадыңыз!

6 -қадам: Басқару тақтасы

Басқару панелі
Басқару панелі
Басқару панелі
Басқару панелі
Басқару панелі
Басқару панелі
Басқару панелі
Басқару панелі

Басқару тақтасы - ең шығармашылық еркіндік беретін бөлік. Ол тек жарықдиодты жолақпен бірге барлық басқару элементтері мен электрониканы ұстауы керек. Ең қарапайым дизайн - бұл төртбұрышты тақталар: түймелер мен басқару элементтері үшін тесіктер бұрғылаңыз, жарық диодты жолақты бекітіңіз. Мен ағашты, плексигласс пен басқа материалдарды біріктіріп, стэмпунк / ретро-заманауи көрініс беруді ұнатамын. Бұл жағдайда мен негізгі алгоритмді таңдау түймелерін, ал электрониканың қалған бөлігін ұстау үшін ағаш штанганы ұстап тұру үшін ауыр салмақты плексигласс бөлігін кесіп алдым. Мен аркадалық түймелердің өлшеміне сәйкес келетін тесіктер бұрғыладым. Сымдар артқы жағында көрінеді, бірақ маған ұнайды!

Мен сондай-ақ 7 сегментті дисплейге, айналмалы кодерге және артқы жағындағы сымдарға орын босаттым. Мен жарық диодты жолақты ұстап тұру үшін үстіңгі жағынан дада кесіп алдым.

7 -қадам: Түймешікті бекіту

Түймешік
Түймешік
Түймешік
Түймешік
Түймешік
Түймешік

Көптеген түймелерді қосу шынымен ауыртпалық болуы мүмкін. Бақытымызға орай, аркад машиналарын жасайтын адамдар сіз қолдануға болатын стандартты қосқыштарды ойлап тапты. Әр түйме қосқыш кабелінде екі сым бар, біреуі VCC үшін, екіншісі жерге қосу үшін. Бір ұшында түйменің артқы жағындағы сымдарға сәйкес келетін күрек қосқыштары бар - жерді «қалыпты ашық» сымға, ал ВКС - «жалпы» сымға бекітіңіз. Бұл конфигурацияда, пайдаланушы түймені басқанда, схема аяқталады және микроконтроллер тиісті кіріс түйреуішінде ЖОҒАРЫ дегенді оқиды.

Кабельдің екінші ұшында JST қосқышы бар (кішкентай ақ нәрсе). Бұл коннекторлардың жағымды жағы - олар тек контейнерге бір жолмен түседі, сондықтан кездейсоқ VCC мен жерге тұйықталудың ешқандай жолы жоқ.

Мен жасаған нәрсе - бұл қосқыштар үшін кішкене белдік. Мен протокол тақтасына JST ыдыстарының сериясын дәнекерлеймін, содан кейін сымдарды микроконтроллерге қосатын Dupont коннекторларына қайта қосамын. Қызыл сым VCC желісі болып табылады және ол барлық JST сыйымдылықтарына қосылады. Көк сымдар әр түйме үшін бөлек.

8 -қадам: Айналмалы кодер

Айналмалы кодер
Айналмалы кодер

Айналмалы кодер қолданушыға алгоритмнің жылдамдығын басқаруға мүмкіндік береді. Мен екі деректер желісіне (сары сымдар) тартылатын резисторларды қамтитын үзіліс тақтасы ретінде келетін модульді қолданамын. Бұл түйме болады, бірақ мен бұл мүмкіндікті пайдаланбаймын. Қалған екі сым VCC және жерге қосылған. Мен сондай -ақ жақсы майлы тұтқаны алдым.

Потенциометрден айырмашылығы, айналмалы кодердің маған ұнайтыны-бұл микроконтроллерге айналуды (сағат тіліне қарсы және сағат тіліне қарсы) сигнал береді, сондықтан мәннің түсіндірілуін өзгерту оңай. Мысалы, пайдаланушы оны тез айналдырған кезде оған үдеу сезімін бере аласыз (тышқан сияқты).

9-қадам: 7 сегментті дисплей

7 сегментті дисплей
7 сегментті дисплей

Бұл жерде айтатын сөз көп емес. Бұл заттар барлық жерде бар. Жарық диодтары TM1637 деп аталатын чиппен басқарылады, ол микроконтроллермен қарапайым сериялық протокол арқылы байланысады. Мен қолданыстағы кітапхананы қолданамын, ол маған қандай нөмірді көрсеткім келетінін айтуға мүмкіндік береді, ал қалғандарын жасайды.

Артқы жағында төрт түйреуіш бар: VCC, жерге қосқыш және сериялық протоколға арналған екі сым. Мен микроконтроллерге қосылған тиісті Dupont коннекторына қосылатын 4 істікшелі тақырыпты дәнекерледім.

10 -қадам: Басқару тақтасы

Басқару тақтасы
Басқару тақтасы
Басқару тақтасы
Басқару тақтасы
Басқару тақтасы
Басқару тақтасы

Негізгі контроллер тақтасында микроконтроллердің өзі және басқару элементтерінің барлық қосқыштары (түймелер, дисплей, жарықдиодты шамдар) орналасқан. Микроконтроллер - бұл есептеу қуаты мен жадты көп беретін және көптеген түйреуіштерді шығаратын ESP32. Сымдар өте стандартты, бірақ мен бірнеше қызықты биттерді көрсетемін.

ЕСКЕРТПЕ: Негізгі тақтаны қосуды бастамас бұрын, кодты (https://github.com/samguyer/AlgorithmMachine) қарап шығу қажет болуы мүмкін, осылайша сіздің түйреуіш конфигурациясы менікімен сәйкес келеді.

Мен баррель ұясын қуат тақтасына дәнекерледім, ал тақтаның қуат пен жерлік рельстеріне екі мысты мыс сымды жалғадым. Себебі, егер жарықтылық жоғары орнатылса, жарық диодты жолақ көп энергия шығара алады, мен бұл қуатты микроконтроллердегі USB қосқышы арқылы тартқым келмейді.

Түймешік сымдарды жеңілдету үшін мен микроконтроллердің барлық жағынан (суреттің үстіңгі жағы) еркек-әйел тік бұрышты тақырып жолағын дәнекерледім. Түймешіктердің Dupont қосқыштары тікелей осы тақырыпқа қосылады.

МАҢЫЗДЫ: түймелердің қуаты (қызыл сым) микроконтроллердегі 3.3В электр желісіне қосылуы керек. ESP32 - бұл 3,3В микросхемасы, сондықтан деректер түйреуіштеріне тек 3,3 В көздері қосылуы керек.

Микроконтроллер 5В USB түйреуіші мен жерге қосу арқылы рельстерге (тақтаның төменгі жағы) қуат тартады (немесе қуатты итереді). Барлық басқа қызыл/қара сымдар VCC және жерге қосылған.

Екі көк сым - жарық диодты жолақтарға арналған деректер желілері (WS2812s). Сары/жасыл жұп-айналмалы кодер үшін деректер сызығы, ал сары жұп-7 сегментті дисплейге сериялық қосылу.

11 -қадам: құрастыру

Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея

Бұл фотосуреттер сериясы соңғы жинау мен сымдарды көрсетеді. Мен сондай -ақ негізгі контроллер тақтасын артқы жағына жоғарыда тіркедім.

Оны қоспас бұрын мен күтпеген тосынсыйларды болдырмау үшін бірнеше тексерулер жүргіздім. Атап айтқанда, менде кернеу мен жерге қосқыштар жоқ екеніне көз жеткізу үшін және қысқа тұйықталу жоқ. Мультиметрді үздіксіздікті тексеру үшін орнатыңыз - екі сымның арасында электр жолы болған кезде ол дыбыстық сигнал береді. Түймелерге VCC желісінің бір сымын қосыңыз. Содан кейін басқа сымдарды белбеудің әр түйреуішіне бір -бірлеп бекітіңіз. Мультиметр тек түймені басқанда ғана дыбыстық сигнал беруі керек. Егер сіз басқа дыбыстық сигналдарды алсаңыз, бұл сізде кері немесе қысқа дыбыс бар екенін білдіреді. Қуатты қоспас бұрын оны қадағалаңыз және жөндеңіз!

12 -қадам: код

Алдымен Arduino IDE ашыңыз және FastLED кітапханасы орнатылғанына көз жеткізіңіз.

GitHub -дан алгоритм машинасының кодын жүктеңіз:

github.com/samguyer/AlgorithmMachine.git

Сіз оны тікелей Arduino қалтасына көшіре аласыз немесе оны қолмен көшіре аласыз.

Оны жүктемес бұрын түйреуіш параметрлерінің аппараттық конфигурацияға сәйкес келетініне көз жеткізіңіз. Мен барлық түйреуіш параметрлерін файлдың жоғарғы жағына қойдым.

Жүктеп салыңыз және ләззат алыңыз!

13 -қадам: қалай қолдануға болады

Алгоритм машинасын қолдану қарапайым және батырмалардың кез келген комбинациясы жақсы!

Алдымен, массив мәндерін инициализациялау үшін деректер түймелерін пайдаланыңыз. Үш таңдау бар: (1) рандомизация, (2) бір кездейсоқ мәнді қосу және (3) массивті кері айналдыру. Мәндер тұрақты екенін ескеріңіз, сондықтан сіз оларды алдымен сұрыптау, содан кейін шу қосу, содан кейін басқа сұрыптау немесе іздеу алгоритмін орындау сияқты әрекеттерді жасай аласыз.

Басқа батырмалардың ішінен іздеу немесе сұрыптау алгоритмін таңдаңыз. Қазіргі уақытта сіз бұл таңдауды жасаған кезде кері байланыс жоқ (болашақ жұмыс үшін бір нәрсе). Содан кейін «ойнату» түймесін басыңыз.

Тұтқа жылдамдықты басқарады. Алгоритмді кідірту және тоқтату үшін «ойнату» түймесін басуға болады.

Ол аяқталған кезде ол автоматты түрде тоқтайды. Кез келген уақытта басқа алгоритм батырмасын басуға болады. Құрылғы ағымдағы алгоритмді тоқтатады және жаңасын инициализациялайды, бірақ деректерді алдыңғы алгоритм қалдырғандай сақтайды.

STEM сайысы
STEM сайысы
STEM сайысы
STEM сайысы

STEM байқауының бас жүлдесі

Ұсынылған: