Мазмуну:

Хэллоуинге карата коркунучтуу ашкабак момпосуй машинасы: 5 кадам
Хэллоуинге карата коркунучтуу ашкабак момпосуй машинасы: 5 кадам

Video: Хэллоуинге карата коркунучтуу ашкабак момпосуй машинасы: 5 кадам

Video: Хэллоуинге карата коркунучтуу ашкабак момпосуй машинасы: 5 кадам
Video: Получастный 21-часовой паром с ночевкой для одиночного путешествия Япония в середине зимы 2024, Ноябрь
Anonim
Image
Image

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

1 -кадам: Бул долбоордо колдонулган нерселер

Бул долбоордо колдонулган нерселер
Бул долбоордо колдонулган нерселер
Бул долбоордо колдонулган нерселер
Бул долбоордо колдонулган нерселер

Аппараттык компоненттер

  • Arduino UNO / Seeeduino V4.2
  • Негизги калкан V2
  • Grove - PIR Motion Sensor
  • Grove - MP3 v2.0
  • Grove - WS2813 RGB LED тилкеси суу өткөрбөйт - 60 LED/m - 1m
  • EMax 12g ES08MD жогорку сезгич серво

Программалык камсыздоо жана онлайн кызматтары

Arduino IDE

2 -кадам: Окуя

Окуя
Окуя
Окуя
Окуя
Окуя
Окуя

Хэллоуин келе жатат, ашкабак фонарлары маанилүү. Биз Seeeduino колдонобуз жана PIR Motion Senser ашкабак чырагын курушкан, ага бирөө келгенде, ал музыка ойнойт жана момпосуй түкүрөт.

Механикалык түзүлүш

** 1 -кадам: ** Момпосуй жана ашкабак сатып алыңыз, ашкабактын артындагы чуңкурду казыңыз, ошондо биз ага Seeeduino салышыбыз мүмкүн.

** 2 -кадам: ** Мындай кутучаны кесип, ашкабактын оозуна бекит.

** 3 -Setp: ** Колун servo моторго орнотуңуз. Ашкабактын ичиндеги servo моторду оңдоо үчүн, банка кармагыч катары колдонобуз.

** 4 -кадам: ** Серво моторунун колу өйдө көтөрүлгөндө, кутудагы конфеттер ашкабактын оозунан түкүрүлөрүн тактаңыз.

3 -кадам: Аппараттык туташуу

** 1 -кадам: ** SD картанын бир бөлүгүнө MP3 аттуу папканы жасаңыз, ага mp3 файлды көчүрүп, 0001.mp3 деп атаңыз. Динамикти MP3 Grove'го 3.5 мм порту аркылуу туташтырыңыз жана MP3 Grove'ду Base Shield'деги D2 портуна туташтырыңыз.

** 2 -кадам: ** PIR Motion Sensor Grove'ду Base Shieldдын D4 портуна туташтырыңыз жана NeoPixel тилкесин Base Shieldдын D5 портуна туташтырыңыз.

** 3 -кадам: ** Серво Гроувду Base Shieldдын санарип пинине 9 туташтырыңыз, андыктан бизге DuPont линияларын колдонуу керек болушу мүмкүн.

** 4 -кадам: ** Base Shield'ди Seeeduinoго сайыңыз.

** 5 -кадам: ** Seeeduino программасын жүктөө үчүн, биз компьютер менен туташуу үчүн USB кабелин колдонобуз. Жүктөлгөндөн кийин, биз ашкабактын ичиндеги электр кабелин гана колдоно алабыз.

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

** 1 -кадам: ** Китепканаларды орнотуу

Жакшыраак эффект алуу үчүн биз FreeRTOS деп аталган операциялык системаны колдонобуз, аны бул жерден көчүрүп алса болот.

Мындан тышкары, бул долбоорго төмөнкү китепканалар керек, аларды жүктөп алып, орнотуңуз:

  • Grove - MP3 v2.0
  • Adafruit NeoPixel
  • Adafruit TicoServo

Же MP3 Grove колдонуу үчүн проект папкасына MP3.h кошсоңуз болот.

** 2 -кадам: ** Программаны түзүү жана жүктөө

*ЭСКЕРТҮҮ: Marco MAX_BRIGHTNESS NeoPixelдин максималдуу жарыктыгын көзөмөлдөйт, электр энергиясын керектөөнү азайтуу үчүн анын жарыктыгын азайтат.

Эгерде сиз мурда Seeeduinoдо операциялык тутумду колдонбогон болсоңуз, анда бул макаланы түшүнүү кыйын болушу мүмкүн, кийинки макала аны жөн эле жасайт.

Орнотуу () ыкмасында биз Serial, MP3 Grove жана Servo Motorду нормалдуу түрдө баштадык жана семафор деп аталган вариантты түздүк, аны флаг өзгөрмөсү катары карасаңыз болот, ал кимдир бирөө келер -келбесин көрсөтөт.

vSemaphoreCreateBinary (xPIRBinarySemaphore);

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

s1 = xTaskCreate (vFadingLEDsTask, NULL, configMINIMAL_STACK_SIZE, NULL, 1, NULL);

s2 = xTaskCreate (vScaningPIRTask, NULL, configMINIMAL_STACK_SIZE, NULL, 1, NULL); s3 = xTaskCreate (vHandlePIRTask, NULL, configMINIMAL_STACK_SIZE, NULL, 2, NULL);

Семафор текшерилгенден кийин жана тапшырмалар туура коюлганда, vTaskSetartScheduler () методу бүт FreeRTOSту баштайт.

if (xPIRBinarySemaphore == NULL || s1! = pdPASS || s2! = pdPASS || s3! = pdPASS)

{үчүн (;;); } vTaskStartScheduler ();

FreeRTOSто колдонулган loop () ыкмасы. Эми калгандары жөнөкөй, vFadingLEDsTask тапшырмасы Variable Color LED жана vScanPIRTask тапшырмасын дайыма PIR Motion Sensor 'пин сканерлейт. PIR Motion Sensor кимдир бирөө келе жатканын аныктаганда, ал желекти орнотот, андан кийин vHandlePIRTask тапшырмасы иштей баштайт. VHandlePIRTask тапшырмасынын приоритети 2 болгондуктан, ал иштеп турганда калган эки калган тапшырма токтотулат.

Кийинки чалуулар желекти орнотуу же кайра коюу үчүн колдонулат.

xSemaphoreGive (xPIRBinarySemaphore);

xSemaphoreTake (xPIRBinarySemaphore, portMAX_DELAY);

5 -кадам: операция

Динамикти, Seeeduino менен Grovesты ашкабактын фонарынын ичине салып, күйгүзүңүз. Эми сиз кимдир бирөөнүн келишин күтө аласыз, алдап же дарылаңыз:-).

Halloween ашкабак жарыгын басуу менен видеону текшериңиз. (https://www.youtube.com/embed/CFjuWXOIUN4)

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