Агуулгын хүснэгт:
- Алхам 1: Төлөвлөлт
- Алхам 2: Прототип + код
- Алхам 3: Бүрхүүл
- Алхам 4: Үр дүн ба боломжит сайжруулалтууд
Видео: Гар товчлол хянагч (Photoshop + Бусад) [Arduino]: 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Хамгийн сүүлд би Photoshop дээр ашиглах жижигхэн хяналтын самбар үүсгэсэн. Энэ нь гайхамшигтай ажилласан, би одоо ч ашиглаж байна! Гэхдээ энэ нь нэлээд хязгаарлагдмал бөгөөд ердөө таван товчлуур, ашигтай хэмжээ, тунгалаг бус залгууртай. Би гар руу маш их хүрч байгааг олж харсан хэвээр байна …
Тиймээс би хяналтын товчлуурын дараагийн давталт дээр ажиллаж эхлэв. Бүгдийг удирдах нэг хяналтын самбар.
Энэ бол хяналтын самбар биш юм. ГЭХДЭЭ нэг талаараа илүү дээр байж магадгүй.
Хэрэв та маш олон товчлолтой байж болох ч супер тохь тухтай, хөнгөн жинтэй бол тасалдалгүй зурахдаа гараараа чөлөөтэй барьж болно. … За, мэдээллийн сурталчилгаанд хангалттай.
Энэхүү хянагчийг зөвхөн 4 товчлуураар 32 хүртэлх товчлолоор зураглах боломжтой байдлаар програмчилсан болно! Нэмэлт 5-р товчлуур нь олон програмд хэрэгтэй тохируулагч товчлууруудыг ямар ч хослолоор ашиглах боломжийг надад олгодог (та Alt-RMB хослолыг PS дээр туршиж үзсэн үү? Хэрэв тийм биш бол үүнийг хийгээрэй. Энэ бол аврагч). Би системийг дараа нь тайлбарлах болно.
Энэ бүгдийг хийхийн тулд танд дараахь зүйлс хэрэгтэй болно.
- 1 Микроконтроллер (би Adafruit ItsyBitsy 32u4 ашигладаг байсан, гэхдээ atmega32u4 чиптэй л бол үүнийг хийх ёстой)
- 1 микро USB адаптер (өгөгдөл, зөвхөн тэжээлээр биш)
- 5 товчлуур (би зөөлөн товчлууруудыг ашигладаг байсан)
- 10к Ом эсэргүүцэл (нэг товчлуур тутамд 1 ширхэг)
- Утас, талхны хавтан, гагнуурын материал гэх мэт.
- Суултын яндан хийх зүйл (3D принтер гэх мэт)
Энэ бол дунд түвшний Arduino төсөл бөгөөд юу болж байгааг илүү сайн ойлгохын тулд би өмнөх хичээлээ үзэхийг санал болгож байна, учир нь ихэнх нь миний тайлбарласан зүйлийг давтах болно.
За, эхэлцгээе!
Алхам 1: Төлөвлөлт
Энэ бол миний хянагчийн зурсан үндсэн схем юм. Хэрэв та үүнийг миний өмнөх төсөлтэй харьцуулж үзвэл схем нь үнэхээр энгийн юм! Гэхдээ бид хэдхэн товчлуураар хослуулсан даралтын хүчээр илүү ихийг хийх боломжтой болно!
Хяналтын схемийн цаадах санаа бол товчлуур бүрийг чөлөөтэй, дарж, суллах эсвэл дарж, барьж болно. Хэвлэх, суллах нь товчлолыг идэвхжүүлдэг бөгөөд товчлуурыг дарахад бидэнд янз бүрийн товчлол руу нэвтрэх боломжийг олгодог. Хэрэв та зүгээр л А товчлуурыг дарвал А товчлолыг идэвхжүүлэх болно, гэхдээ хэрэв та А товчлуурыг дарахад B дарвал өөр товчлол гарч ирэх болно. Та дарж байхдаа 3 товчлуурыг нэгэн зэрэг дарах боломжтой тул та хэд хэдэн үндсэн комбинаторыг ашиглахдаа энэ системд хичнээн олон хослол хийх боломжтойг харах болно.
Нэмэлт тав дахь товчлуур нь миний бодож олсон гар утасны хэлбэрийг харгалзан үзэхэд байгалийн нэмэлт зүйл мэт санагдсан. Би үүнийг ашиглан Photoshop дахь өөрчлөх товчлууруудыг ашиглахаар шийдсэн. Ажиллах арга нь бусад товчлууруудаас арай өөр юм: эрхий хурууны товчлуурыг дарах бүрт зөвхөн өөрчлөх төхөөрөмжүүдийг ашиглах болно. Эдгээрийг барьж байх үед идэвхжүүлж, олон дарах боломжтой болно. Хэрэв A товчлуур нь Shift, B товчлуур нь Ctrl бол A ба B товчлуурыг дарахад Shift болон Ctrl хоёуланг нь дарахтай адил байх болно, гэхдээ зөвхөн эрхий хурууны товчлуурыг дарж байхад л болно!
Бүрхүүл нь эргономик ба хоёр талт байдлаар хийгдсэн. Жижиг хуруугаа ашиглах нь тийм ч их ядаргаатай биш бөгөөд надаас том гартай хүмүүст ч бас тохирохуйц байхын тулд би үүнийг маш сайн тохируулсан.
Алхам 2: Прототип + код
Талхны самбар дээрх товчлууруудыг туршиж үзэх нь сайн практик юм. Энэ нь маш энгийн, товчлуур ба резисторыг зураг дээрх шиг холбоно уу. Та үүнийг кодоор энд туршиж үзэх боломжтой (pastebin линкийн өөр хувилбар):
#оруулах
// MacOS -д vthisv сонголтыг ашиглана уу:
// char ctrlKey = KEY_LEFT_GUI;
// Windows болон Linux -д зориулсан vthisv сонголтыг ашиглана уу:
char ctrlKey = KEY_LEFT_CTRL; char shiftKey = KEY_LEFT_SHIFT; char altKey = KEY_LEFT_ALT;
// Функцийн түлхүүрүүд энд байна
char Fn1Key = KEY_F2; char Fn2Key = KEY_F3; char Fn3Key = KEY_F4; char Fn4Key = KEY_F5;
const int pins = {9, 10, 11, 12, 13}; // бүх товчлуурын голын массив
// Мэдрэмж
const int THRESH_0 = 10; const int THRESH_1 = 20; const int THRESH_2 = 25; const int THRESH_3 = 50; const int THRESH_4 = 100; const int THRESH_5 = 200;
const int BUTTON_NUM = 5;
// Хүрээг хөлдөөх
const int DELAY = 0;
enum мужууд {чөлөөлөгдсөн, дарагдсан, баригдсан, чөлөөлөгдсөн};
бүтэц товчлуур {
int pin; Муж улс; int timeHeld; }; // эрхий хуруу, индекс, дунд, бөгж, бага;
товчлуурын товчлуурууд [BUTTON_NUM] = {};
initButton товчлуур (int p) {
товчлуур b; pinMode (p, INPUT); b.pin = p; b.state = Улсууд:: чөлөөлөгдсөн; b.timeHeld = 0; буцах b; }
хүчингүй тохиргоо () {
// нэг удаа ажиллуулахын тулд тохиргооны кодоо энд оруулна уу: Serial.begin (9600); Keyboard.begin ();
while (! Цуваа) {};
// (int i = 0; i <(BUTTON_NUM); ++ i) {Serial.print ("товчлуурыг тохируулах") товчлуурууд; Цуваа.хэвлэх (i); Serial.print ("pin дээр:"); Serial.println (тээглүүр ); // товчлуурууд ii.pin = 1; товчлуурууд = initButton (голууд ); Serial.println ( товчлуурууд); }
}
bool readButton (int pin) {
// шалгах, унтраах товчлуурууд байвал (digitalRead (pin) == HIGH) {delay (10); if (digitalRead (pin) == HIGH) {буцах үнэн; }} худал буцаах; }
int pintobin (int pin) {
if (pin == pins [0]) 1 буцаана; if (pin == pins [1]) 10 буцаана; if (pin == pins [2]) 100 буцаана; if (pin == pins [3]) 1000 буцаана; if (pin == pins [4]) 10000 буцаана; } button buttonStateUpdate (button b) {
bool press = readButton (b.pin);
switch (b.state) {тохиолдол муж:: суллагдсан: b.timeHeld = 0; if (press) b.state = State:: дарагдсан; завсарлага; тохиолдолд дарагдсан: b.timeHeld+= 1; if (дарна уу) {if (b.timeHeld> (THRESH_1/(1+DELAY)))) {b.state = State:: hold; }} өөр {// if (b.timeHeld
int getButtonStateCode (товчлуур b)
{буцах b.state*pintobin (b.pin); }
int getCodeByButton (int код, int индекс) {
int r1, r2, r3, r4, r5; int opStep = BUTTON_NUM - (1+индекс);
// анхны ажиллагаа
if (opStep == 0) буцах код/10000; r1 = код%10000;
хэрэв (opStep == 1)
буцах r1/1000; r2 = r1%1000; хэрэв (opStep == 2) r2/100 буцаана; r3 = r2%100; хэрэв (opStep == 3) r3/10 буцаана; r4 = r3%10; хэрэв (opStep == 4) r4/1 буцаана; r5 = r4%1; }
void completePress (int pin) {
// Serial.print ("оролт"); // Serial.println (зүү); саатал (THRESH_3); Keyboard.releaseAll (); }
void doAction (int code) {
// Өөрчлөгч бол if (getCodeByButton (код, 0) == 2) {// Serial.println ("--- хувиргагчид ----"); if (getCodeByButton (код, 1)> 0) {Keyboard.press (altKey); // Serial.println ("------- alt ---------"); } else Keyboard.release (altKey); if (getCodeByButton (код, 2)> 0) {Keyboard.press (ctrlKey); // Serial.println ("-------- ctrl ----------"); } else Keyboard.release (ctrlKey); if (getCodeByButton (код, 3)> 0) {Keyboard.press (''); } else Keyboard.release (''); if (getCodeByButton (код, 4)> 0) {Keyboard.press (shiftKey); // Serial.println ("------ ээлжийн ------"); } else Keyboard.release (shiftKey); } өөр {
// даалгавар гүйцэтгэх
шилжүүлэгч (код) {тохиолдол 30: // --- | Brush Keyboard.press (shiftKey); Keyboard.print ('b'); дуусгах (код); завсарлага; тохиолдол 300: // --- | Eraser Keyboard.press (shiftKey); Keyboard.print ('e'); дуусгах (код); завсарлага; тохиолдол 3000: // --- | Шанага гар. Press (shiftKey); Keyboard.print ('g'); дуусгах (код); завсарлага; тохиолдол 30000: // --- | Lasso Keyboard.press (shiftKey); Keyboard.print ('l'); дуусгах (код); завсарлага; тохиолдол 320: //-| o Гарыг буцаах.press (ctrlKey); Keyboard.print ('z'); дуусгах (код); завсарлага; тохиолдол 3020: //-| -o Дахин хийх Keyboard.press (ctrlKey); Keyboard.print ('y'); дуусгах (код); завсарлага; кейс 30020: // | --o History Keyboard.press (shiftKey); Keyboard.print ('y'); дуусгах (код); завсарлага; тохиолдол 230: //-o | Keyboard.press хадгалах (ctrlKey); Keyboard.print ('s); дуусгах (код); завсарлага; кейс 3200: //- | o- Түргэн-p.webp
int buttonCode = 0;
for (int i = 0; i <BUTTON_NUM; ++ i) {товчлуур = buttonStateUpdate (товчлуурууд ); buttonCode+= getButtonStateCode (товчлуурууд ); }
if (buttonCode! = 0) {
Serial.print ("товчлуурын код:"); Serial.println (buttonCode); }
doAction (buttonCode);
// давтан ажиллуулахын тулд үндсэн кодоо энд оруулна уу: // for (int i = button [0]; i <sizeof (button)/sizeof (button [0])+button [0]; ++ i) {/ / // if (readButton (i)) {// doAction (i); //} //}
if (getCodeByButton (buttonCode, 0)! = 2)
Keyboard.releaseAll ();
саатал (хойшлуулах);
}
Логикийн талаар хэлэх зүйл алга байна, учир нь энэ нь миний сүүлийн хянагчийнхтай төстэй бөгөөд хоёр мэдэгдэхүйц ялгаатай байна.
- Товчлуурууд нь өөрсдийн улсын машинтай бүтэцтэй
- Мужуудыг нэгтгэн үйлдлийг тодорхойлдог код гаргадаг
Энэ зарчим нь бит шилжүүлэхтэй төстэй боловч товчлуурууд нь олон төлөвтэй бөгөөд хоёртын дүрсээр илэрхийлэгдэх боломжгүй тул оронд нь арван тоогоор үржүүлдэг. Дараа нь би товчлуурын бүх төлөвийг нэг тоогоор нэмж doAction () шилжүүлэгчийн мэдэгдлийг дамжуулж, бүх товчлолуудын кодыг оруулна.
Таны харж байгаагаар би боломжит бүх хослолыг зураглаагүй байна. Би хэдхэн дуртай товчлолуудаа л оруулсан бөгөөд үлдсэн хэсгийг нь таны хүссэнээр бөглөхийг би танд үлдээж байна;)
Алхам 3: Бүрхүүл
Би бүрхүүлд 3D принтер ашигласан. Таны харж байгаагаар дизайн нь зарим сул талуудтай тул MacGyver -ийг хаах арга байсан. Тиймээс би одоогоор загвар файлыг нийтлэхгүй байна.
Товчлуурууд нь "вандан сандал" дээр халуун наасан бөгөөд ингэснээр тагийг байрандаа байлгадаг. Зөөлөн товчлуурууд нь үүнийг сайн хийдэг тул хэрэв та минийхтэй төстэй хэрэг хийхээр төлөвлөж байгаа бол заримыг нь авахаа мартуузай.
Түүнчлэн, энэ нь маш хөнгөн тул хайрцган дотор жаахан жин нэмэхийг санал болгож байна. Нэмэлт грамм нь түүнийг барихад илүү байгалийн мэдрэмж төрүүлэх болно.
Зурагт үзүүлсэн шиг бүх зүйлийг гагнана уу, USB кабелийг холбоно уу, бүх зүйл байрандаа байх ёстой (цавуугаар)!
Алхам 4: Үр дүн ба боломжит сайжруулалтууд
Тэнд байна! Та бүх чухал товчлолуудаа ганц гараараа ашиглахын тулд ашиглаж болох гар хянагч!
Булчингийн санах ойг ашиглах шаардлагатай боловч энэ нь үнэхээр уян хатан юм!
Мэдээжийн хэрэг энэ нь төгс биш бөгөөд яг одоо би үүнийг сайжруулах зарим аргуудын талаар бодож байна. Суултын хайрцгийг сайжруулах, товчлол нэмэхээс гадна өөр өөр товчлол бүхий олон програмыг дэмжих нь сонирхолтой байх болно гэж бодож байна. Photoshop-ийн богино холболтын сангийн хооронд Майя-д зориулагдсан нэг захиалагч руу шилжихийн тулд 4 товчлуурыг нэгэн зэрэг дарах гэх мэт хяналтын схем хооронд шилжихийн тулд товчлуурын хослолтой болох талаар бодож байна.
Зүгээр л хэдэн санаа.
Уншсанд баярлалаа, дараагийн удаа хүртэл!
Зөвлөмж болгож буй:
Робот гар тоглоом - Ухаалаг гар утасны хянагч: 6 алхам
Робот гар тоглоом - Ухаалаг гар утас хянагч: Сайн байна уу! Зуны хөгжилтэй тоглоом: Ухаалаг гар утсаар удирддаг робот гар !! Та видеон дээр харж байгаа шиг гар утсан дээрээ зарим тоглоомын тусламжтайгаар гараа удирдаж болно. роботыг давталтаар хуулбарлахын тулд
Arduino дээр суурилсан DIY тоглоомын хянагч - Arduino PS2 тоглоомын хянагч - DIY Arduino Gamepad ашиглан Tekken тоглох: 7 алхам
Arduino дээр суурилсан DIY тоглоомын хянагч | Arduino PS2 тоглоомын хянагч | DIY Arduino Gamepad ашиглан Tekken тоглох: Сайн байна уу залуусаа, тоглоом тоглох нь үргэлж хөгжилтэй байдаг, гэхдээ өөрийн гараар хийсэн DIY тоглоомын хянагчтай тоглох нь илүү хөгжилтэй байдаг тул бид энэ зааварт arduino pro micro ашиглан тоглоом хянагч хийх болно
Цахилгаан гар урчуудын батерейны хөрөө болон бусад хэрэгслүүд: 4 алхам
Цахилгаан гар урчуудын батерейны хөрөө болон машинаас авсан бусад хэрэгслүүд: Би энэ хөрөөг хэдэн долоо хоногийн турш ширээн дээрээ байлгаж, юу хийхээ мэдэхгүй байна. Би хамтран ажиллагсдаасаа засвар хийх төслүүдийг авдаг бөгөөд эдгээр нь өртөгөөс болж хийгддэггүй байв. Батарей нь эвдэрсэн навч үлээгч/хогийн ургамлыг устгах комбинацыг хаяхад хямд байсан
MIDI 5V Spielatron эсвэл бусад MIDI Synth -ийн LED зурвасын гэрэл хянагч: 7 алхам (зурагтай)
MIDI 5V Spielatron эсвэл бусад MIDI Synth-ийн LED зурвасын гэрлийн хянагч: Энэхүү хянагч нь гурван өнгөт LED зурвасын гэрлийг 50mS-ээр анивчуулдаг. G5-аас D#6-ийн цэнхэр, E6-аас B6-ийн улаан, C7-аас G7-ийн хувьд ногоон. Хянагч нь ALSA MIDI төхөөрөмж тул MIDI програм хангамж нь MIDI синхрончлох төхөөрөмжтэй нэгэн зэрэг LED -д гаргах боломжтой
Гурав дахь гар ++: электроник болон бусад нарийн ажилд олон талт туслах гар: 14 алхам (зурагтай)
Гурав дахь гар ++: Цахилгаан болон бусад нарийн ажилд олон талт туслах гар: Өмнө нь би цахилгаан сүлжээ дэлгүүрт байдаг гуравдагч гар/туслах гарыг ашиглаж байсан бөгөөд ашиглахад нь сэтгэл дундуур байсан. Би хэзээ ч хүссэн клипээ авч чадаагүй, эсвэл тохиргоог хийхээс илүү их цаг зарцуулсан