Мазмуну:
- 1 -кадам: Бардык бөлүктөр
- 2 -кадам: Бөлүктөрдү Arduino менен кантип туташтыруу керек
- 3 -кадам: Программанын агымы диаграммасы
- 4 -кадам: Джойстикти программалоо
- 5 -кадам: Биринчи деңгээл
- 6 -кадам: Кагылышууну аныктоо
- 7 -кадам: Акыркы эки деңгээл
Video: Дүйнөнүн эң оор оюнун Arduinoдо кайра жаратуу: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Бул долбоор интернеттен таба турган компьютердик оюнга негизделген. Анын аты "Дүйнөдөгү эң оор оюн". Мен аны Arduinoдо LED модулунун төрт модулун колдонуп кайра түзө алдым. Бул нускамада мен аны кантип курууну үйрөтөм. Биз өтө көп деталдарга киришүүдөн мурун, мен бул оюнду түзүү үчүн баскан кадамдарым жөнүндө кыскача маалымат бергим келет.
- Мен керектүү бардык тетиктерди чогулттум.
- Мен бөлүктөрдү бириктирдим.
- Мен оюнчуларды бардык модулдар боюнча жылдыруу үчүн джойстикти колдонгон эскиз жаздым.
- Мен биринчи тоскоолдуктарды иштеп чыгып, аларды эскизге коштум, алар Дүйнөнүн Эң Оюнун туурашты.
- Андан кийин тоскоолдуктар менен кагылышууну аныктоо үчүн кодду коштум, ал оюнду кайра баштайт.
- Анан мен дагы эки деңгээлдеги тоскоолдуктарды ойлоп таптым.
1 -кадам: Бардык бөлүктөр
Бул жерде сизге керектүү бардык бөлүктөрдүн тизмеси келтирилген:
- An Arduino UNO жана USB туташтыргычы: https://www.banggood.com/Wh Wholesale-Arduino-Compati.
- Төрт модуль 8x8: LED матрицасы
- Джойстик:
- 10 эркек-аял зымдары:
2 -кадам: Бөлүктөрдү Arduino менен кантип туташтыруу керек
LED матрицасын Arduino менен кантип туташтыруу керек
- GND GNDге барат
- VCC 5Vга өтөт
- DataIn санарип пин 12ге барат
- CLK санарип пинге 11 барат
- CS же LOAD санарип пин 10го барат
Джойстикти кантип туташтыруу керек
- GND GNDге барат
- 5V 5Vга барат
- VRx аналогдук пин A0 барат
- VRy аналогдук пин A1ге барат
- SW колдонулбайт
Батарея Arduino кубатын берүү үчүн 9v уячасына туташат
3 -кадам: Программанын агымы диаграммасы
Овал программанын башталышын билдирет.
Биринчи кадам - бардык тоскоолдуктарды аныктоо.
Кийинки эки кадам өзгөрмөлөрдү орнотууну жана модулдардын бардыгын иштетүүнү көрсөтөт.
Кийинки кадам, LEDди биринчи деңгээлге жана башка өзгөрмөлөргө коюу.
Кийинки, оюнчу учурда турган деңгээлди көрсөтөт.
Ромб Джойстикти кайсы багытка сүрүлүп жатканын көрүү үчүн окуп жатканын көрсөтөт.
Андан кийин оюнчуну джойстик кайсы жакка түртсө, ошол жакка жылдырыңыз.
Оюнчу тоскоолдук менен сүзүшкөнүн текшерип көрүңүз.
Эгерде оюнчу тоскоолдукка учураса, биринчи деңгээлге кайтыңыз. Эгерде оюнчу деңгээлдин аягына жеткенин текшербесе.
Эгерде оюнчу деңгээлдин аягында болсо, кийинки деңгээлге коюңуз, андан кийин "Учурдагы деңгээлди көрсөтүү" бөлүмүнө кайтыңыз. Эгерде алар аягында болбосо, тоскоолдуктарды жылдырып, кайра "Джойстикти окуңуз".
4 -кадам: Джойстикти программалоо
Албетте, оюнчу болгон кичинекей чекитти жылдыруу үчүн бизге джойстик керек. жана джойстикке оюнчуну чындап жылдырууга уруксат берүү үчүн, биз аны Arduino IDEге коддошубуз керек. Сиз эскиз менюсу> Китепканаларды кошуу> китепканаларды башкаруу жана LedControlду издөө аркылуу таба турган LedControl китепканасын кошушуңуз керек. Бул жерде джойстиктин коду кандай көрүнөт.
#"LedControl.h" кошуу
int DataIn = 12; int CLK = 11; int DIN = 10; LedControl lc = LedControl (DataIn, CLK, DIN, 4); // Объектти төрт модуль үчүн жаратат int delaytime = 50; // оюндун иштөө ылдамдыгы int joystick_RtLt, joystick_UpDn; int players_x = 0; // оюнчулар горизонталдык абалда 0дон 31ге чейин int players_y = 3; // оюнчулар вертикалдуу позициясы 0 ден 7 ге чейин катар, мамыча, модуль; void setup () {initialize_modules (); // күйгүзүү жана төрт LED модулун коюу} void loop () {move_player (); // оюнчу кечигүүнү (кечигүү) жылдырарын текшерүү менен циклди баштоо; } void initialize_modules () {lc.shutdown (0, false); // 0 lc.setIntensity модулун иштетет (0, 1); lc.shutdown (1, жалган); // 1 lc.setIntensity модулун иштетет (1, 1); lc.shutdown (2, false); // 2 lc.setIntensity модулун баштайт (2, 1); lc.shutdown (3, false); // 3 lc.setIntensity модулун иштетет (3, 1); lc.clearDisplay (0); // модулду тазалайт 0} void move_player () {module = players_x/8; // оюнчу кайсы модулда экенин аныктайт = player_x%8; // оюнчу модулдун катарында турган мамычаны аныктайт = players_y; lc.setLed (модуль, сап, мамыча, жалган); // оюнчунун учурдагы абалында алып баруучуну өчүрүү joystick_RtLt = analogRead (A0)/204 - 2; // окуу X -джойстик жана картанын диапазону 2ден -2ге чейин болсо (joystick_RtLt> 0) // джойстик туура оюнчуларга келгенде_x ++; // эгер оңго кетсе, эгерде (joystick_RtLt 0) // эгер джойстик сол жагында болсо жана оюнчулар башында эмес_x--; // солго жылдыруу joystick_UpDn = analogRead (A1)/204 - 2; // окуу Y-джойстик жана картанын диапазону 2ден -2ге чейин болсо (joystick_UpDn 0) // эгер джойстик ылдый болсо жана оюнчу түбүндө болбосо оюнчулар_y--; // эгер ылдый жылсаңыз (joystick_UpDn> 0 && player_y <7) // эгер джойстик өйдө болсо жана оюнчу жогорку оюнчулар_y ++ ичинде болбосо; // жогорулоо модулу = players_x/8; // модулду оюнчуларга коюңуз жаңы позиция мамыча = players_x%8; // оюнчуларга мамычаны коюңуз жаңы позиция катар = players_y; // оюнчуларга катарды коюңуз lc.setLed жаңы абалы (модуль, катар, мамыча, чыныгы); // оюнчунун жаңы позициясын алып келүү}
Эми джойстикти кошкондон кийин, биринчи тоскоолдуктун үстүндө иштейли!
5 -кадам: Биринчи деңгээл
Жарайт, андыктан азыр программанын негизги бөлүгүнө, тоскоолдуктарга кирүүгө убакыт келди! Тоскоолдуктар муну чындап эле "Дүйнөнүн Эң Оюну" кылат. Демек, эгер сиз оюнду чындап ойногуңуз келсе, анда муну кодуңузга кошушуңуз керек:
байт тоскоол [ДЕҢГЭЭЛДЕР] [ЭКЕНДЕР] [КОЛОННАЛАР] [КАТАРЛАР] = {// үч деңгээл, 8 көрүнүш, 8 колум, 8 катар
{{{1, 1, 1, 1, 1, 1, 0, 0}, // биринчи деңгээл, биринчи көрүнүш {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1}, { 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // биринчи деңгээл, экинчи көрүнүш {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 1, 1, 1, 1 }, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 1, 1, 1, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // биринчи деңгээл, үчүнчү сахна {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 1, 1, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // биринчи деңгээл, төртүнчү көрүнүш {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 1, 0, 0, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // биринчи деңгээл, бешинчи көрүнүш {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 0, 0, 1, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // биринчи деңгээл, алтынчы көрүнүш {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, { 1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{0, 0, 1, 1, 1, 1, 1, 1}, // биринчи деңгээл, жетинчи көрүнүш {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0 }, {1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{0, 1, 1, 1, 1, 1, 1, 1}, // биринчи деңгээл, сегизинчи сахна {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}}, void setup () {initialize_modules (); // күйгүзүү жана бардык төрт жетектөөчү модулду жөндөө start_level (0); void loop () {move_player (); // оюнчу кыймылдаганын текшерүү менен циклди баштоо (кагылышуу ()) {// кагылышуу деңгээлин текшерүү = 0; // эгерде кагылышуу чын болсо, баштапкы деңгээлди баштапкы абалга келтирүү (деңгээл); // оюнду кайра баштоо} else if if (delay_count == obstacle_delay) {// эгер эч кандай кагылышуу тоскоолдук кылбаса, ар бир кечигүү moveobstacle (); delay_count = 0; } else delay_count ++; кечигүү (кечигүү убактысы); // оюндун ылдамдыгы менен кечигүү}
Жана бул биринчи тоскоолдук! Эгерде сиз муну биринчи деңгээл катары тажатып алсаңыз, анда байтты дайыма өзгөртө аласыз, эсиңизде болсун, сизде сегиз башка көрүнүш болушу керек! Келгиле, кийинки кадамга өтөлү, кагылышууну аныктоо!
6 -кадам: Кагылышууну аныктоо
Бул кадам оюндун дагы бир маанилүү бөлүгү, ансыз деле анча деле кыйынчылык болбойт! сиз эч кандай кесепети жок тоскоолдуктарды жеңе аласыз! бул абдан кызыктуу болмок эмес, туурабы? программанын бул бөлүмүн кошуп, оюнду татаалдаштыралы (жана дагы бир топ кызыктуу!):
void loop () {
move_player (); // оюнчу кыймылдаганын текшерүү менен циклди баштоо (кагылышуу ()) {// кагылышуу деңгээлин текшерүү = 0; // эгерде кагылышуу чын болсо, баштапкы деңгээлди баштапкы абалга келтирүү (деңгээл); // оюнду кайра баштоо} else if if (delay_count == manea_delay) {// эгер эч кандай кагылышуу тоскоолдук кылбаса, ар бир кечигүү moveobstacle (); delay_count = 0; } else delay_count ++; кечигүү (кечигүү убактысы); // оюндун ылдамдыгы менен кечигүү} int кагылышуу () {// оюнчу сахна модулунда тоскоолдукка кабылганын текшерүү = players_x/8; колонка = оюнчулар_х%8; катар = оюнчулар_ж; if (модуль> 0) if (тоскоолдук [деңгээл] [сахна] [мамыча] [катар] == 1) // эгерде оюнчунун позициясы тоскоолдукту кайтаруу менен бирдей болсо (1); // кагылышуу аныкталды кайтаруу чыныгы кайтаруу (0); // кагылышуу жок жалган}
Ал эми сен бар! азыр сиз оюндан көбүрөөк ырахат ала аласыз! Эми мен сизге оюндун акыркы эки деңгээлин кантип программалоону көрсөтөм! Сиз бул көрсөтмөнү дээрлик аткардыңыз, жана мен аны сынап көрүүгө даяр экениңе ишенем!
7 -кадам: Акыркы эки деңгээл
Көрсөтмөнүн аягына чейин келе жаткан болсок, бул акыркы эки деңгээл бул оюнду бүтүрүү үчүн керек. Анан муну өзүңүз сынап көрсөңүз болот! бул жерде код:
байт тоскоол [ДЕҢГЭЭЛДЕР] [ЭКЕНДЕР] [КОЛОННАЛАР] [КАТАРЛАР] = {// экинчи жана үчүнчү деңгээл, 8 көрүнүш, 8 мамыча, 8 катар
{{{1, 0, 0, 0, 0, 0, 0, 1}, // экинчи деңгээл, биринчи көрүнүш {0, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, { 0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 0, 1}}, {{1, 1, 0, 0, 0, 0, 0, 1}, // экинчи деңгээл, экинчи көрүнүш {0, 0, 1, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 0, 0, 0 }, {0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 0, 0, 0, 1, 1}}, {{0, 1, 0, 0, 0, 0, 0, 0}, // экинчи деңгээл, үчүнчү көрүнүш {0, 0, 1, 1, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 1, 0}}, {{0, 0, 1, 0, 0, 0, 0, 0}, // экинчи деңгээл төртүнчү көрүнүш {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {0, 1, 1, 1, 1, 0, 1, 0}, {0, 1, 0, 1, 1, 1, 1, 0}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}}, {{0, 0, 0, 1, 0, 0, 0, 0}, // экинчи деңгээл, беш чи сахна {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 1, 1, 0, 0, 1}, {1, 0, 0, 1, 1, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, // экинчи деңгээл, алтынчы көрүнүш {0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 1, 0, 0, 1, 0, 0}, {1, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 1, 1}, {0, 0, 1, 0, 0, 1, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 1, 0, 0}, // экинчи деңгээл, жетинчи көрүнүш {0, 0, 0, 0, 0, 1, 0, 0}, {1, 1, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 1, 1}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0, 1, 0}, // экинчи деңгээл сегизинчи көрүнүш {1, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 1}, {0, 1, 0, 0, 0, 0, 0, 0, 0}}}, {{{0, 1, 0, 0, 0, 0, 0, 1}, // үчүнчү деңгээл, биринчи көрүнүш {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 0} }, {{0, 0, 0, 0, 1, 0, 0, 1}, // үчүнчү деңгээл, экинчи көрүнүш {1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // үчүнчү деңгээл, үчүнчү көрүнүш {0, 0, 0, 1, 0, 0, 1, 0}, { 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 1}, // үчүнчү деңгээл, төртүнчү көрүнүш {1, 0, 0, 1, 0, 0, 1, 0 }, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // үчүнчү деңгээл, бешинчи көрүнүш {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 1}, // үчүнчү деңгээл, алтынчы көрүнүш {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // үчүнчү деңгээл, жетинчи көрүнүш {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, // үчүнчү деңгээл, сегизинчи көрүнүш { 1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}}};
Жана бул! Сиз Дүйнөнүн Эң Оюнун бүтүрүүгө аракет кылып жатасыз. Ошондой эле толук Arduino коду төмөндө тиркелет.
Сунушталууда:
Кайра иштетилген жана кайра колдонулган материалдардан жасалган динамиктер: 6 кадам
Кайра иштетилген жана кайра колдонулган материалдардан жасалган спикерлер: " Музыка-бул адамзаттын универсалдуу тили. &Quot;-Генри Вадсворт Лонгфеллоу Бул жерде кайра иштетилген жана кайра колдонулган материалдарды колдонуу менен спикерлердин уккулуктуу үн топтомун түзүүнүн жакшы жолу. Ал эми эң жакшы жери-алар мага бир тыйынга да кымбат болгон жок. Баары бул пр
Дүйнөнүн эң кичинекей кайра заряддалуучу фонариги (Ultrabright): 4 кадам
Дүйнөдөгү эң кичинекей кайра заряддалуучу фонарь (Ultrabright): Саламатсыздарбы балдар, мен ледтер менен иштөөнү жакшы көрөм, андыктан бул окуу куралында мен сизге эң кичинекей кайра заряддалуучу фонарикти курууну көрсөтөм. Бул фонарьдын өлчөмдөрү болжол менен 14 × 12 × 10 мм, мен Ultrabright болгон Piranha жетегин колдоном жана ысытпайм
Жарыкка багытталган робот баш. Кайра иштетилген жана кайра колдонулган материалдардан: 11 кадам
Жарыкка багытталган робот баш. Кайра иштетилген жана кайра колдонулган материалдардан: Эгерде кимдир бирөө робототехника бош чөнтөк менен келе алабы деп ойлонсо, балким, бул үйрөтүүчү жооп бере алат. Эски принтердин кайра иштетилген тепкич моторлору, колдонулган теннис топтору, шамдар, колдонулган бальза, эски илгичтин зымы, эмальданган зым
Тоскоолдуктардан качуу роботу оор жүктү көтөрүү үчүн: 6 кадам
Оор жүк көтөрүү үчүн тоскоолдуктардан качуу роботу: Бул уулумдун рокерин көтөрүү үчүн жасалган тоскоолдуктардан качуу роботу
Meade ETX 125 телескопу оор электр зымдары Mod: 6 кадам
Meade ETX 125 Telescope Heavy Electrical Wiring Mod: Бул өзгөртүү ниети Майк Уизнердин улуу онлайн ресурсунда талкууланган бир нече электр зымдарын чечүү болуп саналат: http://www.weasner.com/etx/menu.html Негизги маселе чынында: " Өтө көп асма кабелдер! " Атап айтканда: