Hello guyz, I am trying to make a robotic arm I am stuck. I want my USB gamepad buttons to control the servo motors independently. Whenever I press button 1 the servo moves from 0 to 180 and when i press button 4 it moves that servo from 180 to 0. But i want to rotate the servo clockwise and anticlockwise independently without any restriction. Could you guyz please help me out. Here is the link of my python script
https://github.com/aeropunk/Arduino-Python-4-Axis-Servo/blob/master/multijoystick.py
Here is my arduino code
// Import the Arduino Servo library
#include <Servo.h>
// Create a Servo object for each servo
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
// TO ADD SERVOS:
// Servo servo5;
// etc...
// Common servo setup values
int minPulse = 600; // minimum servo position, us (microseconds)
int maxPulse = 2400; // maximum servo position, us
// User input for servo and position
int userInput[3]; // raw input from serial buffer, 3 bytes
int startbyte; // start byte, begin reading input
int servo; // which servo to pulse?
int pos; // servo angle 0-180
int i; // iterator
// LED on Pin 13 for digital on/off demo
int ledPin = 13;
int pinState = LOW;
void setup()
{
// Attach each Servo object to a digital pin
servo1.attach(2, minPulse, maxPulse);
servo2.attach(3, minPulse, maxPulse);
servo3.attach(4, minPulse, maxPulse);
servo4.attach(5, minPulse, maxPulse);
servo5.attach(9, minPulse, maxPulse);
// TO ADD SERVOS:
// servo5.attach(YOUR_PIN, minPulse, maxPulse);
// etc...
// LED on Pin 13 for digital on/off demo
pinMode(ledPin, OUTPUT);
// Open the serial connection, 9600 baud
Serial.begin(9600);
}
void loop()
{
// Wait for serial input (min 3 bytes in buffer)
if (Serial.available() > 2) {
// Read the first byte
startbyte = Serial.read();
// If it's really the startbyte (255) ...
if (startbyte == 255) {
// ... then get the next two bytes
for (i=0;i<2;i++) {
userInput[i] = Serial.read();
}
// First byte = servo to move?
servo = userInput[0];
// Second byte = which position?
pos = userInput[1];
// Packet error checking and recovery
if (pos == 255) { servo = 255; }
// Assign new position to appropriate servo
switch (servo)
{
case 1:
servo1.write(pos); // move servo1 to 'pos'
break;
case 2:
servo2.write(pos);
break;
case 3:
servo3.write(pos);
break;
case 4:
servo4.write(pos);
break;
case 5:
if(pos == 180)
{ }
if(pos == 0)
{ }
break;
// TO ADD SERVOS:
// case 5:
// servo5.write(pos);
// break;
// etc...
// LED on Pin 13 for digital on/off demo
case 99:
if (pos == 180) {
if (pinState == LOW) { pinState = HIGH; }
else { pinState = LOW; }
}
if (pos == 0) {
pinState = LOW;
}
digitalWrite(ledPin, pinState);
break;
}
}
}
}
What changes should i make in case 5 so that whenever the button 1 is pressed the servo will rotate clockwise again whenever the button 4 is pressed the servo will rotate anti clockwise. Thank you