0% found this document useful (0 votes)
8 views3 pages

Robot Arm Code

The document contains an Arduino code that controls three servos and five LEDs using potentiometers and buttons. It allows the user to save the positions of the servos based on button presses and then run through those saved positions when another button is pressed. The code includes setup for input and output pins, reading analog values from potentiometers, and mapping those values to servo angles.

Uploaded by

rajhimanshu79038
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views3 pages

Robot Arm Code

The document contains an Arduino code that controls three servos and five LEDs using potentiometers and buttons. It allows the user to save the positions of the servos based on button presses and then run through those saved positions when another button is pressed. The code includes setup for input and output pins, reading analog values from potentiometers, and mapping those values to servo angles.

Uploaded by

rajhimanshu79038
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

//Original code by Ryan Chan.

Updated code by MilesPeterson101 Thanks to Ryan Chan


for the concept!

#include <Servo.h>

Servo servo1; //Servos


Servo servo2;
Servo servo3;

const int LED1 = 2; //LEDs


const int LED2 = 3;
const int LED3 = 4;
const int LED4 = 7;
const int LED5 = 8;

const int button1 = 12; //Buttons


const int button2 = 13;

int button1Presses = 0; //Button values


boolean button2Pressed = false;

const int pot1 = A0; //Potentimeters


const int pot2 = A1;
const int pot3 = A2;

int pot1Val; //Potentimeter values


int pot2Val;
int pot3Val;
int pot1Angle;
int pot2Angle;
int pot3Angle;

int servo1PosSaves[] = {1,1,1,1,1}; //position saves


int servo2PosSaves[] = {1,1,1,1,1};
int servo3PosSaves[] = {1,1,1,1,1};

void setup() {
servo1.attach(5); // Set up everything and will run once; attach servos and
define the pin modes
servo2.attach(6);
servo3.attach(9);

pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);

Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
pot1Val = analogRead(pot1); // This will read the values from the potentimeters
and store it...
pot1Angle = map(pot1Val, 0, 1023, 0, 179); // ... and this will map the values
from the potentiometers to values the servos can use and store it for later use
pot2Val = analogRead(pot2);
pot2Angle = map(pot2Val, 0, 1023, 0, 179);
pot3Val = analogRead(pot3);
pot3Angle = map(pot3Val, 0, 1023, 0, 179);

servo1.write(pot1Angle); // These will make the servos move to the mapped angles
servo2.write(pot2Angle);
servo3.write(pot3Angle);

if(digitalRead(button1) == HIGH){ // This will check how many times button1 is


pressed and save the positions to an array depending on how many times it is
pressed; switch/case works like a if statement
button1Presses++;
switch(button1Presses){
case 1:
servo1PosSaves[0] = pot1Angle;
servo2PosSaves[0] = pot2Angle;
servo3PosSaves[0] = pot3Angle;
digitalWrite(LED1, HIGH);
Serial.println("Pos 1 Saved");
break;
case 2:
servo1PosSaves[1] = pot1Angle;
servo2PosSaves[1] = pot2Angle;
servo3PosSaves[1] = pot3Angle;
digitalWrite(LED2, HIGH);
Serial.println("Pos 2 Saved");
break;
case 3:
servo1PosSaves[2] = pot1Angle;
servo2PosSaves[2] = pot2Angle;
servo3PosSaves[2] = pot3Angle;
digitalWrite(LED3, HIGH);
Serial.println("Pos 3 Saved");
break;
case 4:
servo1PosSaves[3] = pot1Angle;
servo2PosSaves[3] = pot2Angle;
servo3PosSaves[3] = pot3Angle;
digitalWrite(LED4, HIGH);
Serial.println("Pos 4 Saved");
break;
case 5:
servo1PosSaves[4] = pot1Angle;
servo2PosSaves[4] = pot2Angle;
servo3PosSaves[4] = pot3Angle;
digitalWrite(LED5, HIGH);
Serial.println("Pos 5 Saved");
break;
}
}

if(digitalRead(button2) == HIGH){ // Pretty self-explnatory here


button2Pressed = true;
}

if(button2Pressed){ // if the boolean button2Press is true, then the servos will


run though all their saved positions
for(int i = 0; i < 5; i++){
servo1.write(servo1PosSaves[i]);
servo2.write(servo2PosSaves[i]);
servo3.write(servo3PosSaves[i]);
Serial.println(" potentimeter Angles: ");
Serial.println(servo1PosSaves[i]);
Serial.println(servo2PosSaves[i]);
Serial.println(servo3PosSaves[i]);
delay(1050);
}
}
delay(300);
}

You might also like