Агуулгын хүснэгт:
- Алхам 1: Үйл ажиллагааны онол
- Алхам 2: Эд анги, багаж хэрэгсэл
- Алхам 3: Гагнах ба угсрах
- Алхам 4: Програмчлал A: Arduino
- Алхам 5: В програмчлал: Python ба хэрэглэгчийн интерфэйс
Видео: Python болон Arduino дээрх MIDI Drum Kit: 5 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:01
Би багаасаа бөмбөрийн иж бүрдэл худалдаж авахыг үргэлж хүсдэг байсан. Тэр үед бүх хөгжмийн төхөөрөмжүүд дижитал програмтай байдаггүй байсан тул өнөө үед бид хангалттай байгаа тул үнэ, хүлээлтийн хамт хэт өндөр байсан. Саяхан би eBay -аас хамгийн хямд үнэтэй бөмбөрийн иж бүрдэл худалдаж авахаар шийдлээ. Үүнийг цохиж, өөрийн техник хангамж, програм хангамжийг төхөөрөмжид хавсаргах боломжтой болсон.
Худалдан авалт нь урам хугарсангүй: 9 өөр дууны дэвсгэр бүхий зөөврийн бөмбөрийн иж бүрдэл, цохиур, сайн малгайтай хоёр хөл солих дөрөө, микро USB залгуур. Үнэхээр сэтгэл санааг бууруулж байсан зүйл бол гаралтын дуу чимээ юм (Энэ хэрэгслийн бодит хэрэглээ бол гадаад чанга яригчийг холбож, таашаал авах явдал юм). Тиймээс би үүнийг USB, Arduino дээр суурилсан MIDI бөмбөрийн хэрэгсэл, Python дээр суурилсан хэрэглэгчийн интерфейс ашиглан өөрийн програмчлагдах програм болгон хөрвүүлэхээр шийдсэн.
Төхөөрөмжийн онцлог шинж чанарууд:
- Бага үнэ
- Аливаа дижитал оролтоос бөмбөрийн хэрэгсэл бий болгох, тэр ч байтугай олон товчлуурууд
- Зөвхөн USB интерфэйсээр дамжуулан харилцаа холбооны дэмжлэг, тэжээлийн хангамж - USB -ийг UART хөрвүүлэгч болон Arduino төхөөрөмжид нэгтгэх
- Миниумын эд ангиудыг зөв ажиллуулах
- Python дээр суурилсан UI ашиглахад хялбар
- Тохируулах хурд, тэмдэглэл, Arduino зүү бүхий MIDI -ийн бүрэн дэмжлэг
- Төхөөрөмжийн санах ойд хадгалагдсан бөмбөрийн тохиргоог хадгалах ба ачаалах
Төслийг үргэлжлүүлье …
Алхам 1: Үйл ажиллагааны онол
Блок диаграм
Юуны өмнө төслийн бүтцэд анхаарлаа хандуулж, тусдаа блок болгон хуваацгаая.
Roll-Up Drum Kit
Төслийн үндсэн нэгж. Энэ нь 9 тусдаа хүрд дэвсгэрээс бүрдэх бөгөөд дэвсгэр бүр нь дарагдсан үед логик төлөвөө өөрчилдөг товчлуурууд юм. Бүтцийн хувьд энэ бөмбөрийн иж бүрдлийг ямар ч товчлуураар хийх боломжтой. Бөмбөрийн дэвсгэр бүрийг үндсэн электрон самбар дээрх татах эсэргүүцэлтэй холбодог тул бөмбөрийн дэвсгэрийг удаа дараа цохиж байх үед хэлхээний газарт тодорхой унтраалга холбож, хүрдний дэвсгэр дээр логик LOW байна. Даралт байхгүй үед бөмбөрийн унтраалга нээлттэй бөгөөд цахилгаан дамжуулах шугам руу татах эсэргүүцэлтэй тул бөмбөрийн дэвсгэр дээр логик HIGH байдаг. Төслийн зорилго нь бүрэн дижитал MIDI төхөөрөмжийг бий болгох явдал тул үндсэн ПХБ дээрх бүх аналог хэсгүүдийг үл тоомсорлож болно. Бөмбөрийн иж бүрдэл нь бөмбөр, өндөр малгайтай хоёр дөрөөтэй бөгөөд тэдгээрийг татах резистортой холбож, бүх бөмбөрийн дэвсгэртэй ижил логикийг хуваалцдаг болохыг анхаарах нь чухал юм (Үүнийг бид дараа нь хэлэлцэх болно.).
Arduino Pro-Micro
Бөмбөрийн хэрэгслийн тархи. Үүний зорилго нь бөмбөрийн дэвсгэрээс гарч буй дохио байгаа эсэхийг олж тогтоох, шаардлагатай бүх параметр бүхий MIDI гаралтыг хангах явдал юм. Анхаарна уу, дохионы хурд, үргэлжлэх хугацаа. Бөмбөрийн дэвсгэр нь дижитал шинж чанартай тул тэдгээрийг arduino дижитал оролтонд холбох боломжтой (нийт 10 зүү). Хүссэн бүх тохиргоо болон MIDI мэдээллийг хадгалахын тулд бид түүний санах ойг ашиглах болно-EEPROM, ингэснээр төхөөрөмжийг асаах бүрт MIDI мэдээллийг EEPROM-ээс ачаалж, дахин програмчилж, дахин тохируулах боломжтой болгодог. Түүнчлэн, Arduino Pro-Micro нь маш жижиг багц хэлбэрээр байдаг бөгөөд бөмбөрийн иж бүрдэл дотор амархан хуваарилагдах боломжтой.
FTDI USB -ээс цуваа хөрвүүлэгч
Компьютерийн програмын тусламжтайгаар манай төхөөрөмжийн онцлог шинж чанарыг програмчлах, тодорхойлохын тулд Arduino Pro-Micro-д USB байхгүй тул USB интерфэйсийг цуврал болгон хөрвүүлэх шаардлагатай болно. Төхөөрөмж хоорондын харилцаа холбоо нь UART дээр суурилдаг тул нэмэлт шинж чанараас үл хамааран ашиглахад хялбар байдлаас шалтгаалан FTDI төхөөрөмжийг энэ төсөлд ашигладаг.
PC програм - Python
Хэрэглэгчийн интерфэйс, хурдан бүтээх төслүүдийг хөгжүүлэх тухайд Python бол гайхалтай шийдэл юм. UI програмын зорилго нь бөмбөрийн иж бүрдэлд зориулсан MIDI шинж чанарыг дахин тодорхойлох, мэдээллийг хадгалах, програмын төхөөрөмжийг хадгалах, кодыг дахин дахин хөрвүүлэх шаардлагагүй систем хоорондын харилцаа холбоо тогтооход илүү хялбар болгох явдал юм. Бид бөмбөрийн иж бүрдэлтэй холбогдохын тулд цуваа интерфэйсийг ашиглаж байгаа тул интернетийн эргэн тойронд ямар ч төрлийн цуваа холболтыг дэмждэг олон тооны үнэгүй модулиуд байдаг. Нэмж дурдахад, UART интерфэйс нь RXD, TXD, DTR гэсэн гурван зүүгээс бүрдэнэ. DTR нь Arduino модулийг дахин тохируулахад ашиглагддаг тул бид MIDI програмыг ажиллуулах эсвэл UI -ийг програмын төхөөрөмжид холбохыг сонирхож байгаа бол USB кабель эсвэл ямар ч зүйлийг дахин холбох шаардлагагүй болно.
Алхам 2: Эд анги, багаж хэрэгсэл
Эд анги
- Roll-Up Drum Kit
- 2 x Тогтвортой дөрөө (Ихэвчлэн DK багцад багтдаг).
- FTDI - USB -ээс цуваа хөрвүүлэгч
- Arduino Pro Micro
- Микро USB кабель
Багаж хэрэгсэл
- Гагнуурын төмөр/станц
- Гагнуурын цагаан тугалга
- Нимгэн диаметртэй нэг судалтай утас
- Хясаа
- Таслагч
- Хавчуурга
- Хутга
- Шургуулагч
- 3D принтер (заавал биш - дөрөөний тусгай платформд зориулагдсан)
Програм хангамж
- Arduino IDE
- Python 3 ба түүнээс дээш
- JetBrains Pycharm
- Үсгүй MIDI интерфэйс
- loopMIDI
Алхам 3: Гагнах ба угсрах
Гурван модулийг нэгтгэх шаардлагатай тул гагнах, угсрах үйл явц богино бөгөөд энгийн байдаг.
-
Arduino Pro-Micro-ийг FTDI төхөөрөмжтэй холбож, холболтууд нь төхөөрөмж бүрт тодорхойлсон I/O-тэй нийцэж байгаа эсэхийг шалгаарай.
- VBUS-VBUS
- GND-GND
- DTR-DTR
- RXD-TXD
- TXD-RXD
- Бөмбөрийн хуванцар бүрхүүлээс бүх боолтыг салгаад, самбараас самбар хүртэлх кабель, түүний татах эсэргүүцэл дээр анхаарлаа төвлөрүүлж байгаа эсэхийг шалгаарай.
-
Өмнө нь бидний бүтээсэн Arduino-FTDI модулийн гагнуурын нимгэн утаснууд:
- Дижитал оролт: D [2:11]
- VBUS
- D+
- D-
- GND
- Модулийг батерейны хайрцгийн дотор оруулна уу, ингэснээр утас нь дэвсгэрийн татах эсэргүүцэлтэй адилхан талд хөвөх болно.
- Бүх дижитал оролтыг сүүлийн зурагт үзүүлсэн шиг бөмбөрийн хавчаарын терминалуудад гагнана.
- FTDI төхөөрөмжид микро USB автобусыг гагнах (VBUS, D+, D-, GND) эдгээр утаснуудыг шалгахад алдаа гараагүй эсэхийг шалгаарай.
- Arduino-FTDI модулийг батерейны хайрцагт халуун цавуугаар холбоно уу
- Төхөөрөмжийг зохих эрэг бэхэлгээгээр угсарна
Бид үүнийг хийсэн, төхөөрөмж угсарч байна. Кодоо үргэлжлүүлье …
Алхам 4: Програмчлал A: Arduino
Бидний ноорогыг алхам алхамаар тайлбарлая:
Юуны өмнө зөв ажиллахын тулд шаардлагатай хоёр номын санг оруулах шаардлагатай байна. EEPROM-ийг Arduino IDE дээр аль хэдийн урьдчилан суулгасан боловч цохилтын бөмбөрийн дебютер модулийг тусад нь суулгах ёстой
#оруулах #оруулах
Эдгээр унтраалга нь ихэвчлэн дибаг хийх дараалалд ашиглагддаг. Хэрэв та Arduino терминалуудын хүрд дэвсгэртэй холболтыг туршиж үзээд бүх дижитал оролтыг тодорхойлохыг хүсч байвал эдгээр унтраалгыг тодорхойлох ёстой
/ * Хөгжүүлэгчийн унтраалга: Дебаг хийх эсвэл эхлүүлэхийн тулд хүссэн горимыг тайлбарлахгүй байх * ///#LOAD_DEFAULT_VALUES -ийг тодорхойлох // EEPROM -ийн оронд тогтмол утгуудыг ачаалах //#PRINT_PADS_PIN_NUMBERS -ийг тодорхойлох // Цуваа портоор дарагдсан дэвсгэрт холбогдсон зүү дугаарыг хэвлэх.
Тогтмол талбарууд нь бүх үндсэн утгыг илэрхийлдэг бөгөөд үүнд бөмбөрийн тоолуур орно. Төхөөрөмжийг анх удаа ажиллуулахын тулд Hi-Hat болон Kick дөрөөний зөв холболтыг мэдэх шаардлагатай
/ * Бөмбөрийн төрөл тоолох */
DRUM_POSITION {KICK = 0, SNARE, HIHAT, RIDE, CYMBAL1, CYMBAL2, TOM_HIGH, TOM_MID, TOM_LO, HIHAT_PEDAL};
/ * Анхдагч утгууд */
const uint8_t DRUM_NOTES [10] = {36, 40, 42, 51, 49, 55, 47, 45, 43, 48}; const uint8_t DRUM_VELOCITIES [10] = {110, 100, 100, 110, 110, 110, 110, 110, 110, 110}; const uint8_t DRUM_PINS [10] = {8, 6, 4, 3, 11, 9, 5, 10, 2, 7};
/ * Бөмбөрийн цохилтын үргэлжлэх хугацаа */
const uint8_t KICK_DB_DURATION = 30;
EEPROM нь компьютерийн програмаас ирж буй бүх өгөгдлийг хадгалах/ачаалахад ашиглагддаг. Дээр тайлбарласан хаягууд нь бөмбөрийн дэвсгэр тус бүрийн MIDI мэдээллийн байршлыг харуулдаг
/* EEPROM Хаягуудын зураглал
Тэмдэглэл: | 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 |
Зүү: | 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13 | Хурд | 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20, 0x21, 0x22, 0x23 | */ const uint8_t NOTES_ADDR = 0x00; const uint8_t VELOCITIES_ADDR = 0x14; const uint8_t PINS_ADDR = 0x0A;
Глобал хувьсагчдыг дэвсгэр бүрийн төлөв байдлыг тодорхойлоход ашигладаг бөгөөд үүний дагуу MIDI холболтыг гүйцэтгэдэг
/ * Дэлхийн хувьсагчид */
uint8_t drumNotes [10], drumVelocities [10], drumPins [10]; // MIDI хувьсагчид
uint8_t uartBuffer [64]; // MIDI өгөгдөл дамжуулагчийн цохилтыг цуглуулах, хадгалах UART буфер (DRUM_PINS [KICK], KICK_DB_DURATION); // Kick drum дэгдэмхий bool previousState [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // Drum pad өмнөх логик нь тогтворгүй bool currentState [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // Drum pad одоогийн логик төлөвүүд
EEPROM функцууд
/* Тохиргоог EEPROM дээр хадгалах*/
хоосон дэлгүүрEEPROM () {
memcpy (drumNotes, uartBuffer, 10); memcpy (drumPins, uartBuffer + 10, 10); memcpy (drumVelocities, uartBuffer + 20, 10); for (uint8_t i = 0; i <10; i ++) EEPROM.write (NOTES_ADDR+i, drumNotes ); for (uint8_t i = 0; i <10; i ++) EEPROM.write (PINS_ADDR+i, drumPins ); for (uint8_t i = 0; i <10; i ++) EEPROM.write (VELOCITIES_ADDR+i, drumVelocities ); }
/* EEPROM -ээс тохиргоог ачаалах*/
void loadEEPROM () {for (uint8_t i = 0; i <10; i ++) drumNotes = EEPROM.read (NOTES_ADDR+i); for (uint8_t i = 0; i <10; i ++) drumPins = EEPROM.read (PINS_ADDR+i); for (uint8_t i = 0; i <10; i ++) drumVelocities = EEPROM.read (VELOCITIES_ADDR+i); }
Хувьсагч болон програмчлалын горимыг эхлүүлэх, дөрөө болон Arduino ачаалах тохиолдолд нэгэн зэрэг идэвхждэг
void enterProgrammingMode () {
bool confirmBreak = худал; uint8_t lineCnt = 0; uint8_t charCnt = 0; char readChar = 0; while (! confirmBreak) {if (Serial.available ()) {uartBuffer [charCnt] = Serial.read (); if (charCnt> = 29) confirmBreak = true; өөр charCnt ++; }} Serial.println ("OK"); storeEEPROM (); }
хүчингүй initValues () {
#ifdef LOAD_DEFAULT_VALUES memcpy (drumNotes, DRUM_NOTES, 10); memcpy (drumVelocities, DRUM_VELOCITIES, 10); memcpy (drumPins, DRUM_PINS, 10); #өөр ачаалахEEPROM (); #endif}
MIDI Харилцаа холбооны зохицуулагчид 1 ms тэмдэглэл барих хугацаатай
/ * MIDI тэмдэглэлийн функцийг тоглуулах */
void midiOut (enum DRUM_POSITION drumIn) {
if (drumIn == HIHAT) {// Хэрэв HI-HAT цохигдсон бол (! digitalRead (drumPins [HIHAT_PEDAL])) {noteOn (0x90, drumNotes [HIHAT_PEDAL], drumVelocities [HIHAT_PEDAL]); саатал (1); noteOn (0x90, drumNotes [HIHAT_PEDAL], 0); } өөр {noteOn (0x90, drumNotes [HIHAT], drumVelocities [HIHAT]); саатал (1); noteOn (0x90, drumNotes [HIHAT], 0); }} өөр {// Тогтмол хүрд MIDI дамжуулах тэмдэглэлOn (0x90, drumNotes [drumIn], drumVelocities [drumIn]); саатал (1); noteOn (0x90, drumNotes [drumIn], 0); }}
void noteOn (int cmd, int pitch, int speed) {Serial.write (cmd); Цуваа бичих (давирхай); Цуваа бичих (хурд); }
Хязгааргүй төхөөрөмжийн ажиллах давталт бүхий setup () ба loop () функцууд:
хүчингүй тохиргоо () {
Цуваа.begin (115200);
for (uint8_t i = 0; i <10; i ++) {pinMode (i+2, INPUT); } #ifdef PRINT_PADS_PIN_NUMBERS while (true) {// Infinite debug loop for for (uint8_t i = 0; i <10; i ++) {if (! digitalRead (i+2)) {Serial.print ("Pin No: D"); Serial.print (i + '0'); // Тоог ASCII тэмдэгт болгон хөрвүүлэх}}} #else initValues (); / * Програмчлалын горим: Хэрэв ачаалах үед хоёр дөрөө дарвал горим идэвхжсэн болно */ if (! DigitalRead (drumPins [KICK]) &&! DigitalRead (drumPins [HIHAT_PEDAL])) enterProgrammingMode (); #endif}
void loop () {for (uint8_t i = 1; i <9; i = i + 1) {currentState = digitalRead (drumPins ); if (! currentState && previousState ) midiOut (i); // Төлөвүүдийг харьцуулж, унаж буй ирмэгийг илрүүлэх ӨмнөхState = currentState ; } kick.update (); // Kick drum нь (kick.edge ()) if (kick.falling ()) midiOut (KICK); }
Алхам 5: В програмчлал: Python ба хэрэглэгчийн интерфэйс
Python хэрэглэгчийн интерфэйс нь анх харахад ойлгоход жаахан төвөгтэй байдаг тул бид түүний үндсэн ойлголт, хэрхэн ашиглах, товчлуур бүр ямар үүрэгтэй, Arduino төхөөрөмжийг хэрхэн зөв програмчлах талаар тайлбарлахыг хичээх болно.
Хэрэглэгчийн интерфэйс - Програм
UI бол манай бөмбөрийн иж бүрдэл програмистын график дүрслэл бөгөөд Arduino төхөөрөмжийг хүссэн үедээ програмчлахад үнэхээр хялбар бөгөөд тохиромжтой болгодог. UI нь санал болгож буй үйл ажиллагаатай холбоотой хэд хэдэн график модулиудаас бүрдэнэ. тэдгээрийг нэг нэгээр нь авч үзье:
- Drum Set Image: Python UI нь X-Y дүрсний координатыг ашиглан аль бөмбөрийн төрлийг сонгосон болохыг тодорхойлдог. Хэрэв хүчин төгөлдөр бөмбөрийн бүсийг сонгосон бол хоёрдогч IO мессеж гарч ирэх бөгөөд тэмдэглэгдсэн талбарууд, хурд, зориулалтын бөмбөрийн дэвсгэрийн Arduino терминал гарч ирнэ. Эдгээр параметрүүдийг хэрэглэгч шалгаж баталгаажуулсны дараа эдгээр утгыг Arduino төхөөрөмж рүү шууд дамжуулж болно.
- Гадаад хянагчийн зураг: MIDI бөмбөрийн хэрэгслийг VST/Хөгжим үүсгэх орчинтой ашиглахын тулд Serial-to-MIDI орчуулагчийг ажиллуулах шаардлагатай байна. Би үнэ төлбөргүй байдаг, манай UI -ээс шууд ажиллуулах боломжтой, үсийг нь дүрсийг нь дарахад л ашиглаж болно.
- COM портын жагсаалт: Arduino -той холбогдохын тулд түүний хавсаргасан COM портыг зааж өгөх шаардлагатай. Шинэчлэх товчийг дарж жагсаалтыг шинэчилж байна.
- Тохиргоог ачаалах/хадгалах: Кодонд тодорхойлсон MIDI утгууд байдаг бөгөөд үүнийг хэрэглэгч интерфэйстэй харилцах замаар өөрчлөх боломжтой. Тохиргоог config.txt файлд тодорхой форматаар тодорхойлсон бөгөөд үүнийг хэрэглэгч хадгалах эсвэл ачаалах боломжтой.
- Програмын төхөөрөмжийн товчлуур: Бүх өөрчлөгдсөн MIDI утгыг Arduino EEPROM-д хадгалахын тулд хоёр хөл дөрөө (Kick drum ба Hi-hat дөрөө) дарж өгөгдөл дамжуулахыг хүлээх хэрэгтэй. Хэрэв харилцааны асуудал гарсан бол зохих попап гарч ирнэ. Хэрэв дамжуулалт амжилттай бол UI амжилттай зурвасаа харуулна.
- Гарах товч: Хэрэглэгчийн зөвшөөрлөөр програмаас гарна уу.
Python кодын онцлох үйл явдал
Код дээр маш олон зүйл болж байгаа тул бид кодыг бүхэлд нь биш харин бичсэн функцуудыг өргөжүүлэх болно.
Юуны өмнө, UI ашиглахын тулд кодыг ажиллуулахын тулд хэд хэдэн модулийг татаж авах шаардлагатай байна.
osimport threading импортлох tkinter -ийг tkinter -ээс tkter -ээс импортлох мессежийн хайрцаг * PIL импортоос импортлох ImageTk, np импортын цуваа импортын бөмбөрцөг хэлбэрээр Image import numpy
Зарим модулийг анхдагч Python багцад оруулсан болно. PIP хэрэгслээр хэд хэдэн модулийг суулгах ёстой.
дэрийг pip суулгах
pip install numpy pip суулгах ScreenInfo
PyCharm -ээр дамжуулан програм ажиллуулахыг зөвлөж байна. Ирээдүйн хувилбаруудад би төслийн гүйцэтгэгдэх файлыг экспортлохоор төлөвлөж байна.
Кодын товч тайлбар
Хэрэв бид түүний мөрүүдийг функц, анги талаас нь харах юм бол кодыг ойлгоход илүү хялбар байх болно.
1. Үндсэн функц - энд код эхэлнэ
хэрэв _ name_ == '_main_': drumkit_gui ()
2. Drum Kit -ийн тогтмолууд, координатууд болон анхдагч MIDI мэдээлэл
ангийн бөмбөр: DRUM_TYPES = ["Kick", "Hihat", "Snare", "Crash 1", "Crash 2", "Tom High", "Tom Mid", "Tom Low", "Ride", "Hihat Pedal" "," Хянагч "]
COORDINATES_X = [323, 117, 205, 173, 565, 271, 386, 488, 487, 135, 79]
COORDINATES_Y = [268, 115, 192, 40, 29, 107, 104, 190, 71, 408, 208] DIMS_WIDTH = [60, 145, 130, 120, 120, 70, 70, 130, 120, 70, 145] DIMS_LENGTH = [60, 60, 80, 35, 35, 40, 40, 70, 35, 100, 50]
DRUM_ENUM = ["өшиглөх", "урхи", "хихат", "морь унах", "ослын 1", "ослын 2", "том өндөр", "том дунд", "том бага", "хихат дөрөө"]
DRUM_NOTES = [36, 40, 42, 51, 49, 55, 47, 45, 43, 48] DRUM_VELOCITIES = [110, 100, 100, 110, 110, 110, 110, 110, 110, 110] DRUM_PINS = [8, 6, 4, 3, 11, 9, 5, 10, 2, 7]
3. UI функцууд - Хэрэглэгчийн интерфэйс болон график объектуудтай харьцах
def set_active (ui)
хоёрдогч_үй (бөмбөрийн төрөл)
анги SelectionUi (tk. Frame)
ангийн програм (tk. Frame)
def drumkit_gui ()
def event_ui_clicked (үйл явдал)
def getorigin (өөрөө, үйл явдал)
4. Цуваа холбоо
def get_serial_ports ()
def communication_with_arduino (порт)
5. Файлтай ажиллах: txt файлаас тохиргоог хадгалах/ачаалах
def save_config ()
def load_config ()
6. Python Threading боломжийг ашиглан кодоос гадаад үсгүй.exe програмыг ажиллуулах
анги ExternalExecutableThread (threading. Thread)
def run_hairless_executable ()
Кодыг ажиллуулахын тулд төслийн хавтсанд хавсаргасан файлуудын жагсаалт байдаг.
- config.txt: Тохиргооны файл
- hairless.exe: Үсгүй MIDI хөрвүүлэгч
- drumkit.png: Манай хэрэглэгчийн интерфэйс дээр дарж болох бүх бөмбөрийн дэвсгэрийг тодорхойлдог зураг (Энэ алхамын зургийн багцаас татаж авах шаардлагатай)
- drumgui.py: Төслийн код
Үүнийг ажиллуулахын тулд бид үүнийг онцлох хэрэгтэй. Төсөлд файл нэмэх нь маш чухал юм: бөмбөрийн дүрс, hairless.exe, файлын тохиргоо config.txt.
Тэгээд.. Энд бид хийсэн!:)
Энэ зааварчилгаа танд хэрэгтэй болно гэж найдаж байна.
Уншсанд баярлалаа!:)
Зөвлөмж болгож буй:
Raspberry Pi болон MySQL мэдээллийн санг ашиглан хурууны хээ болон RFID дээр суурилсан ирцийн систем: 5 алхам
Raspberry Pi болон MySQL мэдээллийн санг ашиглан хурууны хээ, RFID дээр суурилсан ирцийн систем: Энэ төслийн видео
STM32F407 Discovery Kit болон GSM A6 модулийг ашиглан үндсэн гар утас: 14 алхам (зурагтай)
STM32F407 Discovery Kit болон GSM A6 модулийг ашиглан үндсэн гар утас: Та хэзээ нэгэн цагт гайхалтай гоёмсог төсөл бүтээхийг хүсч байсан уу? Хэрэв тийм бол хамгийн алдартай, хүн бүрийн дуртай хэрэгсэл болох Гар утас бүтээх талаар юу хэлэх вэ? !!! Энэхүү гарын авлагад би STM ашиглан үндсэн гар утас хэрхэн бүтээх талаар заавар өгөх болно
Зэгсэн унтраалга, танхимын эффект мэдрэгч болон Nodemcu дээрх зарим хаягдлыг ашиглан өөрийн анемометрийг хэрхэн бүтээх вэ - 2 -р хэсэг - Програм хангамж: 5 алхам (зурагтай)
Зэгс унтраалга, танхимын эффект мэдрэгч болон Nodemcu дээрх зарим хаягдлыг ашиглан өөрийн анемометрийг хэрхэн яаж бүтээх вэ - 2 -р хэсэг - Програм хангамж: Танилцуулга Энэ бол анхны бичлэгийн үргэлжлэл юм. Nodemcu дээр - 1 -р хэсэг - Техник хангамж " - Би салхины хурд, чиглэлийг хэмжих ажлыг хэрхэн яаж хийхийг харууллаа
Нодемку дээрх зэгс унтраалга, танхимын эффект мэдрэгч болон зарим хаягдлыг ашиглан өөрийн анемометрийг хэрхэн бүтээх вэ. - 1 -р хэсэг - Тоног төхөөрөмж: 8 алхам (зурагтай)
Нодемку дээрх зэгс унтраалга, танхимын эффект мэдрэгч болон зарим хаягдлыг ашиглан өөрийн анемометрийг хэрхэн бүтээх вэ. - 1 -р хэсэг - Тоног төхөөрөмж: Танилцуулга Би Arduino болон Maker Culture -ийн судалгаанаас эхэлснээсээ хойш лонхны таг, PVC ширхэг, ундааны лааз гэх мэт хог хаягдал, эд ангиудыг ашиглан ашигтай төхөөрөмж бүтээх дуртай болсон. ямар ч хэсэг эсвэл хань ижилтэй амьдрал
Python хэл дээрх бүтэцтэй гэрэл ба стерео хараанд суурилсан DIY 3D сканнер: 6 алхам (зурагтай)
Python хэл дээрх бүтэцтэй гэрэл ба стерео алсын хараанд суурилсан DIY 3D сканнер: Энэхүү 3D сканнерыг видео проектор, вэбкамер гэх мэт ердийн өртөг багатай ердийн хэрэгслүүдийг ашиглан хийсэн болно. Хөнгөн бүтэцтэй 3D сканнер бол гэрлийн загвар, камерын систем ашиглан объектын гурван хэмжээст хэлбэрийг хэмжих 3D сканнер төхөөрөмж юм