Controllo movimento cursore mouse tramite pulsante su breadboard

Salve a tutti,

sto sviluppando uno script su arduino ide per muovere il cursore del mouse da una posizione A ad un'altra posizione B in coordinate assolute. Ho prodotto uno script che mi permette soltanto di muovermi in maniera incrementale:

#include <Mouse.h>


 int BUTTON = 2;
 int pinDown =4;

 int  val = 0;                 

 void setup() {
   pinMode(BUTTON, INPUT );
   pinMode(pinDown, INPUT);

   Mouse.begin();
 }

 void loop() {
  val = digitalRead(BUTTON);  
     digitalWrite(BUTTON,HIGH); 
       if (val == HIGH) {
    digitalWrite(pinDown, HIGH); 
    Mouse.move(2,1,0);}
  else {
    digitalWrite(pinDown, LOW); 
     Mouse.press;
  }

In pratica con un solo click del pulsante vado a garantire tale spostamento, il quale però non è assoluto. Ho provato ad usare "moveAbs" al posto di "move" inserendo diverse librerie, tra cui mouseAbs.h ma la funzione non funziona (sto usando un arduino leonardo). Il mio obiettivo è quindi spostarmi in una posizione ben precisa dello schermo partendo da un punto qualisiasi e devo fare questo su comando di un solo pulsante

Buongiorno e benvenuto nella sezione Italiana del forum,

:warning: prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato, dopo di che ...

... cortesemente, leggi attentamente il REGOLAMENTO di detta sezione, (prestando molta attenzione al punto 15) e poi, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati., infine ...

... come richiesto al punto 7 del succitato regolamento, per favore edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE).

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione e sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte verrebbero temporaneamente nascoste), quindi ti consiglio di farla al più presto. :wink:

salve, mi sono appena presentato nella sezione apposita ed ho modificato il codice

A che cosa pensi che possano servire quelle digitalWrite() sui pin dichiarati come INPUT?

Ciao, Ale.

ciao, i digitalWrite() li uso per scrivere i valori HIGH e LOW che che posso premendo o meno sul pulsante, però il problema è che ogni volta che lo premo il cursore si sposta di tot pixel in base alla quantità impostata in maniera incrementale, mentre vorrei uno spostamento assoluto in una precisa posizione

Vecchio problema ... le librerie per il mouse sono quasi tutte fatte per i movimenti "relativi" e non per movimenti "assoluti". All'epoca mi pare che avevamo trovato QUESTA libreria che invece permette il posizionamento assoluto ... prova a guardare.

Guglielmo

... cosa significa?

Come ti ha già segnalato ilguargua, hai dichiarato i pin come INPUT ... non puoi usarli come OUTPUT ... :roll_eyes:

Guglielmo

Salve, ho modificato il codice per garantire lo spostamento assoluto ma purtroppo non funziona

#include <MouseTo.h>



#include <Mouse.h>




 int BUTTON = 2;
 int pinDown =4;

 int  val = 0; 

 int targetX = 5;
 int targetY = 3;                

 void setup() {
   pinMode(BUTTON, OUTPUT );
   pinMode(pinDown, OUTPUT);

   Mouse.begin();
 }

 void loop() {
  val = digitalRead(BUTTON);  
     digitalWrite(BUTTON,HIGH); 
       if (val == HIGH) {
    digitalWrite(pinDown, HIGH); 
    MouseTo.setTarget(targetX, targetY, true);}
  else {
    digitalWrite(pinDown, LOW); 
     Mouse.press();
  }

Intanto, invece di scrivere TU un programma, inizia con l'esempio a corredo, " BasicUsage.ino" e prova quello così com'è ... poi, se funziona, vedi come adattarlo.

Guglielmo

Emmistupirebbecheandasse

Leggi un'uscita (?)

Poi scrivi la stessa uscita, comunque, indipendentemente da cosa hai letto

Poi testi il valore letto

E cosa dovrebbe succedere?

Quando si scrivono i programmi bisognerebbe cercare di capire il significato di quello che si scrive...

D'accordo, grazie mille

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.