Skip to content

Instantly share code, notes, and snippets.

@dsvakola
Created November 26, 2019 11:31
Show Gist options
  • Save dsvakola/c096cc9a11abcef74ec1d901e9d1b3dd to your computer and use it in GitHub Desktop.
Save dsvakola/c096cc9a11abcef74ec1d901e9d1b3dd to your computer and use it in GitHub Desktop.
Code of Arduino UNO based Teaching Pendant 4 DOF Robotic Arm in less Jitter Environment of Servos
/*
* This code was developed at Vidyasagar Academy, Akola
* Website: www.vsa.edu.in
* License: you can use it for any purpose as long as
* you don't claim that you are its author and
* you don't alter license terms and formulations (lines 2-8 of this file).
* If you can improve this code, please do so!
* You can contact us on our email addresses.
*/
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
const int LED1 = 2;
const int LED2 = 3;
const int LED3 = 4;
const int LED4 = 7;
const int button1 = 12;
const int button2 = 13;
int button1Presses=0;
boolean button2Pressed=false;
const int pot1 = A0;
const int pot2 = A1;
const int pot3 = A2;
const int pot4 = A3;
int pot1Val; //Potentimeter values
int pot2Val;
int pot3Val;
int pot4Val;
int pot1Angle;
int pot2Angle;
int pot3Angle;
int pot4Angle;
int servo1PosSaves[] = {1,1,1,1}; // position saves
int servo2PosSaves[] = {1,1,1,1};
int servo3PosSaves[] = {1,1,1,1};
int servo4PosSaves[] = {1,1,1,1};
void setup()
{
servo1.attach(5);
servo2.attach(6);
servo3.attach(9);
servo4.attach(10);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
Serial.begin(9600);
}
void loop()
{
pot1Val = analogRead(pot1);
pot1Angle = map(pot1Val, 0, 512, 0, 180);
pot2Val = analogRead(pot2);
pot2Angle = map(pot2Val, 0, 512, 0, 180);
pot3Val = analogRead(pot3);
pot3Angle = map(pot3Val, 0, 512, 0, 180);
pot4Val = analogRead(pot4);
pot4Angle = map(pot4Val, 0, 512, 0, 180);
servo1.write(pot1Angle);
servo2.write(pot2Angle);
servo3.write(pot3Angle);
servo4.write(pot4Angle);
if(digitalRead(button1) == HIGH)
{
button1Presses++;
switch(button1Presses)
{
case 1:
servo1PosSaves[0] = pot1Angle;
servo2PosSaves[0] = pot2Angle;
servo3PosSaves[0] = pot3Angle;
servo4PosSaves[0] = pot4Angle;
digitalWrite(LED1, HIGH);
break;
case 2:
servo1PosSaves[1] = pot1Angle;
servo2PosSaves[1] = pot2Angle;
servo3PosSaves[1] = pot3Angle;
servo4PosSaves[1] = pot4Angle;
digitalWrite(LED2, HIGH);
break;
case 3:
servo1PosSaves[2] = pot1Angle;
servo2PosSaves[2] = pot2Angle;
servo3PosSaves[2] = pot3Angle;
servo4PosSaves[2] = pot4Angle;
digitalWrite(LED3, HIGH);
break;
case 4:
servo1PosSaves[3] = pot1Angle;
servo2PosSaves[3] = pot2Angle;
servo3PosSaves[3] = pot3Angle;
servo4PosSaves[3] = pot4Angle;
digitalWrite(LED4, HIGH);
break;
}
}
if(digitalRead(button2)==HIGH)
{
button2Pressed = true;
}
if(button2Pressed)
{
for(int i=0;i<4;i++)
{
servo1.write(servo1PosSaves[i]);
delay(300);
servo2.write(servo2PosSaves[i]);
delay(300);
servo3.write(servo3PosSaves[i]);
delay(300);
servo4.write(servo4PosSaves[i]);
delay(300);
}
}
delay(500);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment