Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Joystickgestuurde muis

Componenten en benodigdheden

Arduino UNO
× 1
Joystick met twee assen
× 1

Apps en online services

Arduino IDE
IDLE(Python GUI)

Over dit project

Als alternatief voor het volgen van de computercursor met een muis of een trackpad, heb ik dezelfde toepassing gemaakt met behulp van een joystick. De joystick kan de cursor in elke richting bewegen (x- en y-as) en voert ook een klikfunctie uit met de ingebouwde joystickschakelaar.

Basis-

Een joystick bestaat duidelijk uit 2 potentiometers die in de x- en y-richting zijn uitgelijnd. De Arduino leest analoge waarden van de joystick in het bereik van 0 tot 1023. Dus, wanneer de joystick in de standaard (midden) positie staat, komt de analoge waarde ook dicht bij 500 (tussen 0 en 1023).

De Arduino-schets is zo geprogrammeerd dat wanneer de joystick van het midden wordt verwijderd, er waarden worden afgedrukt in het bereik van -gevoeligheid tot +gevoeligheidswaarde (standaardwaarde is 10) afhankelijk van de positie. Dus wanneer de joystick in een extreme positie wordt bewogen, drukt de Arduino waarde 10 af en als de joystick in een andere extreme positie wordt bewogen, wordt -10 afgedrukt.

Om afzonderlijke waarden voor de x- en y-richting af te drukken, gebruiken we ":" tussen de x- en y-richtingswaarden. Voorbeeld:

De status van de joystickknop (SW) wordt afgedrukt (1/0) op de seriële monitor na de x- en y-waarden.

Om de laptop/computer de waarden te laten herkennen, hebben we de pyautogui-module van de python nodig.

Python-programmering

(bewerkt 12/11/2020 - veranderde de bibliotheek van 'pyautogui' in 'muis')

De gebruiker moet python 3 op zijn laptop/computer hebben geïnstalleerd. Het kan hier worden gedownload.

Kopieer na de installatie het pad van de locatie van het python-bestand.

De volgende stappen moeten worden uitgevoerd op de opdrachtprompt. Open de opdrachtprompt en voer het volgende in-

1. cd

2. py –m pip install –-upgrade pip

3. py –m pip muis installeren

4. py -m pip install pyserial

De muis module wordt gebruikt om muisactie uit te voeren en pyserial module wordt gebruikt om gegevens van de arduino te verzenden/ontvangen. Ik had de benodigde modules al geïnstalleerd, dus ik heb dit

Het python-programma is gemaakt om de gegevens te lezen die door de Arduino zijn afgedrukt en de x . te herkennen en j richtingswaarden en de status van schakelaar (SW).

De huidige coördinaten van de cursor worden verkregen uit de muisfunctie mouse.get_position() die de X- en Y-coördinaten van de cursor levert in de vorm van pixels.

Wanneer de joystick wordt bewogen, worden de analoge waarden van de Arduino opgeteld bij de huidige cursorpositie om de cursor in de gewenste richting te verplaatsen.

Om de cursor in de gegeven richting te verplaatsen, gebruikt u de functie mouse.move(X+x,Y+y) voldoet aan dit doel.

waarbij X en Y de huidige cursorpositie zijn en x en y de verhogings-/afnameposities die door de arduino worden geleverd.

voorbeeld:muis.moveTo(100,150) verplaatst de cursor naar 100 pixels op de x-as en 150 pixels op de y-as.

Om een ​​klikbewerking uit te voeren op basis van de SW-status, mouse.click(button="left") wordt gebruikt.

Definitieve uitvoering

Upload de Arduino-schets (hieronder weergegeven) naar je Arduino UNO en sluit de joystick aan op de Arduino-pinnen zoals aangegeven in het schema.

Nadat u ervoor heeft gezorgd dat muis en pyserial op uw computer/laptop zijn geïnstalleerd, voert u de volgende stappen uit.

1. Kopieer de python-schets in een Kladblok-bestand. Specificeer de juiste COM-poort van de arduino. Via apparaatbeheer kun je de COM-poort krijgen waarop het arduino-bord is aangesloten. Sla het bestand op als ".py" nadat u wijzigingen heeft aangebracht.

2. Open python's IDLE (python GUI) en open het Kladblok-bestand ervan.

3. voer de module uit.

U wordt dan teruggeleid naar het scherm in Afb. 4

Als u fouten ziet, start u de IDLE opnieuw en controleert u of u de juiste COM-poort van de arduino hebt genoemd.

Als er geen fouten zijn, beweeg dan de joystick en je zult de beweging van de cursor zien.

Code

  • Arduino-code
  • Python-code
Arduino-codeArduino
////////////////////////////////// Joystick gestuurde muis////// door Shubham Santosh/ ////////////////////////////////////void setup() { Serial.begin (9600); pinMode(9,INPUT); // SW-pin digitalWrite(9,HIGH);}int prev_state=0; // vorige staat van switchvoid loop () {int z=0,xpos=0,ypos=0; int x=analogRead(A0); int y=analogRead(A1); int gevoeligheid=10; // u kunt de gevoeligheid aanpassen op basis van uw comfort if(x>=550) // wanneer omhoog verplaatst xpos=map(x,550,1023,0,gevoeligheid); if(x<=450) // wanneer naar beneden verplaatst xpos=map(x,450,0,0,-gevoeligheid); if(y>=550) // wanneer naar rechts verplaatst ypos=map(y,550,1023,0,gevoeligheid); if(y<=450) // wanneer naar links verplaatst ypos=map(y,450,0,0,-gevoeligheid); int curr_state=digitalRead(9); if(curr_state==1 &&prev_state==0) // wanneer SW wordt ingedrukt z=1; anders z=0; if(xpos!=0 or ypos!=0 or z==1) // drukt alleen af ​​wanneer de joystick wordt bewogen { Serial.print(xpos); // druk de gegevens af en scheid ze door ":" Serial.print(":"); Serial.print(ypos); Serial.print(":"); Serieel.println(z); } prev_state=curr_state; vertraging(10); // voor normale werking}
PythoncodePython
# Joystick-gestuurde muis# Door Shubham Santosh# laatst bewerkt 12/11/2020 import mouse, sysimport time import serialmouse.FAILSAFE=FalseArduinoSerial=serial.Serial('com3',9600) #Specificeer de juiste COM-porttime.sleep(1 ) #vertraging van 1 seconde terwijl 1:data=str(ArduinoSerial.readline().decode('ascii')) #lees de data (x,y,z)=data.split(":") # wijst toe aan x, y en z (X,Y)=muis.get_position() #lees de huidige positie van de cursor (x,y)=(int(x),int(y)) #convert to int mouse.move(X+x,Yy ) #verplaats de cursor naar de gewenste positie als '1' in z:# lees de status van SW mouse.click(button="left") # clicks left button 

Schema's


Productieproces

  1. Computermuis
  2. Temperatuurgestuurde ventilator
  3. Raspberry Pi-gestuurde aquaponics
  4. Bewegingsgestuurde AWS IoT-knop
  5. Raspberry Pi-robot bestuurd via Bluetooth
  6. Wifi-gestuurde robot met Raspberry Pi
  7. MajorTom:Alexa Voice Controlled ARDrone 2.0
  8. Met joystick bestuurde RC-auto
  9. Joystick-spel
  10. Nunchuk-gestuurde robotarm (met Arduino)
  11. Legering 42 Legering met gecontroleerde expansie