Simulare pressione tasti con arduino UNO

Salve a tutti vorrei usare il mio ricevitore ir per comandare il computer usando le scorciatoie con i tasti di vlc e delle utility di Windows 8. Ho intenzione di usare uno standalone, cosa ne pensate di emulare una tastiera PS/2 e poi usare un adattatore PASSIVO da PS/2 a USB, che funzioni?
Qualcuno ha qualche idea alternativa (non voglio usare il leonardo...)

Cioè con una tastiera comandi un arduino, e l'arduino a sua volta comanda il computer ? :relaxed:

anerDev:
Cioè con una tastiera comandi un arduino, e l'arduino a sua volta comanda il computer ? :relaxed:

No, io mando il segnale ir con un telecomando ad arduino, lo decodifico con un ricevitore e se è magari "volume +" uso arduino per simulare il tasto volume è sul pc (ad esempio F10)

Ah okok !

Allora, per quanto riguarda la parte dell'IR poi ti passo un mio vecchio progetto;
per quanto riguarda dall'arduino al pc, secondo me ti conviene via seriale ! Ma vediamo ...

Appena torno a casa ti mando tutto su questo topic

L'arduino Leonardo non è pensata anche per questo? per simulare tastiera e topo? :wink:

The Leonardo differs from all preceding boards in that the ATmega32u4 has built-in USB communication, eliminating the need for a secondary processor. This allows the Leonardo to appear to a connected computer as a mouse and keyboard, in addition to a virtual (CDC) serial / COM port. It also has other implications for the behavior of the board; these are detailed on the getting started page.

Che IDE usi ?

Se usi 1.x devo riscrivere il codice ! ahuahuahu

leouz:
L'arduino Leonardo non è pensata anche per questo? per simulare tastiera e topo? :wink:

The Leonardo differs from all preceding boards in that the ATmega32u4 has built-in USB communication, eliminating the need for a secondary processor. This allows the Leonardo to appear to a connected computer as a mouse and keyboard, in addition to a virtual (CDC) serial / COM port. It also has other implications for the behavior of the board; these are detailed on the getting started page.

Leggi sopra ;), ho scritto che non voglio usare il Leonardo :smiley:

anerDev:
Che IDE usi ?

Se usi 1.x devo riscrivere il codice ! ahuahuahu

Si, userei la 1.0.2 ma posso benissimo usare la 0022

cece99:
cosa ne pensate di emulare una tastiera PS/2 e poi usare un adattatore PASSIVO da PS/2 a USB, che funzioni?

L'adattatore passivo PS/2 USB è per l'appunto passivo, cioè è solo un adattatore tra connettori diversi, la PS/2 non ha nulla a che vedere con l'USB come funzionamento, i device che possono usare questi adattatori, tastiere e mouse, dispongono internamente di tutte e due le interfacce e utilizzano quella che serve a seconda dei casi.
Detta in altri termini, non puoi pensare di emulare la PS/2 con Arduino e pensare di poterla collegare alla USB utilizzando un adattatore passivo, ti serve un vero convertitore (attivo) tra PS/2 e USB e non un semplice adattatore.

astrobeed:

cece99:
cosa ne pensate di emulare una tastiera PS/2 e poi usare un adattatore PASSIVO da PS/2 a USB, che funzioni?

L'adattatore passivo PS/2 USB è per l'appunto passivo, cioè è solo un adattatore tra connettori diversi, la PS/2 non ha nulla a che vedere con l'USB come funzionamento, i device che possono usare questi adattatori, tastiere e mouse, dispongono internamente di tutte e due le interfacce e utilizzano quella che serve a seconda dei casi.
Detta in altri termini, non puoi pensare di emulare la PS/2 con Arduino e pensare di poterla collegare alla USB utilizzando un adattatore passivo, ti serve un vero convertitore (attivo) tra PS/2 e USB e non un semplice adattatore.

Infatti anche io la pensavo così......
@astro hai una delle tue idee geniali?

Alors prova così:

Installa questa libreria: https://github.com/shirriff/Arduino-IRremote
Usa questo il circuito in allegato;

Con questo sketch vedi ogni tasto del telecomando a quale “numero corrisponde”:

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, DEC);
    irrecv.resume(); // Receive the next value
  }
}

Invece per far corrispondere una “schiacciata” al tasto del telecomando ad una funzione, puoi usare questo sketch (un mio vecchio progetto):

#include <IRremote.h>

int led1 = 8;
int led2 = 9;
int led3 = 10;
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
byte flag=0;

void setup() {  
 Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}

void loop() {
   if (irrecv.decode(&results)) {
     Serial.println(results.value, DEC);
      irrecv.resume();
      
       if (results.value == 33444015) {
         digitalWrite(led1, flag);
         flag^=1;
       }
       
       if (results.value == 33478695) {
         digitalWrite(led2, flag);
         flag^=1;
       }
       
       if (results.value == 33486855) {
         digitalWrite(led3, flag);
         flag^=1;
       }
       
    }
}

Fammi sapere

Fonte: http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html

ir-schematic.png

anerDev:
Alors prova così:

Installa questa libreria: https://github.com/shirriff/Arduino-IRremote
Usa questo il circuito in allegato;

Con questo sketch vedi ogni tasto del telecomando a quale “numero corrisponde”:

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, DEC);
    irrecv.resume(); // Receive the next value
  }
}




Invece per far corrispondere una "schiacciata" al tasto del telecomando ad una funzione, puoi usare questo sketch (un mio vecchio progetto):



#include <IRremote.h>

int led1 = 8;
int led2 = 9;
int led3 = 10;
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
byte flag=0;

void setup() { 
Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, DEC);
      irrecv.resume();
     
      if (results.value == 33444015) {
        digitalWrite(led1, flag);
        flag^=1;
      }
     
      if (results.value == 33478695) {
        digitalWrite(led2, flag);
        flag^=1;
      }
     
      if (results.value == 33486855) {
        digitalWrite(led3, flag);
        flag^=1;
      }
     
    }
}





Fammi sapere

Fonte: http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html

Ok, grazie ma io vorrei capire come simulare la pressione dei tasti senza comprare una leonardo e senza programmare il convertitore usb-seriale di arduino che è un atmega.
Qualcuno saprebbe come illuminarmi?

Ma simulare in che senso ? Vorresti usare un arduino virtuale per vedere come si comporta il programma ? O.0

Io ti posso aiutare nella parte del ricevitore IR !

per me ti conviene scriverti un software in vb da fare girare sul tuo pc così puoi controllare tutto il sistema con poco codice...

superlol:
per me ti conviene scriverti un software in vb da fare girare sul tuo pc così puoi controllare tutto il sistema con poco codice...

Anche io pensavo a una cosa simile, ma mi sapresti aiutare visto che di VB non capisco nulla :D, versione da installare e comandi che devo usare :wink:

cece99:

superlol:
per me ti conviene scriverti un software in vb da fare girare sul tuo pc così puoi controllare tutto il sistema con poco codice...

Anche io pensavo a una cosa simile, ma mi sapresti aiutare visto che di VB non capisco nulla :D, versione da installare e comandi che devo usare :wink:

ok mi sono scavato una fossa perchè è da 2 mesi che uso esclusivamente linux :stuck_out_tongue:

comunque dovrai installare vb.net, magari framework 4 (ma dovresti avere già molto installato con win 8)

quindi impara come comunicare via seriale, visual basic ti mette a disposizione tutto nella libreria IO, fai il primo form e impara a leggere da seriale e printare in una textbox, poi Keyboard Events Simulation using keybd_event() function - CodeProject
ricorda che ogni comando dev'essere doppio: uno che simula la pressione ed uno il rilascio :wink:

superlol:

cece99:

superlol:
per me ti conviene scriverti un software in vb da fare girare sul tuo pc così puoi controllare tutto il sistema con poco codice...

Anche io pensavo a una cosa simile, ma mi sapresti aiutare visto che di VB non capisco nulla :D, versione da installare e comandi che devo usare :wink:

ok mi sono scavato una fossa perchè è da 2 mesi che uso esclusivamente linux :stuck_out_tongue:

comunque dovrai installare vb.net, magari framework 4 (ma dovresti avere già molto installato con win 8)

quindi impara come comunicare via seriale, visual basic ti mette a disposizione tutto nella libreria IO, fai il primo form e impara a leggere da seriale e printare in una textbox, poi Keyboard Events Simulation using keybd_event() function - CodeProject
ricorda che ogni comando dev'essere doppio: uno che simula la pressione ed uno il rilascio :wink:

Non capisco nulla di quel sito :smiley: comunque vorrei fare una cosa plug and play quindi senza avere proggrammi nel computer ma che funzioni con tutti i computer

Cosa ne pensate di questo progetto?

cece99:
Cosa ne pensate di questo progetto?
USB-Keyboard with Arduino and V-USB library, an example - petrockblock

oddio il demone della vusb ogni tanto ritorna :smiley:

non te la consiglio ma se proprio vuoi perderci ore ed ore puoi farlo :wink:

comunque con visual studio il visual basic è semplicissimo e con quel comando basta che lo chiami.
il diagramma sarebbe del tipo

  • mi metto in ascolto sulla seriale
  • se sento 1 allora alzo il volume
  • se sento 2 allora abbasso il volume
  • se sento 3 lo metto come play/pausa ecc..
  • torno ad ascoltare la seriale

il programma è mooolto semplice, magari stasera te lo faccio io :wink:

superlol:

cece99:
Cosa ne pensate di questo progetto?
http://petrockblog.wordpress.com/2012/05/19/usb-keyboard-with-arduino-and-v-usb-library-an-example/

oddio il demone della vusb ogni tanto ritorna :smiley:

non te la consiglio ma se proprio vuoi perderci ore ed ore puoi farlo :wink:

comunque con visual studio il visual basic è semplicissimo e con quel comando basta che lo chiami.
il diagramma sarebbe del tipo

  • mi metto in ascolto sulla seriale
  • se sento 1 allora alzo il volume
  • se sento 2 allora abbasso il volume
  • se sento 3 lo metto come play/pausa ecc…
  • torno ad ascoltare la seriale

il programma è mooolto semplice, magari stasera te lo faccio io :wink:

Ho già comprato i pezzi x la vusb… se vuoi farmi il programma te ne sarei grato, comunque mi piacerebbe molto riuscire ad usare la vusb, questo è il programma che sta uscendo:

#include <IRremote.h>
#include "UsbKeyboard.h"

int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results; 


void setup() {  
 Serial.begin(9600);
  irrecv.enableIRIn();
Serial.println("avvio...");
}

void loop() {
  UsbKeyboard.update();
     if (irrecv.decode(&results)) {
     
      irrecv.resume();
      
       if (results.value == 1587641220) {
         Serial.println("spazio...");
         UsbKeyboard.sendKeyStroke(KEY_SPACE);
         
        
         
       }
       

       
    }
}
 [code]

[/code]

Se vuoi usare vusb ti sconsiglio vivamente di farlo tramite arduino.
Compila direttamente codice C con la toolchain di avr.
P.S. il clock della scheda sarebbe meglio tenerlo a 12mhz , trovi alcune altre informazioni

QUI

anche se vedo che hai già partecipatovi. :grin: