elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Arduino HID
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Arduino HID  (Leído 2,483 veces)
abigliazzi

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Arduino HID
« en: 18 Abril 2018, 22:34 pm »

Hola, configure mi arduino Mega 2560 para que funcionara como un puerto HID para utilizarlo como macro de teclado, hice algunas pruebas de codigo como

Citar

#include "Keyboard.h"
#include "HID.h"

void setup() {

  Keyboard.begin();
}


void loop() {
delay (1000);
  Keyboard.write(65);


}



Funciono, cada 1 segundo me escribía la letra "A"..

Hasta acá todo bien, ahora lo que quiero hacer es que cuando apriete un botón en cualquier pin de la placa que arranque el loop ej, Key_F1 (cada 1 segundo) Key_F2(cada 20 segundos) Key_F3(cada 5 segundos) es decir, en 1 minuto se pulso 60 veces "F1" 3 veces "F2" y 12 veces "F3" sin detenerse

y finalmente que cuando vuelva a apretar el botón se detenga la cadena... me explico ?

estoy medio trabado con el codigo, me tira errores cuando quiero agregar mas de 1 tecla y también me tira error cuando pongo el pinmode.

Me ayudaría mucho que me pongan un ejemplo de varias teclas distintas con Keyboard.write y delay , ya que 1 sola pude hacerlo andar pero los errores comienzan cuando pongo mas de 1..

espero su  ayuda

Desde ya muchas gracias !


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Arduino HID
« Respuesta #1 en: 18 Abril 2018, 22:46 pm »

en este caso no deberías usar delay sino contar el tiempo y llevar el tiempo de cada cosa para saber cuantos segundos han pasado


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
abigliazzi

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Arduino HID
« Respuesta #2 en: 18 Abril 2018, 22:49 pm »

Claro, pero es por tiempo indefinido, quiero finalizar el loop cuando vuelva a presionar el interruptor, porque lo que necesito es el F1 se presione cada 1 segundo y que el F2 cada 20 por ejemplo
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Arduino HID
« Respuesta #3 en: 18 Abril 2018, 22:54 pm »

explica en detalle los errores de los pines...

para tener el tiempo esta funcion te sirve
https://www.arduino.cc/reference/en/language/functions/time/millis/
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
abigliazzi

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Arduino HID
« Respuesta #4 en: 18 Abril 2018, 23:11 pm »

Código:

#include "Keyboard.h"
#include "HID.h"

void setup() {

  Keyboard.begin();
}


void loop() {

currentMillis = millis();
    while (millis() - currentMillis < 1000) {

  Keyboard.write(Key_F1);


}



Algo así seria ? disculpa si estoy poniendo alguna burrada soy medio nuevo en arduino  :-X
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Arduino HID
« Respuesta #5 en: 18 Abril 2018, 23:21 pm »

Citar
Algo así seria ? disculpa si estoy poniendo alguna burrada soy medio nuevo en arduino  :-X

piensa en la algoritmia...

Código
  1. unsigned long time_F1;
  2. unsigned long time_F2;
  3.  
  4.  
  5. void setup() {
  6.  time_F1 = 0;
  7.  time_F2 = 0;
  8.  
  9. }
  10.  
  11.  
  12. void loop() {
  13.  
  14.  if(boton_presionado()){
  15.    time_F1 = millis() + 5000; // tiempo + 5 segundos
  16.    time_F2 = millis() + 20000; // tiempo + 20 segundos
  17.  }
  18.  
  19.  if(time_F1 && time_F1 < millis()){ // si time_F1 no es 0 y el tiempo ya pasó
  20.    time_F1 = 0; //lo volvemos a 0 para "apagarlo"
  21.  
  22.    //aquí tu proceso
  23.  
  24.  }
  25.  
  26.  if(time_F2 && time_F2 < millis()){ // si time_F2 no es 0 y el tiempo ya pasó
  27.    time_F2 = 0; //lo volvemos a 0 para "apagarlo"
  28.  
  29.    //aquí tu proceso
  30.  
  31.  }
  32.  
  33. }
  34.  

si no eres flojo como yo XD y usas array, puedes de una sola pasada activar y desactivar secuencias :P
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Arduino HID
« Respuesta #6 en: 18 Abril 2018, 23:27 pm »

No he trabajado mucho en Arduino, así que voy a dar unas ideas generales.

Crea una variable tipo bool para saber si debe correr el temporizador.
Crea una variable tipo entero para saber qué pin ha sido el último en activarse.
Crea una variable tipo unsigned que marque el tiempo de marca del temporizador.

Cuando actives un pin:
   Cambias la mara de tiempo a la referente a ese pin
   Observa si el temporizador estaba en marcha
      Si lo estaba y el pin es igual al ultimo pin
         Detienes el temporizador
      Si estaba parado
         Pones en marcha el temporizador

Si el temporizador está en marcha
    Si el tiempo ha llegado a la marca
      Envías el carácter por el teclado virtual
      Reinicia el temporizador a 0
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arduino
Electrónica
@synthesize 7 7,371 Último mensaje 7 Julio 2010, 00:37 am
por SOMBRIO
arduino
.NET (C#, VB.NET, ASP)
kokokoko 0 2,654 Último mensaje 2 Marzo 2012, 15:51 pm
por kokokoko
ARDUINO-
Programación General
Inter-ard 5 2,983 Último mensaje 12 Febrero 2014, 17:38 pm
por engel lex
Arduino
Programación General
sanxez1 1 2,259 Último mensaje 20 Noviembre 2016, 18:48 pm
por hdarko
arduino
Programación General
andresico_ 1 2,029 Último mensaje 6 Septiembre 2017, 20:27 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines