Агуулгын хүснэгт:

Arduino гитар Жак таних & OLED бүхий 7 түлхүүр эзэмшигч: 7 алхам
Arduino гитар Жак таних & OLED бүхий 7 түлхүүр эзэмшигч: 7 алхам

Видео: Arduino гитар Жак таних & OLED бүхий 7 түлхүүр эзэмшигч: 7 алхам

Видео: Arduino гитар Жак таних & OLED бүхий 7 түлхүүр эзэмшигч: 7 алхам
Видео: Понравилась девушка 🥰 #shorts 2024, Долдугаар сарын
Anonim
Image
Image
Arduino гитар Жак таних & OLED бүхий Жак түлхүүр эзэмшигч
Arduino гитар Жак таних & OLED бүхий Жак түлхүүр эзэмшигч

Танилцуулга:

Энэхүү зааварчилгаа нь миний Arduino дээр суурилсан гитар Жак залгаасын түлхүүр эзэмшигчийн бүтцийг нарийвчлан тайлбарлах болно

Энэ бол миний анхны зааварчилгаа тул би замдаа өөрчлөлт / шинэчлэлт хийх тул намайг хүлээгээрэй

Алхам 1: эд анги, багаж хэрэгсэл

Эд анги, багаж хэрэгсэл
Эд анги, багаж хэрэгсэл
Эд анги, багаж хэрэгсэл
Эд анги, багаж хэрэгсэл
Эд анги, багаж хэрэгсэл
Эд анги, багаж хэрэгсэл

Amazon.co.uk эсвэл eBay -аас худалдаж авсан ихэнх эд ангиуд, заримыг нь би аль хэдийн өшиглөж байсан - Энд танд хэрэгтэй зүйлсийн жагсаалт байна.

Амазоны холбоосууд нь бүх түншлэлийн линкүүд бөгөөд та өөр газраас хямд үнээр хайж олох боломжтой байж магадгүй юм - Би Amazon Prime -ийг маш их ашигладаг тул Амазон миний хийх ёстой зүйл болсон.

Би энэ барилгыг нэлээд хямд, төсөвт ээлтэй байлгахыг хүсч байсан. Та хүсвэл илүү том TFT дэлгэц, өөр Arduino ашиглаж болно. Нано бүү ашигла, учир нь санах ой их ашиглагдсанаас болж сүйрэх болно. Энэхүү код нь Pro Micro -ийн RAM -ийн 72% -ийг ашигладаг бөгөөд тогтвортой боловч туршилтын явцад NANO нь эвдэрч, хөлдөх болно.

(Дэлгэрэнгүй мэдээллийг Кодын алхамаас үзнэ үү.)

ХЭСЭГ

1x Arduino Pro Micro -

Шар, цэнхэр дэлгэцтэй 1x 0.96 OLED -

4x WS2812 'Пикселүүд' -

1x DS3231 RTC -

4х 1/4 Моно Жак (эсвэл хүссэн хэмжээгээрээ) - Амазон (Алт) эсвэл Амазон (Мөнгө) эсвэл eBay.co.uk

1х холимог резисторын багц -

4х 1/4 Гитарын үүр -

1х микро USB кабелийн өргөтгөлийн кабель -

4х M3 эрэг

ХЭРЭГСЭЛ, МАТЕРИАЛ

- Гагнуурын төмөр (Энэ бол миний худалдаж авсан зүйл юм - TS100 - нэмэлт зөвлөмжийн дагуу

- Гагнуур

- Халуун цавуу буу (https://amzn.to/2UTd9PN)

- Утас (https://amzn.to/2VK2ILU)

- Утас таслагч/хуулагч (https://amzn.to/2KzqUzp)

- 3D принтер эсвэл 3D хэвлэх үйлчилгээ

СОНГОЛТТОЙ - Эдгээр бүх зүйлийг хэрхэн холбохоо сонгохоос шалтгаалан эдгээр зүйлс заавал байх албагүй

- Veroboard/Stripboard (https://amzn.to/2KzMFPE)

- Шураг терминал холбогч (2 туйл | 3 туйл | 4 туйл)

- ПХБ -ийн толгой (https://amzn.to/2X7RjWf)

Алхам 2: Хэргийг 3D хэвлэх

Кейсийг 3D хэвлэх
Кейсийг 3D хэвлэх
Кейсийг 3D хэвлэх
Кейсийг 3D хэвлэх
Кейсийг 3D хэвлэх
Кейсийг 3D хэвлэх
Кейсийг 3D хэвлэх
Кейсийг 3D хэвлэх

Би өөрийн Creality CR-10S дээр Black PLA+ ашиглан хэвлэсэн (https://amzn.to/2X2SDtE)

Би 0.2 давхаргын өндөрт, 25% дүүргэсэн байдлаар хэвлэв.

Алхам 3: Бүгдийг нэгтгэх + Схем

Бүгдийг нэгтгэх + Схем
Бүгдийг нэгтгэх + Схем
Бүгдийг нэгтгэх + Схем
Бүгдийг нэгтгэх + Схем
Бүгдийг нэгтгэх + Схем
Бүгдийг нэгтгэх + Схем
Бүгдийг нэгтгэх + Схем
Бүгдийг нэгтгэх + Схем

Arduino -г хэрхэн яаж холбох вэ гэдэг нь танд хамаарна - би хувьдаа өөрийгөө "бамбай" болгохоор шийдсэн. Бамбай хийхийн тулд би эмэгтэй толгойнуудыг Pro Micro -тэй тааруулахын тулд veroboard дээр гагнав. Би +5v -ийг одоогийн 5v 'төмөр замдаа холбохын тулд холбогч утсыг ашигласан бөгөөд GND -ийн хувьд үүнийг хийсэн. Дараа нь би 4x 100k резисторуудаа нэмж, нэг үзүүрийг бүгдийг нь +5v -т холбож, нөгөө тал нь A0, A1, A2 & A3 -т тус тус холбоно. Дараа нь би A0, A1, A2 & A3 аналог тээглүүрт шураг терминалууд, мөн 2 (SDA), 3 (SCL) & 4 зүү дээр нэмсэн.

Цахилгааны утсыг хэмжиж, зохих уртаар нь хайчилж ав. Би эхлээд WS2812 пикселийн LED -ийг эхлүүлсэн - АНХДУГААР WS2812 LED нь Arduino -аас +5v, Arduino -аас GND, DIN нь Pin 4 -тэй холбогддог. Үүний дараа үлдсэн 3 -ийг бүх 5v> 5v гинжээр холбож, гинжлэнэ. GND> GND зүү ба DOUT нь нэг пикселээс дараагийн DIN -тэй холбогддог. Гагнах үед дээд талын дөрвөлжин нүх рүү зөөлөн дарж, халуун цавуу байрлуулж, санамсаргүй холболт, богино өмдний ар талыг хамгаална.

LED -ийн дараа би гитарын Жак залгуурыг шургуулав. Тус бүрийн нэг зүү нь GND, дараа нь тус бүрийн 2 -р зүү A0, A1, A2 & A3 -тай холбогддог. Энэ бол Socket 1, A0 хүртэл, Socket 2 to A1, Socket 3 to A2, Socket 4 to A3.

Дараа нь би 4 утсыг OLED холболтоор гагнаж, илүүдэл гагнуурыг аль болох хайчилж авав. Та утсаа дэлгэцийн ар талаас холбохыг хүсч байгаа тул дэлгэцийн урд талд гагнах болно.

Зүүг анхаарч үзээрэй! Зарим OLED -ийн гадна талд GND, дараа нь VCC, заримд гаднаа VCC, дараа нь GND байдаг

Гагнаж, гагнуурын холболтыг аль болох багасгаж, хавтгайруулсны дараа дэлгэцийг байршил руу нь зөөлөн дарна уу. Энэ нь дизайны хувьд бага зэрэг тохирсон боловч хэвлэх өөр өөр хүлцэл нь үүнд нөлөөлж болзошгүй тул үүнийг тохируулахын тулд бага зэрэг боловсруулалт хийх шаардлагатай болж магадгүй юм. Нэгэнт байрлуулсны дараа 4 өнцөг булан бүрт халуун цавуу түрхээд байрлуулна.

Схем ба зурагтай нийцүүлэхийн тулд бүх зүйлийг холбож, аз жаргалтай болсны дараа та Pro Micro болон RTC цагийг халуун цавуугаар байрлуулж, USB өргөтгөлийг Pro Micro руу холбож болно.

Би микро USB өргөтгөл ашигласан бөгөөд ингэснээр a) USB -ийг тэжээлээр хангах боломжтой, гэхдээ үүнээс гадна b) шаардлагатай бол бүх зүйлийг салгахгүйгээр Pro Micro -ийг дахин програмчлах боломжтой болсон.

Аз жаргалтай болсны дараа хайрцгийг 4 боолтоор шургуул

Алхам 4: Залгуурууд

Залгуурууд!
Залгуурууд!
Залгуурууд!
Залгуурууд!
Залгуурууд!
Залгуурууд!

Энэ арга нь дизайны нэг хэсэг нь "омметр" хэлбэрээр ажилладаг. Омметр бол цахилгаан эсэргүүцлийг хэмжих хэрэгсэл юм. Ихэнх мультиметрүүд ийм функцтэй тул та масштабыг сонгож, эсэргүүцлийг хэмжиж утгыг нь олох боломжтой болно. Ажлын гол үүрэг бол та +мэддэг сүлжээнд танигдсан резисторыг холбож, дараа нь үл мэдэгдэх эсэргүүцэлтэй холбож, -ve -тэй холбоно. 2 резисторын холболт нь Arduino аналог зүүтэй холбогддог бөгөөд ингэснээр хүчдэлийг уншиж, эсэргүүцлийг тооцоолж чаддаг.

Энэ нь хүчдэл хуваагч шиг ажилладаг бөгөөд үл мэдэгдэх эсэргүүцэгчийн эсэргүүцлийг тооцдог.

R1 ба R2 резисторуудын хүчдэл хуваагч сүлжээний хувьд

Vout = Vin * R2 / (R1 + R2) - Бидэнд мэдэгдэж байгаа (R1) эсэргүүцлийн хувьд 100k ашиглаж байна. Энэ нь бидэнд "хүчдэлийн уналт" өгдөг.

Эндээс бид одоо үл мэдэгдэх (R2) эсэргүүцлийн эсэргүүцлийг боловсруулж болно.

R2 = Vout * R1 / (Vin - Vout) - энд R1 бол бидний 100k (100, 000 ом) эсэргүүцэл

Ашиглахыг хүссэн залгуур тус бүрт өөр өөр резистор ашигласнаар ашиглагдаж буй үүрнээс хамаарч кодыг тохируулж болно.

Би 4 залгуур ашиглаж байна. Би ашиглахаар шийдсэн:

Мэдэгдэж буй эсэргүүцэл (x4) - 100k

Жак залгуур 1 - 5.6к

Жак залгуур 2 - 10к

Жак залгуур 3 - 22к

Жак залгуур 4 - 39к

Мэдээжийн хэрэг та үүнийг өргөжүүлж, хүссэн хэмжээгээрээ код оруулах боломжтой.

Алхам 5: Код

Код
Код

Нэгдүгээрт, танд эндээс авах боломжтой Arduino IDE хэрэгтэй болно:

Та бас хэд хэдэн Arduino номын сантай байх ёстой.

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (заавал биш):

"Arduino" самбарыг зөв сонгох тухай тэмдэглэл. Эхэндээ би энэ төслийг Arduino Nano-оор эхлүүлсэн, учир нь тэд Их Британид ойролцоогоор 3-4 фунт стерлинг, эсвэл AliExpress-аас худалдаж авбал 1.50 фунт стерлингээр худалдаж авдаг (гэхдээ 30-50 хоног хүлээхийг бүү мартаарай.). Наногийн асуудал бол SRAM нь 2 KB (2048 байт) юм. Энэхүү ноорог нь дэлхийн хувьсагчтай 1728 байт динамик санах ойг ашигладаг. Энэ нь SRAM -ийн 84% бөгөөд орон нутгийн хувьсагчдад ердөө 320 байт үнэгүй үлдээдэг. Энэ нь хангалтгүй байсан бөгөөд нано түгжигдэх, хөлдөхөд хүргэнэ.

Pro Micro (Леонардо) нь 2.5K SRAM (2560 байт) -тай бөгөөд энэ нь орон нутгийн хувьсагчдад 694 байт үнэгүй гэсэн үг юм (Ноорог нь Pro Micro -ийн SRAM -ийн 72% -ийг ашигладаг). Өнөөг хүртэл энэ нь миний хэрэглээнд бүрэн нийцэж, тогтвортой болсон. Хэрэв та олон залгуур ашиглах гэж байгаа бол илүү SRAM -тэй ямар нэгэн зүйл ашиглах талаар бодож үзэхийг хүсч магадгүй юм.

Flash хадгалалтын хувьд энэ ноорог нь 30к -ийн 88% (25252 байт) ашигладаг (ATMega328p [Nano] ба ATMega32u4 [Pro Micro] хоёулаа 32k -тэй, гэхдээ 2k нь ачаалагчдад зориулагдсан)

Олон жилийн турш би хэдэн зуун Arduino тойм бичсэн боловч би хобби сонирхдог тул кодын зарим хэсэг нь үр ашиггүй эсвэл "үүнийг хийх илүү сайн арга" хувилбар байж магадгүй гэдгийг санаарай. Энэ нь миний хувьд төгс төгөлдөр ажиллаж байгаа бөгөөд би үүнд сэтгэл хангалуун байна. Би AVR (Arduino -ийн хамгийн энгийн) эсвэл SAMD21 (надад Cortex M0 цөөн хэдэн төхөөрөмж байдаг) хамаагүй ихэнх самбар дээр ажиллах ёстой номын санг ашигладаг байсан.

Би ашигласан үүрэнд тулгуурлан өөр график үзүүлэхийг хүссэн. Хэрэв та өөрийн гараар хийхийг хүсч байвал энэ дэлгэц дээр ашиглах C массивыг хэрхэн яаж бүтээх талаар гайхалтай энгийн гарын авлага болно.

sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/

График дээрээ PROGMEM -ийг ашиглахаа мартуузай. Жишээлбэл:

статик const гарын үсэг зураагүй тэмдэг YOUR_IMAGE_NAME PROGMEM = {}

Загварын дагуу дэлгэц нь 5 секундын дараа "завсарлага" авч, цагийг харуулахаар буцаана.

Ихэнх тохиргоог Settings.h дээрээс олж болно, тухайлбал холбогдох залгууруудын нэрийг энд кодчилсон болно.

#тодорхойлох PLUG1 "ТҮЛХҮҮР"

#PLUG2 "P2" -ийг тодорхойлох "PLUG3" P3 "-ийг тодорхойлох" PLUG4 "P4" -ийг тодорхойлох #GENERIC "NA" -ийг тодорхойлох

Variables.h дотор кодын зарим чухал хэсгүүд байдаг

хөвөх R1 = 96700.0;

хөвөх R2 = 96300.0; хөвөх R3 = 96500.0; хөвөх R4 = 96300.0;

Эдгээр нь 4 резистор тус бүрийн омын хувьд мэдэгдэж буй эсэргүүцлийн утгууд юм.

R1 нь A0, R2 - A1, R3 - A2, R4 - A3 руу холбогдсон.

Мультиметр ашиглан 100к резистороо хэмжиж, резисторын яг утгыг ашиглахыг зөвлөж байна. Бүх зүйл холбогдсоны дараа резисторын хэмжилтийг хийнэ үү. (Гэхдээ асахгүй байна).

Залгуурын залгуурт резистор сонгохдоо тэдгээрийн хооронд сайн омын зай байгаа эсэхийг шалгаарай, мөн тэдгээрийг кодлохдоо сонгосон резистороосоо доогуур, өндөр байх ёстой. Миний кодонд би үүнийг ашиглаж байна:

хөвөх P1_MIN = 4000.0, P1_MAX = 7000.0; // 5.6K

хөвөх P2_MIN = 8000.0, P2_MAX = 12000.0; // 10K хөвөгч P3_MIN = 20000.0, P3_MAX = 24000.0; // 22K float P4_MIN = 36000.0, P4_MAX = 42000.0; // 39K

Үүний шалтгаан нь аналог унших, бага хүчдэлийн хэлбэлзэл гэх мэтийг тооцох явдал юм

Хэрэв илрүүлсэн эсэргүүцэл нь 4000 Ом -аас 7000 Ом хооронд байвал бид 5.6 к резистор ашигласан гэж таамаглаж байгаа тул код нь үүнийг Jack Plug 1 гэж үзнэ. Хэрэв хэмжсэн эсэргүүцэл нь 8000 Ом ба 12000 ом, таамаглал нь энэ нь 10к эсэргүүцэл бөгөөд Jack Plug 2 гэх мэт.

Хэрэв та ямар нэгэн дибаг хийх шаардлагатай бол (Цуваа дибаг хийх нь үнэт хуцыг ашигладаг тул 'үйлдвэрлэлд' тайлбарлахгүй орхиж болохгүй) Тохиргооны дээд хэсэгт шаардлагатай мөрүүдийг тайлна уу.

//#SERIAL_DEBUG тодорхойлох

//#ХҮЛЭЭХ_ГҮЙЦЭТГЭХИЙГ ХҮЛЭЭХ

Сэтгэгдэл бичихийн тулд //… хаягийг арилгахад л хангалттай. мөрийг буцааж тайлбарлахын тулд // мөрийн урд талд дахин нэмнэ үү.

SERIAL_DEBUG нь цуврал дибаг хийх, (жишээ нь) гэх мэт зүйлсийг ашиглах боломжийг олгодог.

Serial.println (F ("сайн уу ертөнц"));

WAIT_FOR_SERIAL бол нэмэлт алхам бөгөөд та цуваа дэлгэцийг нээх хүртэл код үргэлжлэхгүй гэсэн үг юм. Энэ нь чухал сериал мессежийг алдахгүй байхыг баталгаажуулдаг. - ЭНЭ ИДЭВХЖҮҮЛСЭНГЭЭ ХЭЗЭЭ ч орхиж болохгүй

Хэрэв та WAIT_FOR_SERIAL -ийг идэвхгүй орхивол ноорогны үндсэн гогцоонд үргэлжлүүлэхээс өмнө Arduino IDE Serial мониторыг хүлээж байгаад гацах тул түлхүүр эзэмшигчийг "бодит ертөнц" -ийн орчинд ашиглах боломжгүй болно. Дебаг хийж дууссаны дараа энэ мөрийг дахин тайлж, ноорогоо дахин байршуулж үйлдвэрлэл/дуусгахаа баталгаажуулаарай.

SERIAL_DEBUG сонголтыг ашиглах үед миний код дараахь зүйлийг агуулна.

#ifdef SERIAL_DEBUG

Serial.print (F ("ACTIVE JACK =")); Serial.println (ACTIVE_JACK); int len = sizeof (SOCKET_1234_HAS_PLUGTYPE_X)/sizeof (SOCKET_1234_HAS_PLUGTYPE_X [0]); for (int i = 0; i <len; i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")); Цуваа.хэвлэх (i); Serial.print (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Serial.println (); if (INSERTED [socket]) {Serial.print (F ("Залгаад залгах"))); Цуваа хэвлэх (сокет+1); Serial.print (F ("дараах эсэргүүцэлтэй байна:")); Serial.println (эсэргүүцэл); } #endif

Сүүлийн Serial.print мөр нь сүүлчийн оруулсан үүрний эсэргүүцэл нь ом -ээр илэрхийлэгдэх болно. Тиймээс та энэ ноорогыг янз бүрийн омметр болгон ашиглаж, залгуурын эсэргүүцлийг шалгах боломжтой.

Алхам 6: Тэмдэглэл

Би бүх зүйлийг хамруулсан гэж бодож байна, гэхдээ сэтгэгдэл бичээрэй, би чадах бүхнээ уншиж, хариулахын тулд чадах бүхнээ хийх болно:)

Бага зэрэг муу видео гаргасанд уучлалт гуйж байна - Надад tripod, кодчилох тохиргоо эсвэл тохирох ажлын зай байхгүй тул утсыг нэг гартаа атгаж, нөгөө гараараа демо хийхийг оролдож байгаа нь зураг авалттай байсан.

Уншсанд баярлалаа.

Зөвлөмж болгож буй: