Sul PC sul quale e' connesso il joystick si deve lanciare il seguente programma che genera dei pacchetti UDP leggendo il valore del sensore progressivo del Joystick e convertendolo in valori tra 0 e 180 (da usare poi nel servo)
Il PC deve essere ovviamente connesso alla rete e si deve avere il file pygcurse nella directory dello script
----------------------------
import pygame
import pygcurse
import socket
from time import sleep
pygame.init()
win = pygcurse.PygcurseWindow(40, 25, 'Rov Controller')
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
j = pygame.joystick.Joystick(0)
j.init()
try:
while True:
pygame.event.pump()
pot1 = int((j.get_axis(0)*90)+90)
if (pot1 <100):
pote1 = "0"+str(pot1)
else:
pote1 = str(pot1)
win.write("Motore 1 : "+str(pote1), x=2, y=7)
sock.sendto("M1"+str(pot1),("192.168.1.3",8888))
sleep(0.01)
except KeyboardInterrupt:
j.quit()
----------------------------
all'altro capo della rete c'e' in ascolto sulla porta UDP 8888 una Arduino Ethernet che riceve i pacchetti, estrae il valore per pilotare il servo e manda il comando al motore
----------------------------
#include <SPI.h> #include <Ethernet.h>
#include <Udp.h>
#include <Servo.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192,168,1,3 };
unsigned int localPort = 8888; // local port to listen on
byte remoteIp[4]; // holds received packet's originating IP
unsigned int remotePort; // holds received packet's originating port
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
Servo m1;
void setup() {
Ethernet.begin(mac,ip);
Udp.begin(localPort);
m1.attach(9); // collega il motore 1 al servo 9
Serial.begin(9600);
}
void loop() {
int packetSize = Udp.available();
if(packetSize)
{
packetSize = packetSize - 8;
Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
int m = atoi(&packetBuffer[1]);
int c = atoi(&packetBuffer[2]);
Serial.println(m);
Serial.println(c);
Serial.println("----------");
m1.write(c);
}
delay(10);
}
----------------------------
Ed ecco lo script in azione
jhkhkjh
Nessun commento:
Posta un commento