controller emulator and more
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
GG/arduino/arduino.ino

135 lines
3.7 KiB

/*
WiFi UDP Send and Receive String
This sketch waits for a UDP packet on localPort using the WiFi module.
When a packet is received an Acknowledge packet is sent to the client on port remotePort
created 30 December 2012
by dlf (Metodo2 srl)
*/
#include <SPI.h>
#include <WiFiNINA.h>
#include <WiFiUdp.h>
#include "PluggableUSBHID.h"
#include "USBMouseKeyboard.h"
int status = WL_IDLE_STATUS;
#include "arduino_secrets.h"
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
char ssid[] = SECRET_SSID; // your network SSID (name)
char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0; // your network key index number (needed only for WEP)
unsigned int localPort = 9696; // local port to listen on
char packetBuffer[256]; //buffer to hold incoming packet
char ReplyBuffer[] = "acknowledged"; // a string to send back
WiFiUDP Udp;
USBMouseKeyboard MouseKeyboard;
void setup() {
//Initialize serial and wait for port to open:
//Serial.begin(9600);
// while (!Serial) {
// ; // wait for serial port to connect. Needed for native USB port only
// }
// check for the WiFi module:
if (WiFi.status() == WL_NO_MODULE) {
//Serial.println("Communication with WiFi module failed!");
// don't continue
while (true);
}
String fv = WiFi.firmwareVersion();
if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
//Serial.println("Please upgrade the firmware");
}
// attempt to connect to WiFi network:
while (status != WL_AP_LISTENING) {
//Serial.print("Attempting to connect to SSID: ");
//Serial.println(ssid);
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
status = WiFi.beginAP(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
//Serial.println("Connected to WiFi");
printWifiStatus();
//Serial.println("\nStarting connection to server...");
// if you get a connection, report back via serial:
Udp.begin(localPort);
}
void loop() {
// if there's data available, read a packet
int packetSize = Udp.parsePacket();
if (packetSize) {
//Serial.print("Received packet of size ");
//Serial.println(packetSize);
//Serial.print("From ");
IPAddress remoteIp = Udp.remoteIP();
//Serial.print(remoteIp);
//Serial.print(", port ");
//Serial.println(Udp.remotePort());
// read the packet into packetBuffer
int len = Udp.read(packetBuffer, 255);
if (len > 0) {
packetBuffer[len] = 0;
}
//Serial.println("Contents:");
//Serial.println(packetBuffer);
String cmd=packetBuffer;
if(cmd=="BLD") {
MouseKeyboard.press(1);
}
if(cmd=="BLU") {
MouseKeyboard.release(1);
}
if(cmd=="CL") {
MouseKeyboard.click(1);
}
if(cmd=="HW") {
MouseKeyboard.printf("Hello, infoeducatie!");
}
if(cmd.startsWith("MR")){
int x=cmd.substring(3,cmd.indexOf("Y")).toInt();
int y=cmd.substring(cmd.indexOf("Y")+1).toInt();
//Serial.println("x:"+String(x)+"&y:"+String(y));
MouseKeyboard.move(x, y);
}
// send a reply, to the IP address and port that sent us the packet we received
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write(ReplyBuffer);
Udp.endPacket();
}
}
void printWifiStatus() {
// print the SSID of the network you're attached to:
//Serial.print("SSID: ");
//Serial.println(WiFi.SSID());
// print your board's IP address:
IPAddress ip = WiFi.localIP();
//Serial.print("IP Address: ");
//Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
//Serial.print("signal strength (RSSI):");
//Serial.print(rssi);
//Serial.println(" dBm");
}