Adquira estes componentes na Loja do Lab de Garagem

Neste tutorial vamos mostrar o novo Arduino Leonardo.

O Arduino Leonardo vem com 14 I/O's digitais e 6 I/O's analógicas. Ele vem com o Atmega32u4, o qual já vem com entrada USB e pode ser utilizado como USB Device. Uma das aplicações mais simples é utilizá-lo como mouse ou teclado. O Atmega32u4 tem 32Kbytes de memória flash, sendo que 4Kbytes são de bootloader. Tem também 2.5Kbytes de memória RAM e 1Kbytes de memória EPPROM.

Uma diferença entre o novo Arduino Leonardo e o Arduino Uno é que o Arduino Leonardo pode ser utilizado como USB Device como dito anteriormente.

Então vamos mostrar como utilizar o novo Arduino Leonardo como mouse. Vamos utilizar o Joystick Shield Kit. Para maior estabilidade nos botões, foi colocado resistores de Pull-UP de 10Kohm nas entradas digitais (2 ao 6) do Arduino Leonardo. Para saber mais sobre resistores de Pull-Up, clique aqui!

Conecte o Joystick Shield Kit no Arduino Leonardo, abra a IDE 1.0.1 do Arduino e conecte o Arduino Leonardo na porta USB do PC. Caso estiver com Windows, instale o Driver do Arduino Leonardo localizado na pasta "drivers" dentro da pasta IDE do Arduino.

Na IDE do Arduino, abra o exemplo JoystickMouseControl. Caso esteja utilizando os resistores de PULL-UP faça as modificações em vermelho abaixo:

// set pin numbers for switch, joystick axes, and LED:
const int switchPin = 2; // switch to turn on and off mouse control
const int mouseButton = 3; // input pin for the mouse pushButton
const int xAxis = A0; // joystick X axis
const int yAxis = A1; // joystick Y axis
const int ledPin = 5; // Mouse control LED

// parameters for reading the joystick:
int range = 12; // output range of X or Y movement
int responseDelay = 5; // response delay of the mouse, in ms
int threshold = range/4; // resting threshold
int center = range/2; // resting position value

boolean mouseIsActive = false; // whether or not to control the mouse
int lastSwitchState = HIGH; // previous switch state

void setup() {
pinMode(switchPin, INPUT); // the switch pin
pinMode(ledPin, OUTPUT); // the LED pin
// take control of the mouse:
Mouse.begin();
}

void loop() {
// read the switch:
int switchState = digitalRead(switchPin);
// if it's changed and it's high, toggle the mouse state:
if (switchState != lastSwitchState) {
if (switchState == LOW) { //Change to HIGH if the board doesn't have Pull Up Resistors
mouseIsActive = !mouseIsActive;
// turn on LED to indicate mouse state:
digitalWrite(ledPin, mouseIsActive);
}
}
// save switch state for next comparison:
lastSwitchState = switchState;

// read and scale the two axes:
int xReading = readAxis(A0);
int yReading = readAxis(A1);

// if the mouse control state is active, move the mouse:
if (mouseIsActive) {
Mouse.move(xReading, yReading, 0);
}

// read the mouse button and click or not click:
// if the mouse button is pressed:
if (digitalRead(mouseButton) == LOW) { //Change to HIGH if the board doesn't have Pull Up Resistors
// if the mouse is not pressed, press it:
if (!Mouse.isPressed(MOUSE_LEFT)) {
Mouse.press(MOUSE_LEFT);
}
}
// else the mouse button is not pressed:
else {
// if the mouse is pressed, release it:
if (Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}

delay(responseDelay);
}

/*
reads an axis (0 or 1 for x or y) and scales the
analog input range to a range from 0 to <range>
*/

int readAxis(int thisAxis) {
// read the analog input:
int reading = analogRead(thisAxis);

if(thisAxis == A1)  //invert the Y Axis
{
reading = map(reading, 1023, 0, 0, range);
}
// map the reading from the analog input range to the output range:
if(thisAxis == A0)
{
reading = map(reading, 0, 1023, 0, range);
}
// if the output reading is outside from the
// rest position threshold, use it:
int distance = reading - center;

if (abs(distance) < threshold) {
distance = 0;
}

// return the distance for this axis:
return distance;
}

Na programação foi feito algumas modificações para estabilidade (resistores de Pull-Up) e duas condições para inversão do cursor do mouse.

Depois de instalado o Driver do Arduino Leonardo, vá em Tools/Board e selecione o Arduino Leonardo. Depois em Tools/Serial Port e veja em qual porta o Arduino Leonardo está conectado (COMx, ttyUSBx, ttyACMx, etc). Clique em UPLOAD. Assim que terminar, aperte o botão do analógico do Joystick Shield. Este botão é o botão da porta digital 2.

Agora mova o analógico e você verá que o cursor do mouse se movimentará! O botão da porta digital 3 é o clique do botão esquerdo do mouse.

E é isso! Esperamos que tenha gostado! Caso tenha dúvidas, poste aqui neste blog! Para sugestões de tutoriais, clique aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui, respectivamente! Até a próxima!

Referências:

http://arduino.cc/en/Tutorial/JoystickMouseControl

http://arduino.cc/en/Tutorial/HomePage

Exibições: 8484

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Sérgio Maymone de Melo em 22 novembro 2012 às 13:13
Prezados amigos do labgaragem,
Trabalho com projetos sociais e este tutorial veio bem a calhar com um projeto que pretendo desenvolver de um mouse para tetraplégicos. A ideia seria colocar um inclinometro em uma viseira para que o usuario possa controlar o mouse do computador apenas com o movimento da cabeça.
Pretendo construir várias unidades e doar para entidades e portadores, possibilitando uma inserção social e oferecendo novas pespectivas de vida aos portadores de tetraplegia. Tenho pouco conhecimento de eletronica mas programo em arduino e gostaria de contar com a juda de vocês. Quem puder ajudar pode entrar em contato comigo pelo email smaymone@hotmail.com.
Agradeço desde já a colaboração de todos.
Grande abraço.
Comentário de Anderson Ribeiro em 25 agosto 2012 às 21:53

Mouse ou teclado...

E se somar um acelerômetro e Bluetooth em uma "carcaça" específica tipo uma AK-47 de brinquedo e um bom jogo...

Ta ai um bom projeto para a incubadora...

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço