Cyborg kompyuter sichqonchasi: 4 qadam (rasmlar bilan)
Cyborg kompyuter sichqonchasi: 4 qadam (rasmlar bilan)
Anonim
Cyborg kompyuter sichqonchasi
Cyborg kompyuter sichqonchasi

Ko'pgina tadqiqotlar shuni ko'rsatadiki, oddiy kompyuter sichqonchasini ishlatish xavfli bo'lishi mumkin. Sichqoncha kompyuter uskunasining standart qismidir. Kompyuter foydalanuvchilari sichqonchani klaviaturadan deyarli uch barobar ko'proq ishlatadilar. Ekspozitsiya tezligi yuqori bo'lgani uchun, kompyuter sichqonchasi yordamida yuqori ekstremitalarning holatini yaxshilash juda muhim.

Bu mavhum loyiha uchun biz tashqi texnologiyasiz odamlarga kompyuter ekrani orqali o'tishga imkon beradigan taqiladigan kiyim tayyorlaymiz. Shunday qilib, biz gorizontal yuzadagi qurilmani bosish o'rniga qo'llarni tabiiy harakatlardan foydalanishimiz mumkin edi. Bu, shuningdek, ekranlardan turib turib, og'zaki taqdimotlarni yanada yoqimli qilish imkonini beradi.

Prototipga kelsak, indikatorni joystik, chap bosish uchun o'rta barmog'i, o'ng bosish uchun halqa barmog'i va qurilmani yoqish va o'chirish uchun pushti rang ishlatiladi. Bosh barmog'i tugmalar bosiladigan sirt vazifasini bajaradi. Bularning barchasi qo'lqopga qo'shiladi.

Ta'minotlar

  • (x1) Arduino Leonardo
  • (x1) Protoboard
  • (x1) Joystick moduli
  • (x3) tugmachasi
  • (x20 ±) Tel o'tkazgichlar
  • (x3) 1KΩ rezistorlar
  • (x1) Qo'lqop tikish to'plami
  • Velcro issiq silikon
  • Tel -lehim to'plami
  • 3D bosilgan qism

1 -qadam: Uskuna o'rnatish

Uskunani sozlash
Uskunani sozlash

Dizaynni yaxshiroq tushunish uchun biz Fritzing eskizini qo'shdik. Avval komponentlarni protoboardga o'rnatishni tavsiya etamiz. Shunday qilib, lehimlashdan oldin hamma narsa ishlayotganini tekshirishingiz mumkin.

2 -qadam: Kodni yuklang va test qiling

Ulanishlar o'rnatilgandan so'ng, USB A (M) ni micro USB B (M) ga kompyuterdan Arduino Leonardoga ulang va eskizni yuklang. Eskizni nusxalash, o'zgartirish va takomillashtirishda o'zingizni erkin his eting.

Ogohlantirish: Mouse.move () buyrug'idan foydalanganda Arduino sichqonchani egallaydi! Buyruqni ishlatishdan oldin sizda nazorat borligiga ishonch hosil qiling. Bu faqat Arduino Leonardo, Micro yoki Due uchun ishlaydi

Mana bu loyiha uchun bizning kodimiz:

// Pinlarni belgilang#o'z ichiga oladi; const int mouseMiddleButton = 2; // sichqoncha uchun kirish pimi o'rta Button const int startEmulation = 3; // sichqoncha emulyatsiyasini yoqish va o'chirish uchun o'tish const int mouseLeftButton = 4; // sichqoncha uchun kirish pimi chap tugmasi const int mouseRightButton = 5; // sichqoncha uchun kirish pimi o'ng Button const int joystickX = A1; // joystik X o'qi const int joystikY = A0; // joystik Y o'qi

// joystikni o'qish parametrlari:

int cursorSpeed = 10; // X yoki Y harakatining chiqish tezligi int javobDelay = 5; // sichqonchaning javob kechikishi, ms da int threshold = cursorSpeed / 4; // dam olish chegarasi int center = cursorSpeed / 2; // dam olish holatining qiymati int mouseMiddleState = 0;

boolean mouseIsActive = noto'g'ri; // sichqonchani boshqarish yoki qilmaslik

int lastSwitchState = LOW; // oldingi o'tish holati

bo'sh o'rnatish () {

pinMode (startEmulation, INPUT); // pinMode kalit sichqonchasi (mouseMiddleButton, INPUT); // sichqonchaning o'rta tugmachasi pinMode (mouseLeftButton, INPUT); // sichqonchaning chap tugmasi pinMode (mouseRightButton, INPUT); // sichqonchaning o'ng tugmasi

Sichqoncha.begin (); // sichqonchani boshqaring

}

void loop () {

// kalitni o'qing: int switchState = digitalRead (startEmulation);

// agar u o'zgartirilsa va baland bo'lsa, sichqoncha holatini o'zgartiring:

if (switchState! = lastSwitchState) {if (switchState == LOW) {mouseIsActive =! mouseIsActive; }}

// keyingi tsikl uchun kalit holatini saqlang:

lastSwitchState = switchState;

// ikkita o'qni o'qing va o'lchang:

int xReading = readAxis (A1); int yReading = readAxis (A0);

// agar sichqonchani boshqarish holati faol bo'lsa, sichqonchani siljiting:

if (mouseIsActive) {Mouse.move (xReading, yReading, 0); // (x, y, sichqonchani aylantiring)}

// chapda

// sichqoncha tugmachasini o'qing va bosing yoki bosmang: // agar sichqoncha tugmasi bosilsa: agar (digitalRead (mouseLeftButton) == YUQORI) {// agar sichqon bosilmasa, uni bosing: agar (! Sichqoncha.ispressed) (MOUSE_LEFT)) {Sichqoncha.press (MOUSE_LEFT); kechikish (100); // Mouse.release (MOUSE_LEFT) ni bir marta va ikki marta bosish uchun kechiktirish; }}

// aks holda sichqoncha tugmasi bosilmaydi:

else {// agar sichqoncha bosilsa, uni qo'yib yuboring: if (Mouse.isPressed (MOUSE_LEFT)) {Sichqonchani chiqarish (MOUSE_LEFT); }}

// O'ng

// sichqoncha tugmachasini o'qing va bosing yoki bosmang: // agar sichqoncha tugmasi bosilsa: agar (digitalRead (mouseRightButton) == YUQORI) {// agar sichqon bosilmasa, uni bosing: if (! Sichqoncha.ispressed) (MOUSE_RIGHT)) {Sichqoncha.press (MOUSE_RIGHT); kechikish (100); // bir marta va ikki marta bosish bilan Mouse.release (MOUSE_RIGHT) ni yoqish uchun kechiktirish; }}

// aks holda sichqoncha tugmasi bosilmaydi:

else {// agar sichqoncha bosilsa, uni qo'yib yuboring: if (Mouse.isPress (MOUSE_RIGHT)) {Sichqonchani chiqarish (MOUSE_RIGHT); }}

// O'RTA

// sichqoncha tugmachasini o'qing va bosing yoki bosmang: // agar sichqoncha tugmasi bosilsa: if (digitalRead (mouseMiddleButton) == YUQORI) {// agar sichqon bosilmasa, uni bosing: if (! Sichqoncha.ispressed) (MOUSE_MIDDLE) && mouseMiddleState == 0) {Mouse.press (MOUSE_MIDDLE); mouseMiddleState = 1; // aktual el estado del botón}}

// aks holda sichqoncha tugmasi bosilmaydi:

else {// agar sichqoncha bosilsa, uni qo'yib yuboring: if (Mouse.isPressed (MOUSE_MIDDLE) && mouseMiddleState == 1) {Mouse.release (MOUSE_MIDDLE); mouseMiddleState = 0; }}

kechikish (javob kechikishi);

}

/*

o'qni o'qiydi (x yoki y uchun 0 yoki 1) va analog kirish diapazonini 0 dan */ gacha o'zgartiradi.

int readAxis (int thisAxis) {

// analog kirishni o'qing: int o'qish = analogRead (thisAxis);

// o'qishni analog kirish diapazonidan chiqish diapazoniga xarita qiling:

o'qish = xarita (o'qish, 0, 1023, 0, cursorSpeed);

// agar chiqish ko'rsatkichi tashqaridan bo'lsa

// dam olish pozitsiyasi chegarasi, undan foydalaning: int masofa = o'qish - markaz;

if (abs (masofa) <pol) {masofa = 0; }

// bu o'q uchun masofani qaytaring:

qaytish masofasi; }

3 -qadam: Prototipni o'rnatish

Prototipni o'rnatish
Prototipni o'rnatish
Prototipni o'rnatish
Prototipni o'rnatish
Prototipni o'rnatish
Prototipni o'rnatish

Birinchi qadam - qo'lqopga velkro tikish, barmog'ingizga bittadan to'rtta velkro chiziq tikishingiz kerak. Biz velkroning yumshoq qismini tikdik.

Har bir tugmachada ikkita sim bor, biri tegishli pimlardan boshlanadi va tugmani musbat oyog'iga, ikkinchisi esa manfiy oyoqqa ulanadi. Manfiy simning boshqa uchida biz har bir tugmachaning qarshiligini va joystikning manfiy simini Arduino kartasining GND ga ulanadigan oxirgi simga lehimlaymiz. Xuddi shu parallel ulanish ijobiy tomon uchun ishlaydi. (3 tugma va joystikning ijobiy oyog'i)

Jemperlarni lehimlagandan so'ng, biz simlar orasiga tiqilib qolishi uchun qattiq velkro chiziqlar qo'yamiz. Nihoyat, biz joystick modulini 3D bosilgan qismga termo yopishtirdik. Quyida. STL faylini topishingiz mumkin.

4 -qadam: Qo'lingizni sichqon sifatida ishlatishni boshlang

Image
Image
Qo'lingizni sichqon sifatida ishlatishni boshlang!
Qo'lingizni sichqon sifatida ishlatishni boshlang!
Qo'lingizni sichqon sifatida ishlatishni boshlang!
Qo'lingizni sichqon sifatida ishlatishni boshlang!

Agar sizga loyiha yoqqan bo'lsa, Assistive Tech tanlovida bizga ovoz bering.