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 este caso no deberías usar delay sino contar el tiempo y llevar el tiempo de cada cosa para saber cuantos segundos han pasado
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
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/
#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
CitarAlgo así seria ? disculpa si estoy poniendo alguna burrada soy medio nuevo en arduino :-X
piensa en la algoritmia...
unsigned long time_F1;
unsigned long time_F2;
void setup() {
time_F1 = 0;
time_F2 = 0;
}
void loop() {
if(boton_presionado()){
time_F1 = millis() + 5000; // tiempo + 5 segundos
time_F2 = millis() + 20000; // tiempo + 20 segundos
}
if(time_F1 && time_F1 < millis()){ // si time_F1 no es 0 y el tiempo ya pasó
time_F1 = 0; //lo volvemos a 0 para "apagarlo"
//aquí tu proceso
}
if(time_F2 && time_F2 < millis()){ // si time_F2 no es 0 y el tiempo ya pasó
time_F2 = 0; //lo volvemos a 0 para "apagarlo"
//aquí tu proceso
}
}
si no eres flojo como yo XD y usas array, puedes de una sola pasada activar y desactivar secuencias :P
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