INHOUDSOPGAWE:

Arduino kitaarhouer vir sleutelhouers met jackherkenning en OLED: 7 stappe
Arduino kitaarhouer vir sleutelhouers met jackherkenning en OLED: 7 stappe

Video: Arduino kitaarhouer vir sleutelhouers met jackherkenning en OLED: 7 stappe

Video: Arduino kitaarhouer vir sleutelhouers met jackherkenning en OLED: 7 stappe
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Julie
Anonim
Image
Image
Arduino -sleutelhouer vir kitaar -jack met jackherkenning en OLED
Arduino -sleutelhouer vir kitaar -jack met jackherkenning en OLED

Inleiding:

Hierdie instruksies bevat 'n uiteensetting van die bou van my sleutelbordhouer vir die inprop van die Guitar Jack in Arduino

Dit is die eerste keer dat ek dit kan leer, so hou my in gedagte, want ek kan veranderings / opdaterings maak

Stap 1: Onderdele en gereedskap

Onderdele en gereedskap
Onderdele en gereedskap
Onderdele en gereedskap
Onderdele en gereedskap
Onderdele en gereedskap
Onderdele en gereedskap

Die meeste van die onderdele wat ek by Amazon.co.uk of eBay gekoop het, het ek alreeds rondgeskop - Hier is 'n lys van wat u benodig.

Amazon -skakels is almal aangeslote skakels; u kan elders goedkoper vind - ek gebruik Amazon Prime baie, so Amazon was my toevlugsoord.

Ek wou hierdie gebou redelik goedkoop en begrotingsvriendelik hou. U kan ook 'n groter TFT -skerm gebruik, sowel as 'n ander Arduino. Moenie 'n NANO gebruik nie, want dit sal vasval as gevolg van hoë geheueverbruik. Die kode gebruik ongeveer 72% van die geheue van die Pro Micro en is stabiel, maar na toetsing val 'n NANO neer en vries.

(Meer besonderhede in die Kode -stap.)

DELE

1x Arduino Pro Micro -

1x 0,96 OLED met geel en blou skerm -

4x WS2812 'Pixels' -

1x DS3231 RTC -

4x 1/4 Mono Jack (of soveel as wat u wil) - Amazon (goud) of Amazon (silwer) of eBay.co.uk

1x gemengde weerstandspak -

4x 1/4 kitaaraansluitings -

1x Verlengkabel vir mikro -USB -kabel -

4x M3 skroewe

GEREEDSKAP & MATERIAAL

- Soldeerbout (dit is die een wat ek gekoop het - 'n TS100 - aangesien dit kom met ekstra wenke

- Soldeer

- Warmlijmpistool (https://amzn.to/2UTd9PN)

- Draad (https://amzn.to/2VK2ILU)

- Draadknipers/-stroppers (https://amzn.to/2KzqUzp)

- 3D -drukker of 3D -drukdiens

OPSIONEEL - Hierdie items is opsioneel, afhangende van hoe u besluit om alles aan te sluit

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

- Skroefklemverbindings (2 -polig | 3 -polig | 4 -polig)

- PCB -kopstukke (https://amzn.to/2X7RjWf)

Stap 2: 3D -afdruk van die saak

3D -afdruk van die saak
3D -afdruk van die saak
3D -afdruk van die saak
3D -afdruk van die saak
3D -afdruk van die saak
3D -afdruk van die saak
3D -afdruk van die saak
3D -afdruk van die saak

Ek het myne op my Creality CR-10S gedruk met Black PLA+ (https://amzn.to/2X2SDtE)

Ek het op 0,2 laaghoogte gedruk, met 25% vulsel.

Stap 3: Alles saam + skematies

Alles saam + skematies
Alles saam + skematies
Alles saam + skematies
Alles saam + skematies
Alles saam + skematies
Alles saam + skematies
Alles saam + skematies
Alles saam + skematies

Hoe u kies om u Arduino aan te sluit, is heeltemal aan u - ek het persoonlik gekies om myself so te sê 'n 'skild' te maak. Om die skild te maak, het ek vroulike kopstukke aan die boord gesoldeer om by die Pro Micro te pas, en ek het 'n reling van +5v en GND aan die teenoorgestelde kante bygevoeg. Ek het jumperdraad gebruik om die +5v aan my nou 5v 'rail' te koppel, en het dieselfde gedoen vir die GND. Ek het toe my 4x 100k -weerstande bygevoeg, die een kant gekoppel aan +5v vir almal, en dan verbind die ander kant met onderskeidelik A0, A1, A2 en A3. Ek het toe skroefaansluitings by analoog penne A0, A1, A2 en A3 en ook penne 2 (SDA), 3 (SCL) & 4

Meet u bedrading en sny dit op die regte lengtes. Ek het eers met die WS2812 Pixel LED's begin - die EERSTE WS2812 LED skakel met +5v van die Arduino, GND van die Arduino en DIN word verbind met Pin 4. Hierna word die oorblywende 3 aan mekaar vasgeketting, wat al die 5v> 5v verbind, GND> GND -penne en DOUT van die een Pixel, maak verbinding met die DIN van die volgende. Sodra dit gesoldeer is, druk dit saggies in die vierkantige gate aan die bokant, en warm gom op hul plek en ook om die agterkant te beskerm teen toevallige verbindings of kortbroek.

Na die LED's het ek die Guitar Jack Sockets ingeskroef. Een pen van elkeen sluit aan by GND, en dan verbind die tweede pen van elkeen A0, A1, A2 en A3 dienooreenkomstig. Dit is Socket 1, na A0, Socket 2 na A1, Socket 3 tot A2 en Socket 4 tot A3.

Daarna het ek 4 drade aan die OLED -verbindings gesoldeer en die oortollige soldeer soveel as moontlik afgesny. U wil u drade aan die agterkant van die skerm heg, sodat u aan die voorkant van die skerm soldeer.

Gee aandag aan die penne! Sommige OLED's het GND aan die buitekant, dan VCC, sommige met VCC aan die buitekant, en dan GND

Sodra dit gesoldeer is en u die soldeeraansluiting soveel as moontlik afgesny of platgedruk het, druk die skerm liggies op die plek. Dit pas effens by die ontwerp, maar wees bewus daarvan dat verskillende afdruktoleransies dit kan beïnvloed, en daarom moet u miskien 'n bietjie na-verwerking doen om dit te pas. Plaas 'n bietjie warm gom oor elke vier hoeke om dit vas te hou.

Koppel alles aan by die skema en foto's, en sodra u gelukkig is, kan u die Pro Micro en RTC -klok ook warm plak, en dan die USB -uitbreiding aan die Pro Micro koppel.

Ek het 'n mikro -USB -uitbreiding gebruik sodat a) die USB gebruik kan word om krag te verskaf, maar meer nog, b) sodat dit moontlik was om die Pro Micro te herprogrammeer sonder om alles uitmekaar te trek

As jy gelukkig is, skroef jy die kas saam met die 4 skroewe

Stap 4: Die proppe

Die proppe!
Die proppe!
Die proppe!
Die proppe!
Die proppe!
Die proppe!

Die manier waarop dit werk, is dat 'n deel van die ontwerp vir alle doeleindes 'n 'ohmmeter' is. 'N Ohmmeter is 'n instrument om elektriese weerstand te meet. Die meeste multimeters het hierdie funksie waardeur u die skaal kies en dan 'n weerstand meet om die waarde daarvan te vind. Die werkende beginsel is dat u 'n KENNE weerstand verbind met die +ve, wat dan gekoppel word aan 'n ONBEKENDE weerstand, wat aansluit by -ve. Die verbinding tussen die 2 weerstande sluit aan op die Arduino analoogpen sodat dit die spanning kan lees en die weerstand kan bereken.

Dit werk soos 'n spanningsverdeler en bereken die weerstand van die onbekende weerstand.

As 'n spanningsverdelersnetwerk van weerstande R1 en R2, Vout = Vin * R2 / (R1 + R2) - Ons gebruik 100k vir ons bekende (R1) weerstand. Dit gee ons die "spanningsval"

Hieruit kan ons nou die weerstand van die onbekende (R2) weerstand uitwerk, R2 = Vout * R1 / (Vin - Vout) - waar R1 ons 100k (100, 000 ohm) weerstand is

Deur 'n ander weerstand te gebruik in elke aansluiting wat u wil gebruik, kan u die kode dienooreenkomstig aanpas, afhangende van die aansluiting wat gebruik word.

Ek gebruik 4 aansluitproppe. Ek het gekies om te gebruik:

Bekende weerstand (x4) - 100k

Jack Plug 1 - 5.6k

Jack Plug 2 - 10k

Jack Plug 3 - 22k

Jack Plug 4 - 39k

U kan dit natuurlik uitbrei en soveel inskryf as wat u wil.

Stap 5: Die kode

Die kode
Die kode

Eerstens benodig u die Arduino IDE, hier beskikbaar:

U moet ook seker maak dat u ook 'n paar Arduino -biblioteke het:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (opsioneel):

'N Opmerking oor die keuse van die regte "Arduino" -bord. Oorspronklik het ek hierdie projek begin met 'n Arduino Nano, want dit is baie goedkoop teen ongeveer £ 3-£ 4 in die Verenigde Koninkryk, of so laag as £ 1,50 as u by AliExpress koop (maar let op die 30-50 dae wag)). Die probleem met die Nano is dat die SRAM 2 KB (2048 grepe) is. Hierdie skets gebruik 1728 grepe dinamiese geheue met globale veranderlikes. Dit is 84% van die SRAM, wat slegs 320 grepe gratis oorlaat vir plaaslike veranderlikes. Dit was onvoldoende en sou veroorsaak dat die Nano toesluit en vries.

Die Pro Micro (Leonardo) het 2.5K SRAM (2560 grepe), wat beteken dat daar 694 grepe gratis is vir plaaslike veranderlikes (die skets gebruik 72% van die Pro Micro se SRAM). Tot dusver was dit heeltemal voldoende en stabiel vir my gebruik. As u van plan is om baie aansluitproppe te gebruik, kan u dit oorweeg om iets met meer SRAM te gebruik.

Wat Flash -berging betref, gebruik hierdie skets 88% (25252 grepe) van 30k (die ATMega328p [Nano] en ATMega32u4 [Pro Micro] het albei 32k, maar 2k is gereserveer vir die selflaaiprogram)

Ek het oor die jare al honderde Arduino -sketse geskryf, maar ek is 'n stokperdjie. Hou dus in gedagte dat sommige dele van die kode ondoeltreffend is, of dat daar 'beter' maniere is om dit te doen '. Dit gesê, dit werk perfek vir my en ek is tevrede daarmee. Ek het biblioteke gebruik wat op die meeste borde MOET werk, of dit nou AVR (mees basiese Arduino's) of SAMD21 is (ek het 'n handjievol Cortex M0 -toestelle)

Ek wou 'n ander grafika vertoon, gebaseer op die domkrag wat ook gebruik is. As u u eie wil maak, is dit 'n briljante eenvoudige gids oor hoe u die C -skikking kan skep vir beelde wat met hierdie skerm gebruik kan word:

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

Maak seker dat u PROGMEM vir u grafika gebruik. Bv:

statiese konst ongetekende teken YOUR_IMAGE_NAME PROGMEM = {}

Deur ontwerp, sal die skerm na 5 sekondes "time -out" word en sal die tyd weer verskyn.

Die meeste instellings kan gevind word in Settings.h, spesifiek, die naam van die gepaardgaande aansluitproppe word hier gekodeer:

#definieer PLUG1 "SLEUTELS"

#define PLUG2 "P2" #define PLUG3 "P3" #define PLUG4 "P4" #define GENERIC "NA"

Daar is ook 'n paar belangrike dele van die kode in Variables.h

dryf R1 = 96700.0;

dryf R2 = 96300.0; dryf R3 = 96500.0; vlot R4 = 96300,0;

Dit is die BEKENDE weerstandswaardes, in ohm, van elk van die 4 weerstande.

R1 gekoppel aan A0, R2 na A1, R3 na A2 en R4 na A3.

Dit is raadsaam om u 100k -weerstande met 'n multimeter te meet en die presiese waarde van die weerstand te gebruik. Meet die weerstand sodra alles verbind is. (Maar nie aangeskakel nie).

As u weerstande vir u aansluitproppe kies, moet u seker maak dat daar 'n goeie ohm -gaping tussen hulle is, en as u dit kodeer, gee u 'n goeie reeks laer en hoër as die gekose weerstand. Hier is wat ek in my kode gebruik het:

vlot P1_MIN = 4000.0, P1_MAX = 7000.0; // 5.6K

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

Die rede hiervoor is om rekening te hou met die analooglesing en die geringe spanningsfluktuasies, ens

Wat gebeur, is dat as die weerstand wat opgespoor word tussen 4000 ohm en 7000 ohm is, ons veronderstel het dat u 'n 5.6k -weerstand gebruik het, en die kode sal dit dus as aansluitprop sien 1. As die gemete weerstand tussen 8000 ohm en 12000 ohm, die aanname is dat dit 'n 10k -weerstand is en Jack Plug 2 is, ensovoorts.

As u 'n bietjie ontfouting moet doen (moenie in die produksie 'n kommentaar lewer nie, aangesien die seriële ontfouting die kosbare ram opneem), moet u die lyne wat u benodig bo -aan Instellings los.

//#definieer SERIAL_DEBUG

//#definieer WAIT_FOR_SERIAL

Om die kommentaar te verwyder, verwyder eenvoudig die // …. Voeg die // weer aan die voorkant van die reël by om die reël terug te gee.

SERIAL_DEBUG maak die seriële ontfouting moontlik en die gebruik van dinge soos (byvoorbeeld)

Serial.println (F ("hallo wêreld"));

WAIT_FOR_SERIAL is 'n ekstra stap, dit beteken dat die kode nie sal voortgaan totdat u die Serial Monitor oopmaak nie. Dit verseker dat u geen belangrike reeksboodskappe misloop nie. - MOET DIT NOOIT NOOIT VERLAAT NIE

As u WAIT_FOR_SERIAL geaktiveer laat, kan u die sleutelhouer nie in 'n 'werklike' omgewing gebruik nie, aangesien dit vasgehou word en wag vir die Arduino IDE Serial monitor voordat dit in die hooflus van die skets kan voortgaan. As u u ontfouting voltooi het, moet u hierdie reël weer uitkom en u skets weer oplaai vir produksie/voltooiing.

As ek die SERIAL_DEBUG -opsie gebruik, bevat my kode die volgende:

#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 [")); Serial.print (i); Serial.print (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Serial.println (); as (INGesit [socket]) {Serial.print (F ("Plug in socket")); Serial.print (sok+1); Serial.print (F ("het 'n resitans van:")); Serial.println (weerstand); } #endif

Die laaste Serial.print -lyn sal u vertel wat die weerstand is, in ohm, van die laaste ingevoegde aansluiting. U kan hierdie skets dus ook as 'n ohmmeter gebruik om die weerstand van 'n aansluiting te kontroleer.

Stap 6: Notas

Ek dink ek het alles behandel, maar lewer asseblief kommentaar en ek sal my bes doen om te lees en te antwoord as ek kan:)

Ekskuus vir die ietwat swak video - ek het nie 'n driepoot, 'n herkodering of 'n behoorlike werkruimte nie, so dit is gefilm (sleg) met die telefoon in die een hand en probeer om dit met die ander te demonstreer.

Dankie vir die lees.

Aanbeveel: