Cyborg Computer Mouse: 4 кадам (Сүрөттөр менен)
Cyborg Computer Mouse: 4 кадам (Сүрөттөр менен)
Anonim
Cyborg Computer Mouse
Cyborg Computer Mouse

Көптөгөн изилдөөлөр кадимки компьютердик чычканды колдонуу позасы коркунучтуу болушу мүмкүн деп божомолдойт. Компьютер колдонуучулары чычканды клавиатурадан дээрлик үч эсе көп колдонушат. Экспозиция ылдамдыгы жогору болгондуктан, компьютердик чычканды колдонууда жогорку учуңуздун абалын жакшыртуу абдан маанилүү.

Бул абстракттуу долбоор үчүн биз адамдарга сырткы технологиянын кереги жок компьютердин экраны аркылуу өтүүгө мүмкүндүк берген тагынуучу жабдык жасайбыз. Ошентип, биз горизонталдык бетиндеги түзмөктү чыкылдатуунун ордуна табигый кыймылдарды колдоно алабыз. Бул ошондой эле оозеки презентацияларды жагымдуу кылып, экрандарды туруп туруп колдонууга мүмкүнчүлүк берет.

Ал эми прототип индексти джойстик катары колдонот, ортоңку манжаны сол басуу үчүн, оң басуу үчүн шакек манжасы жана аппаратты күйгүзүү жана өчүрүү үчүн pinky. Бармак баскычтар басылган бет катары кызмат кылат. Мунун баары мээлейге кошулат.

Жабдуулар

  • (x1) Ардуино Леонардо
  • (x1) Protoboard
  • (x1) Джойстик модулу
  • (x3) баскыч
  • (x20 ±) Зымдан секиргичтер
  • (x3) 1KΩ резисторлору
  • (x1) Мээлей тигүүчү комплект
  • Velcro Hot силикон
  • Wire Soldering комплект
  • 3D басылган бөлүгү

1 -кадам: Аппаратты орнотуу

Аппаратты орнотуу
Аппаратты орнотуу

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

2 -кадам: Кодду жана тестти жүктөө

Байланыштар түзүлгөндөн кийин USB A (M) ды микро USB B (M) га компьютерден Arduino Leonardo га туташтырып, эскизин жүктөңүз. Эскизде көчүрүү, өзгөртүү жана өркүндөтүү үчүн тартынбаңыз.

ЭСКЕРТҮҮ: Mouse.move () буйругун колдонгондо, Arduino чычканыңызды ээлеп алат! Буйрукту колдонуудан мурун сизде көзөмөл бар экенин текшериңиз. Бул Arduino Leonardo, Micro же Due үчүн гана иштейт

Мына бул долбоордун коду:

// Пиндерди аныктоо#кирет; const int mouseMiddleButton = 2; // чычкан үчүн киргизүү пин Орто баскычы const int startEmulation = 3; // чычкан эмуляциясын күйгүзүү жана өчүрүү үчүн которуу const int mouseLeftButton = 4; // чычкан үчүн кирүүчү пин сол баскычы const int mouseRightButton = 5; // чычкан үчүн киргизүүчү пин оң баскычы const int joystickX = A1; // джойстик X огу const int joystickY = A0; // джойстик Y огу

// джойстикти окуу үчүн параметрлер:

int cursorSpeed = 10; // X же Y кыймылынын чыгуу ылдамдыгы int responseDelay = 5; // чычкандын жооп кечигүүсү, мс int threshold = cursorSpeed / 4; // эс алуу босогосу int center = cursorSpeed / 2; // эс алуу абалынын мааниси int mouseMiddleState = 0;

логикалык mouseIsActive = false; // чычканды башкаруу керекпи же жокпу

int lastSwitchState = LOW; // мурунку которуу абалы

жараксыз орнотуу () {

pinMode (startEmulation, INPUT); // которгуч пин pinMode (mouseMiddleButton, INPUT); // орто чычкан баскычы pinMode (mouseLeftButton, INPUT); // чычкандын сол баскычы pinMode (mouseRightButton, INPUT); // чычкандын оң баскычы

Mouse.begin (); // чычканды көзөмөлгө алуу

}

void loop () {

// которууну окуу: int switchState = digitalRead (startEmulation);

// эгерде ал өзгөрүп, бийик болсо, чычкан абалын которуңуз:

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

// кийинки цикл үчүн которуу абалын сактаңыз:

lastSwitchState = switchState;

// окуу жана эки окту масштабдоо:

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

// эгер чычканды башкаруу абалы активдүү болсо, чычканды жылдырыңыз:

if (mouseIsActive) {Mouse.move (xReading, yReading, 0); // (x, y, чычкан дөңгөлөгүн жылдыруу)}

// СОЛГО

// чычкан баскычын окуп, чыкылдатыңыз же чыкылдатыңыз: // эгер чычкан баскычы басылса: if (digitalRead (mouseLeftButton) == HIGH) {// чычкан басылбаса, аны басыңыз: if (! Mouse.isPressed (MOUSE_LEFT)) {Mouse.press (MOUSE_LEFT); кечиктирүү (100); // бир жана эки жолу чыкылдатуу Mouse.release (MOUSE_LEFT) иштетүү үчүн кечигүү; }}

// болбосо чычкан баскычы басылбайт:

else {// эгер чычкан басылса, аны кое бериңиз: if (Mouse.isPressed (MOUSE_LEFT)) {Mouse.release (MOUSE_LEFT); }}

// ТУУРА

// чычкан баскычын окуп, чыкылдатыңыз же чыкылдатыңыз: // эгер чычкан баскычы басылса: if (digitalRead (mouseRightButton) == HIGH) {// чычкан басылбаса, аны басыңыз: if (! Mouse.isPressed (MOUSE_RIGHT)) {Mouse.press (MOUSE_RIGHT); кечиктирүү (100); // бир жана эки жолу чыкылдатууну иштетүү үчүн кечиктирүү Mouse.release (MOUSE_RIGHT); }}

// болбосо чычкан баскычы басылбайт:

else {// эгер чычкан басылса, аны кое бериңиз: if (Mouse.isPressed (MOUSE_RIGHT)) {Mouse.release (MOUSE_RIGHT); }}

// MIDDLE

// чычкан баскычын окуп, чыкылдатыңыз же чыкылдатыңыз: // эгер чычкан баскычы басылса: if (digitalRead (mouseMiddleButton) == HIGH) {// чычкан басылбаса, аны басыңыз: if (! Mouse.isPressed (MOUSE_MIDDLE) && mouseMiddleState == 0) {Mouse.press (MOUSE_MIDDLE); mouseMiddleState = 1; // актуалдуу болуп саналат}}

// болбосо чычкан баскычы басылбайт:

else {// эгер чычкан басылса, аны кое бериңиз: if (Mouse.isPressed (MOUSE_MIDDLE) && mouseMiddleState == 1) {Mouse.release (MOUSE_MIDDLE); mouseMiddleState = 0; }}

кечигүү (answerDelay);

}

/*

огун окуйт (x же y үчүн 0 же 1) жана аналогдук киргизүү диапазонун 0дөн */ га чейинки диапазонго чейин таразалайт

int readAxis (int thisAxis) {

// аналогдук кирүүнү окуу: int read = analogRead (thisAxis);

// окууну аналогдук киргизүү диапазонунан чыгаруу диапазонуна картага түшүрүү:

окуу = карта (окуу, 0, 1023, 0, cursorSpeed);

// эгерде чыгуу көрсөткүчү сыртта болсо

// эс алуу абалынын босогосу, аны колдонуңуз: int расстояние = окуу - борбор;

if (abs (расстояние) <босого) {расстояние = 0; }

// бул ог үчүн аралыкты кайтарыңыз:

кайтуу аралыгы; }

3 -кадам: Прототипти орнотуу

Прототипти орнотуу
Прототипти орнотуу
Прототипти орнотуу
Прототипти орнотуу
Прототипти орнотуу
Прототипти орнотуу

Биринчи кадам - кол капка велкро тигүү, ар бир манжаңызга бирден велкронун төрт тилкесин тигиш керек. Велкронун жумшак бөлүгүн тигип бердик.

Ар бир баскычтын эки зымы бар, бири тийиштүү казыктардан башталып, баскычтын оң бутуна, экинчиси терс бутка туташат. Терс зымдын экинчи учунда биз ар бир баскычтын каршылыгын плюс джойстиктин терс зымын Arduino тактасынын GND менен туташкан акыркы зымга кошобуз. Ошол эле параллелдүү байланыш оң жагы үчүн иштейт. (3 баскыч жана джойстиктин оң буту)

Секиргичтерди кошкондон кийин, биз зымдардын ортосуна тыгылып калышы үчүн, катуу велкро-тилкелерди кийебиз. Акырында биз джойстик модулун термо клей менен 3D басып чыгардык. Төмөндө. STL файлын таба аласыз.

4 -кадам: Чычкан катары колуңузду колдоно баштаңыз

Image
Image
Колуңузду чычкан катары колдонууну баштаңыз!
Колуңузду чычкан катары колдонууну баштаңыз!
Колуңузду чычкан катары колдонууну баштаңыз!
Колуңузду чычкан катары колдонууну баштаңыз!

Проект сизге жакса, Assistive Tech конкурсунда бизге добуш бериңиз.

Сунушталууда: