Tutorial: Como utilizar o USB Host Shield com teclado e mouse
HTML-код
- Опубликовано: 29 сен 2024
- Olá Garagistas, no tutorial de hoje vou apresentar tão pedido USB Host Shield e demonstrar seu funcionamento com um mouse e um teclado. E também realizar uma básica modificação para controlar um pequeno servo motor.
LINK PARA O TUTORIAL ESCRITO
labdegaragem.co...
LINK PARA OUTROS TUTORIAIS:
labdegaragem.co...
NOSSA REDE SOCIAL:
labdegaragem.com/
NOSSA LOJA:
www.labdegarage...
NOSSA INCUBADORA:
labdegaragem.co...
como eu salvo a configuração para usar ela em outro computador como exemple sem precisar configurar tudo de novo?
OLA MEU AMIGO, VC CONHECE ALGUM SISTEMA DE COMANDO POR VOZ CAPAZ DE ACIONAR ALGUMAS TECLAS DO PC POR SINAL DE AUDIO? UO SEJA: RECEBO DE UM PROGRAMA 2 SINAIS DE AUDIO DIFERENTE, COM ESSES 2 SINAIS DE AUDIO QUERIA ACIONAR PELO MENOS 2 OU MAIS TECLAS DO PC SEM TER CONTATO MANUAL COM ELAS, SO COM O SINAL DE AUDIO RECEBIDO DO PROGRAMA,TEM COMO VC ME AJUDAR? GRANDE ABRAÇO!!
ASS:MARCOS AURELIO.
#include >>esta dando erro .. tem como me ajudar?>>
#include
// Satisfy IDE, which only needs to see the include statment in the ino.
#ifdef dobogusinclude
#include
#endif
#include
class MouseRptParser : public MouseReportParser
{
protected:
void OnMouseMove(MOUSEINFO *mi);
void OnLeftButtonUp(MOUSEINFO *mi);
void OnLeftButtonDown(MOUSEINFO *mi);
void OnRightButtonUp(MOUSEINFO *mi);
void OnRightButtonDown(MOUSEINFO *mi);
void OnMiddleButtonUp(MOUSEINFO *mi);
void OnMiddleButtonDown(MOUSEINFO *mi);
};
void MouseRptParser::OnMouseMove(MOUSEINFO *mi)
{
Serial.print("dx=");
Serial.print(mi->dX, DEC);
Serial.print(" dy=");
Serial.println(mi->dY, DEC);
};
void MouseRptParser::OnLeftButtonUp (MOUSEINFO *mi)
{
Serial.println("L Butt Up");
};
void MouseRptParser::OnLeftButtonDown (MOUSEINFO *mi)
{
Serial.println("L Butt Dn");
};
void MouseRptParser::OnRightButtonUp (MOUSEINFO *mi)
{
Serial.println("R Butt Up");
};
void MouseRptParser::OnRightButtonDown (MOUSEINFO *mi)
{
Serial.println("R Butt Dn");
};
void MouseRptParser::OnMiddleButtonUp (MOUSEINFO *mi)
{
Serial.println("M Butt Up");
};
void MouseRptParser::OnMiddleButtonDown (MOUSEINFO *mi)
{
Serial.println("M Butt Dn");
};
class KbdRptParser : public KeyboardReportParser
{
void PrintKey(uint8_t mod, uint8_t key);
protected:
void OnControlKeysChanged(uint8_t before, uint8_t after);
void OnKeyDown (uint8_t mod, uint8_t key);
void OnKeyUp (uint8_t mod, uint8_t key);
void OnKeyPressed(uint8_t key);
};
void KbdRptParser::PrintKey(uint8_t m, uint8_t key)
{
MODIFIERKEYS mod;
*((uint8_t*)&mod) = m;
Serial.print((mod.bmLeftCtrl == 1) ? "C" : " ");
Serial.print((mod.bmLeftShift == 1) ? "S" : " ");
Serial.print((mod.bmLeftAlt == 1) ? "A" : " ");
Serial.print((mod.bmLeftGUI == 1) ? "G" : " ");
Serial.print(" >");
PrintHex(key, 0x80);
Serial.print("< ");
Serial.print((mod.bmRightCtrl == 1) ? "C" : " ");
Serial.print((mod.bmRightShift == 1) ? "S" : " ");
Serial.print((mod.bmRightAlt == 1) ? "A" : " ");
Serial.println((mod.bmRightGUI == 1) ? "G" : " ");
};
void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
{
Serial.print("DN ");
PrintKey(mod, key);
uint8_t c = OemToAscii(mod, key);
if (c)
OnKeyPressed(c);
}
void KbdRptParser::OnControlKeysChanged(uint8_t before, uint8_t after) {
MODIFIERKEYS beforeMod;
*((uint8_t*)&beforeMod) = before;
MODIFIERKEYS afterMod;
*((uint8_t*)&afterMod) = after;
if (beforeMod.bmLeftCtrl != afterMod.bmLeftCtrl) {
Serial.println("LeftCtrl changed");
}
if (beforeMod.bmLeftShift != afterMod.bmLeftShift) {
Serial.println("LeftShift changed");
}
if (beforeMod.bmLeftAlt != afterMod.bmLeftAlt) {
Serial.println("LeftAlt changed");
}
if (beforeMod.bmLeftGUI != afterMod.bmLeftGUI) {
Serial.println("LeftGUI changed");
}
if (beforeMod.bmRightCtrl != afterMod.bmRightCtrl) {
Serial.println("RightCtrl changed");
}
if (beforeMod.bmRightShift != afterMod.bmRightShift) {
Serial.println("RightShift changed");
}
if (beforeMod.bmRightAlt != afterMod.bmRightAlt) {
Serial.println("RightAlt changed");
}
if (beforeMod.bmRightGUI != afterMod.bmRightGUI) {
Serial.println("RightGUI changed");
}
}
void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key)
{
Serial.print("UP ");
PrintKey(mod, key);
}
void KbdRptParser::OnKeyPressed(uint8_t key)
{
Serial.print("ASCII: ");
Serial.println((char)key);
};
USB Usb;
USBHub Hub(&Usb);
HIDBoot < USB_HID_PROTOCOL_KEYBOARD | USB_HID_PROTOCOL_MOUSE > HidComposite(&Usb);
HIDBoot HidKeyboard(&Usb);
HIDBoot HidMouse(&Usb);
KbdRptParser KbdPrs;
MouseRptParser MousePrs;
void setup()
{
Serial.begin( 115200 );
#if !defined(__MIPSEL__)
while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
Serial.println("Start");
if (Usb.Init() == -1)
Serial.println("OSC did not start.");
delay( 200 );
HidComposite.SetReportParser(0, &KbdPrs);
HidComposite.SetReportParser(1, &MousePrs);
HidKeyboard.SetReportParser(0, &KbdPrs);
HidMouse.SetReportParser(0, &MousePrs);
}
void loop()
{
Usb.Task();
}
Y le saca compa nombre que le voy a andar sacando alas verga.
Mas o arduíno mega num pode ser usado com fonte de até 12 volts?
Boa tarde galera! Meu code esta aparentemente ok na programação. mas ao conectar nao esta lendo o dongle. o dongle foi atualizado o driver e esta funcionando e piscando normalmente ao conectar no pc mas na shield nao! o que pode ser ?
Ótimo material, para o pessoal que ficou com dúvida esse usb host shield é igual ao azul, podem seguir esse tutorial sem problemas
Boa noite este exemplo funciona teclado sem fio?
Como eu faço um arduíno conectar com este dispositivo e um outro que eu conecto ao PC e o do PC 'espelha' o dispositivo que está na outra ponta e é reconhecido igual?
Ninguém no youtube explica como usar os comandos depois, que você aperta todas ou algumas teclas , queria deixar o teclado conectado e usar como se tivesse conectado no pc, é incrível vocês fazem o tutorial. acho que achando que todo mundo sabe mexer no ardoino eu desisto
Todo mundo tem capacidade de aprender se tiver interesse, são não vale reclamar que não fizeram seu projeto pra você.
Opa, estou tendo um problema com a mensagem de conexão "OSC did not start." já tentei de tudo aqui e até agora nada. Alguma solução!?
"
Boa noite , você conseguiu resolver "OSC did not start." , sei que já faz tempo mais quem sabe você lembra ainda. Te agradeço se me ajudar.