Мазмуну:

Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: 7 Steps
Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: 7 Steps

Video: Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: 7 Steps

Video: Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: 7 Steps
Video: Why all world maps are wrong 2024, Ноябрь
Anonim
Image
Image
Тактанын дизайнын иштеп чыгуу
Тактанын дизайнын иштеп чыгуу

КИРИШҮҮ

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

Декорация режимин иштеткенде, картанын континенттери RGB светодиоддорун колдонуу аркылуу RGB баалуулуктарынын туш келди айкалыштары менен аныкталган ар кандай түстөрдө жаркырайт.

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

_

ЖАБДАМДАР

Чыныгы материалдар

  • 5мм RGB LED *20
  • Зымдар
  • Резисторлор *9
  • Arduino Board *1 (каалаган түрү)
  • Нан тактасы *3
  • Баскычтар *7
  • ЖК дисплей тактасы I2C *1
  • Картон кутусу (13*9*5.7 дюйм; 33*23*14.5 см)
  • Жыгач такта (37,5*29*0,8 см)
  • Акрил плиталары (тунук * 2, жарым тунук * 1)
  • Портативдик заряддагыч *1

Куралдар:

  • Бычак *1
  • UV Cure клейлери *1
  • Эки тараптуу тасма *1 түрмөк
  • Ысык желим мылтык *1

Машиналар:

Лазердик кесүүчү машина

Программалык камсыздоо:

  • Adobe Illustrator
  • Adobe Photoshop
  • Rhino 3D

1 -кадам: Дизайнды иштеп чыгуу

Сиз тиркелген файлды түздөн -түз жүктөп алсаңыз же төмөнкү кадамдарды аткарсаңыз болот.

Картаны белгилөө

  1. Google'дан картанын контурун жүктөп алыңыз

    1. Google "Бириккен Улуттар Уюмунун логотиби"
    2. "Куралдар - өлчөмү - чоң" тандоо
    3. Сүйүктүү сүрөтүңүздү жүктөп алыңыз (бул долбоор колдонгон сүрөт: шилтеме) *Континенталдык жерлер менен капталган татаал сызыктарды тандабоого аракет кылыңыз *
  2. Жүктөлгөн картаны басып чыгаруу версиясына которуңуз

    1. Adobe Photoshop программасында боёк щеткасын колдонуу менен керексиз аймактарды ак түскө боёңуз
    2. Файлды экспорттоо (JPEG)
    3. Файлды Adobe Illustratorго импорттоп, картаны байкоо үчүн "сүрөт изи" функциясын колдонуңуз
    4. Файлды экспорттоо (dxf)

Алты бурчтук фон кошуу

  1. Dxf файлын Rhinoго импорттоңуз
  2. "Көп бурчтук" функциясын тандап, "NumSides" опциясын "6" га киргизиңиз
  3. Радиустун мааниси үчүн "3.5" териңиз
  4. 28 бирдей өлчөмдөгү алты бурчтукту тартыңыз
  5. Файлды 3dm форматында экспорттоңуз

2 -кадам: Лазердик кесүү

Image
Image
Лазердик кесүү
Лазердик кесүү
Лазердик кесүү
Лазердик кесүү
Лазердик кесүү
Лазердик кесүү
  1. Мурда толтурулган файлды xxxке импорттоңуз.
  2. Лазердик кесүүчү машинаны колдонуп, негизги корпусту жыгач тактага жана континенттерди акрил такталарга басып чыгарыңыз (2 тунук жана 1 жарым тунук) (видеолор жогоруда берилген)

3 -кадам: Түзмөктү куруу

Түзмөктү куруу
Түзмөктү куруу
Түзмөктү куруу
Түзмөктү куруу
Түзмөктү куруу
Түзмөктү куруу

Лазердик кесүүдөн кийинки такталар

  • Акрил континенттери

    1. Ар бир континенттин үч тактасын жабыштыруу үчүн УК нурлануучу клейлерди колдонуңуз (орто катмар катары жарым тунук менен)
    2. УК нурун колдонуп, клейлердин катып калышына жол берүү үчүн чапталган аймактарга жаркыраңыз
  • Wooden Board Foundation

    1. Негизги жыгач тактага жабышкан кичинекей жерлерди кол менен алып салыңыз
    2. *Эгерде жыгач тактайдын кандайдыр бир бөлүгү сынган болсо, аларды кайра чаптоо үчүн УК нурлануучу клейлерди колдонуңуз*

Базаны куруу (Бүтүндөй Аппараттын Төмөнкү Фонду)

  1. Өлчөмү 13*9*5.7 дюйм (33*23*14.5 см) болгон ылайыктуу өлчөмдөгү картон кутучаны табыңыз.
  2. Эталондук модель катары жыгач тактаны колдонуп, континенталдык бөлүктөрдү кутунун үстүңкү бетине көз салыңыз
  3. Кнопкалардын астыңкы бөлүгүн коробканын үстүңкү бетине издеңиз, ар бир баскыч ар бир континенталдык бөлүктүн ичинде борборлоштурулган
  4. Издин артынан баскычтын бөлүктөрүн кесүү үчүн пышакты колдонуңуз
  5. Изделген континенталдык бөлүктөрдүн ичинде, баскычты курчап турган кыска сегменттерди кесүү үчүн бычак колдонуңуз
  6. Баскычтын дагы эки астыңкы бөлүгүн кутунун оң жагына издеңиз (издерди бирдей бийиктикте тегиздөөгө аракет кылыңыз)
  7. ЖК дисплей тактасын кутучанын оң жагына (мурунку кадамдагы эки баскычтын үстүнө) көз салыңыз
  8. 6 жана 7 -кадамдагы издерди аткаруу менен эки баскычтын бөлүгүн жана ЖК бөлүгүн кесүү үчүн бычак колдонуңуз

4 -кадам: Райондорду куруу

Райондорду куруу
Райондорду куруу

Жогорудагы схемаларга таянып, схеманы куруңуз.

Эскертүү:

  • RGB светодиоддорунун жана баскычтардын резисторлору башкача, ТАМАН КАРАҢЫЗ!
  • Жогорудагы LCD дисплей тактасында I2C модели жок болгондуктан, ал кемчиликсиз туташкан эмес. (I2C моделдери бар ЖК дисплей такталары төрт казыкты туташтырышы керек)

    • GNDлерди дисплейге жана Arduino тактасына туташтырыңыз
    • Дисплейдеги VCCди панельдеги оң казыктар менен туташтырыңыз
    • SDA'ларды дисплейге жана Arduino тактасына туташтырыңыз
    • SCLлерди дисплейге жана Arduino тактасына туташтырыңыз

5 -кадам: Кодду жүктөө

Бул долбоордун кодун бул жерден же төмөндөн тапса болот.

Ар бир коддоо линиясында анын максаты жана функциясын түшүндүргөн кошумча жазуу бар.

Эскертүү:

  • Бардык конкреттүү D казыктары сиздин схемаңыздын схемасына жараша өзгөртүлүшү жана туураланышы мүмкүн
  • Бардык кечиктирилген секунддарды башка баалуулуктарга өзгөртүүгө болот, бирок аларды ЖОК КЫЛБАҢЫЗ! (Бул кечиктирилген секунддар коддун логикалык жактан агышына мүмкүнчүлүк берет. Ансыз коддун кээ бир бөлүктөрү иштебеши мүмкүн!)
  • 24 -сапта ("цикл үчүн" киргизүү), сиз кайталануучу циклди иштетүүнү каалаган санын белгилей аласыз (баштапкы мааниси 5)
  • Ар бир баскычтын "басылса" жана "басылбаса" илмектериндеги RGB LEDлеринин түс айкалышын тууралоого жана ыңгайлаштырууга болот. (Башында, RGB светодиоддору басылса жашыл түстө, алар басылбаса кызыл түстө жаркырап турмак. Туура жана туура эмес деп жооп берүү үчүн баалуулуктарды чыгармачыл түстөргө өзгөртө аласыз)

#кошуу

#кошуу LiquidCrystal_I2C lcd_I2C_27 (0x27, 16, 2); // ЖКнын дарегин 16 символго жана 2 сап дисплейге коюу _ _R; // RGB диоддорунун кызыл маанисин туюнткан R өзгөрмөсүн киргизүү _ _G; // G өзгөрмөсүн киргизиңиз, ал RGB светодиоддорунун жашыл маанисин билдирет int _B; // B өзгөрмөсүн киргизиңиз, ал RGB LEDлеринин Blue маанисин билдирет _SongNumber; // SongNumber боштугун орнотуу өзгөрмөсүн киргизүү () {pinMode (10, INPUT); // картаны жасалгалоо баскычы pinMode (9, INPUT) үчүн D10ду киргизет; // D9 баш катырма оюн баскычы pinMode (8, INPUT) үчүн киргизүү катары коюлат; // D8ди Евразия баскычы pinMode (4, INPUT) үчүн киргизүү катары коёт; // D4тү Түндүк Америка баскычы pinMode (3, INPUT) үчүн киргизүү катары коёт; // D3тү Түштүк Америка баскычы pinMode (2, INPUT) үчүн киргизүү катары коёт; // D2ди Африканын pinMode (1, INPUT) баскычы үчүн киргизүү катары коёт; // D1ди океания баскычы lcd_I2C_27.init () үчүн киргизүү катары коёт; // LCD дисплей тактасын баштоо lcd_I2C_27.backlight (); // ЖК дисплей тактасынын арткы жарыгын күйгүзүү} void loop () {if (digitalRead (10)) {// if the map-decoration button for pressed (int i = 0; i <5; ++ i) {// төмөнкү циклди 5 жолу иштетүү _R = random (0, 1023); // R өзгөрмөсүн 0дон 1023кө чейинки туш келди мааниге бер _G = кокустук (0, 1023); // G өзгөрмөсүнө 0дон 1023 _B = туш келди (0, 1023) туш келди маанини бериңиз; // В өзгөрмөсүнө 0дон 1023 analogWrite чейинки туш келди маанини бериңиз (13, (_R /4)); // биринчи группадагы RGB светодиоддорунун R мааниси 0дөн 255ке чейин analogWrite чейин өзгөрмө маанини жазат (12, (_G /4)); // биринчи группадагы RGB светодиоддорунун G мааниси 0дөн 255ке чейин analogWrite (11, (_B /4)) чейин өзгөрмө маанини жазат; // биринчи группадагы RGB светодиоддорунун В мааниси 0дөн 255ке чейин analogWrite (7, (_R /4)) чейин өзгөрмө маанини жазат; // экинчи топтогу RGB светодиоддорунун R мааниси 0 жана 255 analogWrite чейин өзгөрмө маанини жазат (6, (_G /4)); // экинчи топтогу RGB светодиоддорунун G мааниси 0дөн 255ке чейин analogWrite (5, (_B /4)) чейин өзгөрмө маанини жазат; // экинчи группадагы RGB светодиоддорунун В мааниси 0дөн 255ке чейин өзгөрмөлүү маанини жазат (3000); // 3000 миллисекунд күтө туруңуз (3 секунд)} // R, G, B өзгөрмөлөрүнүн мааниси циклде аныкталгандыктан, циклде беш түрдүү түстөрдүн айкалышы болот} if (digitalRead (9)) {// if табышмак оюн баскычы басылды _SongNumber = туш келди (1, 20); // SongNumber өзгөрмөсүнө 1ден 20га чейин туш келди маанини бериңиз lcd_I2C_27.setCursor (0, 0); // курсорду кой, саноо 0 lcd_I2C_27.print (_SongNumber) менен башталат; // SongNumberдин маанисин LCD дисплей тактасына analogWrite басып чыгарыңыз (13, 0); // баштапкы абалга келтирүү жана D13 маанисин 0 analogWrite (12, 0) катары жазуу; // баштапкы абалга келтирүү жана D12дин маанисин 0 analogWrite (11, 0) катары жазуу; // баштапкы абалга келтирүү жана D11дин маанисин 0 analogWrite (7, 0) катары жазуу; // баштапкы абалга келтирүү жана D7дин маанисин 0 analogWrite (6, 0) катары жазуу; // баштапкы абалга келтирүү жана D6 маанисин 0 analogWrite (5, 0) катары жазуу; // баштапкы абалга келтир жана D5тин маанисин 0 деп жаз SongNumber 18ден 20га чейин кечигүү (60000); // оюнчулар элдик музыканы угушу үчүн 60000 миллисекунд күтө туруңуз (60 секунд; 1 мүн) if (digitalRead (1)) {// эгер Oceania баскычы analogWrite басылса (13, 0); // analogWrite D13 маанисин 0 analogWrite катары жазыңыз (12, 255); // analogWrite D12дин маанисин 255 analogWrite катары жазыңыз (11, 0); // analogWrite D11 маанисин 0 analogWrite (7, 0) катары жазуу; // analogWrite D7 маанисин 0 analogWrite катары жазыңыз (6, 255); // analogWrite D6 255 analogWrite маанисин жазыңыз (5, 0); // analogW5 D5 маанисин 0} катары жазыңыз // бардык RGB светодиоддору жашыл түстө башкача жаркырайт {// эгер Oceania баскычы analogWrite басылбаса (13, 255); // analogWrite D13тин маанисин 255 analogWrite катары жазыңыз (12, 0); // analogWrite D12 маанисин 0 analogWrite катары жазыңыз (11, 0); // analogWrite D11дин маанисин 0 analogWrite катары жазыңыз (7, 255); // analogWrite D7 маанисин 255 analogWrite (6, 0) деп жазыңыз; // analogW6 D6 маанисин 0 analogWrite катары жаз (5, 0); // analogW5 D5тин маанисин 0} катары жазыңыз // бардык RGB светодиоддору кызыл түстө жаркырайт} // SongNumber 18ден 20га чейин туура жооптордун баары Океания болгондуктан, бул "if loop" оюнчунун жообу туура же lcd_I2C_27.clear () эмес; // ЖК дисплей тактасынын кечигүүсүн тазалоо (1000); // 1000 миллисекунд күт (1 секунд)}}

6 -кадам: Түзмөктү бүтүрүү

  1. Картон кутучаны ачып, мурда курулган схемаларга салыңыз (бардык элементтерди кошкондо, мисалы: үч нан, Arduino тактасы, көчмө заряддагыч)
  2. Кодго жана кутунун үстүндөгү континенталдык бөлүктөргө таянуу менен, баскычтарды тиешелүү позициялардын ар бирине толтуруңуз

    *Сиз кайсы континент үчүн кайсы пиндин баскычы экенин камсыз кылуу үчүн коддордун артындагы кошумча жазууларга кайрылсаңыз болот*

  3. Эки "функция баскычын" (D10 картасы-деко жана D9 баш катырма оюну) кутучанын оң жагындагы кесилген бөлүктөрдүн ар бирине салып коюңуз.
  4. ЖК дисплей тактасын кутунун оң жагындагы кесилген бөлүгүнө орнотуңуз
  5. Кутуну ачып, бардык зымдар тактайларга туура туташкандыгын текшериңиз
  6. Жыгач тактайдын пайдубалын эки тараптуу скотч менен жабыштырыңыз (баскычтар жыгач тактайлардын кесилген бөлүгүнө туура келиши үчүн туура тегиздөө керек)
  7. Кичи регион бөлүктөрүн толтуруу үчүн ысык желим тапанчаны колдонуңуз (негизги континенттер эмес)

7 -кадам: БОЛДУ !!!!

Табышмак оюну үчүн, тестирлөө плейлистинин шилтемесине өтүңүз!

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