Components and supplies
Cardboard & plastic platform
Tactile button
String
Rotary potentiometer (generic)
Arduino UNO
RGB Diffused Common Cathode
Jumper wires (generic)
Cable Ties (10 Pack)
Servos (Tower Pro MG996R)
Tools and machines
Hot glue gun (generic)
Scissors
Project description
Code
Code for miniature robotics arm
arduino
Code for potentiometer, button, servo motors and RGB led.
1#include <Servo.h> 2Servo servo1; 3Servo servo2; 4Servo servo3; 5 6const int potpin1 = A0; 7const int potpin2 = A1; 8const int potpin3 = A2; 9 10const int button1 = 2; 11const int button2 = 10; 12 13 14 15int val1; 16int val2; 17int val3; 18 19int button1Pressed = 0; 20boolean button2Pressed = false; 21 22 23 24int pot1Angle; 25int pot2Angle; 26int pot3Angle; 27 28 29int servo1PosSave[10]; 30int servo2PosSave[10]; 31int servo3PosSave[10]; 32 33 34int saves; 35 36void setup() { 37 pinMode(4, OUTPUT); 38 pinMode(5, OUTPUT); 39 pinMode(6, OUTPUT); 40 Serial.begin(9600); 41 servo1.attach(7); 42 servo2.attach(8); 43 servo3.attach(9); 44 45 pinMode(button1, INPUT); 46 pinMode(button2, INPUT); 47 48 saves = -1; 49} 50 51 52 53void loop() { 54 digitalWrite(4,HIGH); 55 digitalWrite(5, LOW); 56 digitalWrite(6, LOW); 57 58 val1 = analogRead(potpin1); 59 val2 = analogRead(potpin2); 60 val3 = analogRead(potpin3); 61 62 63 64 pot1Angle = map (val1, 0, 1023, 0, 179); 65 pot2Angle = map (val2, 0, 1023, 30, 90); 66 pot3Angle = map (val3, 0, 1023, 110, 50); 67 68 69 servo1.write(pot1Angle); 70 servo2.write(pot2Angle); 71 servo3.write(pot3Angle); 72 73 if(digitalRead(button1) == HIGH){ 74 button1Pressed++; 75 switch(button1Pressed){ 76 case 1: 77 servo1PosSave[0] = pot1Angle; 78 servo2PosSave[0] = pot2Angle; 79 servo3PosSave[0] = pot3Angle; 80 Serial.println("Position #1 Saved"); 81 {digitalWrite(4,LOW); 82 digitalWrite(5, HIGH); 83 digitalWrite(6, LOW);} 84 delay(500); 85 saves = 0; 86 break; 87 case 2: 88 servo1PosSave[1] = pot1Angle; 89 servo2PosSave[1] = pot2Angle; 90 servo3PosSave[1] = pot3Angle; 91 Serial.println("Position #2 Saved"); 92 {digitalWrite(4,LOW); 93 digitalWrite(5, HIGH); 94 digitalWrite(6, LOW);} 95 delay(500); 96 saves = 1; 97 break; 98 case 3: 99 servo1PosSave[2] = pot1Angle; 100 servo2PosSave[2] = pot2Angle; 101 servo3PosSave[2] = pot3Angle; 102 Serial.println("Position #3 Saved"); 103 {digitalWrite(4,LOW); 104 digitalWrite(5, HIGH); 105 digitalWrite(6, LOW);} 106 delay(500); 107 saves = 2; 108 break; 109 case 4: 110 servo1PosSave[3] = pot1Angle; 111 servo2PosSave[3] = pot2Angle; 112 servo3PosSave[3] = pot3Angle; 113 Serial.println("Position #4 Saved"); 114 {digitalWrite(4,LOW); 115 digitalWrite(5, HIGH); 116 digitalWrite(6, LOW);} 117 delay(500); 118 saves = 3; 119 break; 120 case 5: 121 servo1PosSave[4] = pot1Angle; 122 servo2PosSave[4] = pot2Angle; 123 servo3PosSave[4] = pot3Angle; 124 Serial.println("Position #5 Saved"); 125 {digitalWrite(4,LOW); 126 digitalWrite(5, HIGH); 127 digitalWrite(6, LOW);} 128 delay(500); 129 saves = 4; 130 break; 131 case 6: 132 servo1PosSave[5] = pot1Angle; 133 servo2PosSave[5] = pot2Angle; 134 servo3PosSave[5] = pot3Angle; 135 Serial.println("Position #6 Saved"); 136 {digitalWrite(4,LOW); 137 digitalWrite(5, HIGH); 138 digitalWrite(6, LOW);} 139 delay(500); 140 saves = 5; 141 break; 142 case 7: 143 servo1PosSave[6] = pot1Angle; 144 servo2PosSave[6] = pot2Angle; 145 servo3PosSave[6] = pot3Angle; 146 Serial.println("Position #7 Saved"); 147 {digitalWrite(4,LOW); 148 digitalWrite(5, HIGH); 149 digitalWrite(6, LOW);} 150 delay(500); 151 saves = 6; 152 break; 153 case 8: 154 servo1PosSave[7] = pot1Angle; 155 servo2PosSave[7] = pot2Angle; 156 servo3PosSave[7] = pot3Angle; 157 Serial.println("Position #8 Saved"); 158 {digitalWrite(4,LOW); 159 digitalWrite(5, HIGH); 160 digitalWrite(6, LOW);} 161 delay(500); 162 saves = 7; 163 break; 164 case 9: 165 servo1PosSave[8] = pot1Angle; 166 servo2PosSave[8] = pot2Angle; 167 servo3PosSave[8] = pot3Angle; 168 Serial.println("Position #9 Saved"); 169 {digitalWrite(4,LOW); 170 digitalWrite(5, HIGH); 171 digitalWrite(6, LOW);} 172 delay(500); 173 saves = 8; 174 break; 175 case 10: 176 servo1PosSave[9] = pot1Angle; 177 servo2PosSave[9] = pot2Angle; 178 servo3PosSave[9] = pot3Angle; 179 Serial.println("Position #10 Saved"); 180 {digitalWrite(4,LOW); 181 digitalWrite(5, HIGH); 182 digitalWrite(6, LOW);} 183 delay(500); 184 saves = 9; 185 break; 186 default: 187 for(int i=0;i<4; i++){ 188 digitalWrite(4,HIGH); 189 digitalWrite(5, LOW); 190 digitalWrite(6, LOW); 191 delay(200); 192 digitalWrite(4,LOW); 193 digitalWrite(5, LOW); 194 digitalWrite(6, LOW); 195 delay(200); 196 } 197 198 }} 199 200 201 if(digitalRead(button2) == HIGH){ 202 button2Pressed = true; 203 } 204 205 206 if(button2Pressed){ 207 digitalWrite(4,LOW); 208 digitalWrite(5, HIGH); 209 digitalWrite(6, HIGH); 210 for (int i =0; i<=saves; i++){ 211 servo1.write(servo1PosSave[i]); 212 servo2.write(servo2PosSave[i]); 213 servo3.write(servo3PosSave[i]); 214 delay(500); 215 } 216 } 217 delay(500); 218 219 220} 221 222 223
Code for miniature robotics arm
arduino
Code for potentiometer, button, servo motors and RGB led.
1#include <Servo.h> 2Servo servo1; 3Servo servo2; 4Servo servo3; 5 6const int potpin1 = A0; 7const int potpin2 = A1; 8const int potpin3 = A2; 9 10const int button1 = 2; 11const int button2 = 10; 12 13 14 15int val1; 16int val2; 17int val3; 18 19int button1Pressed = 0; 20boolean button2Pressed = false; 21 22 23 24int pot1Angle; 25int pot2Angle; 26int pot3Angle; 27 28 29int servo1PosSave[10]; 30int servo2PosSave[10]; 31int servo3PosSave[10]; 32 33 34int saves; 35 36void setup() { 37 pinMode(4, OUTPUT); 38 pinMode(5, OUTPUT); 39 pinMode(6, OUTPUT); 40 Serial.begin(9600); 41 servo1.attach(7); 42 servo2.attach(8); 43 servo3.attach(9); 44 45 pinMode(button1, INPUT); 46 pinMode(button2, INPUT); 47 48 saves = -1; 49} 50 51 52 53void loop() { 54 digitalWrite(4,HIGH); 55 digitalWrite(5, LOW); 56 digitalWrite(6, LOW); 57 58 val1 = analogRead(potpin1); 59 val2 = analogRead(potpin2); 60 val3 = analogRead(potpin3); 61 62 63 64 pot1Angle = map (val1, 0, 1023, 0, 179); 65 pot2Angle = map (val2, 0, 1023, 30, 90); 66 pot3Angle = map (val3, 0, 1023, 110, 50); 67 68 69 servo1.write(pot1Angle); 70 servo2.write(pot2Angle); 71 servo3.write(pot3Angle); 72 73 if(digitalRead(button1) == HIGH){ 74 button1Pressed++; 75 switch(button1Pressed){ 76 case 1: 77 servo1PosSave[0] = pot1Angle; 78 servo2PosSave[0] = pot2Angle; 79 servo3PosSave[0] = pot3Angle; 80 Serial.println("Position #1 Saved"); 81 {digitalWrite(4,LOW); 82 digitalWrite(5, HIGH); 83 digitalWrite(6, LOW);} 84 delay(500); 85 saves = 0; 86 break; 87 case 2: 88 servo1PosSave[1] = pot1Angle; 89 servo2PosSave[1] = pot2Angle; 90 servo3PosSave[1] = pot3Angle; 91 Serial.println("Position #2 Saved"); 92 {digitalWrite(4,LOW); 93 digitalWrite(5, HIGH); 94 digitalWrite(6, LOW);} 95 delay(500); 96 saves = 1; 97 break; 98 case 3: 99 servo1PosSave[2] = pot1Angle; 100 servo2PosSave[2] = pot2Angle; 101 servo3PosSave[2] = pot3Angle; 102 Serial.println("Position #3 Saved"); 103 {digitalWrite(4,LOW); 104 digitalWrite(5, HIGH); 105 digitalWrite(6, LOW);} 106 delay(500); 107 saves = 2; 108 break; 109 case 4: 110 servo1PosSave[3] = pot1Angle; 111 servo2PosSave[3] = pot2Angle; 112 servo3PosSave[3] = pot3Angle; 113 Serial.println("Position #4 Saved"); 114 {digitalWrite(4,LOW); 115 digitalWrite(5, HIGH); 116 digitalWrite(6, LOW);} 117 delay(500); 118 saves = 3; 119 break; 120 case 5: 121 servo1PosSave[4] = pot1Angle; 122 servo2PosSave[4] = pot2Angle; 123 servo3PosSave[4] = pot3Angle; 124 Serial.println("Position #5 Saved"); 125 {digitalWrite(4,LOW); 126 digitalWrite(5, HIGH); 127 digitalWrite(6, LOW);} 128 delay(500); 129 saves = 4; 130 break; 131 case 6: 132 servo1PosSave[5] = pot1Angle; 133 servo2PosSave[5] = pot2Angle; 134 servo3PosSave[5] = pot3Angle; 135 Serial.println("Position #6 Saved"); 136 {digitalWrite(4,LOW); 137 digitalWrite(5, HIGH); 138 digitalWrite(6, LOW);} 139 delay(500); 140 saves = 5; 141 break; 142 case 7: 143 servo1PosSave[6] = pot1Angle; 144 servo2PosSave[6] = pot2Angle; 145 servo3PosSave[6] = pot3Angle; 146 Serial.println("Position #7 Saved"); 147 {digitalWrite(4,LOW); 148 digitalWrite(5, HIGH); 149 digitalWrite(6, LOW);} 150 delay(500); 151 saves = 6; 152 break; 153 case 8: 154 servo1PosSave[7] = pot1Angle; 155 servo2PosSave[7] = pot2Angle; 156 servo3PosSave[7] = pot3Angle; 157 Serial.println("Position #8 Saved"); 158 {digitalWrite(4,LOW); 159 digitalWrite(5, HIGH); 160 digitalWrite(6, LOW);} 161 delay(500); 162 saves = 7; 163 break; 164 case 9: 165 servo1PosSave[8] = pot1Angle; 166 servo2PosSave[8] = pot2Angle; 167 servo3PosSave[8] = pot3Angle; 168 Serial.println("Position #9 Saved"); 169 {digitalWrite(4,LOW); 170 digitalWrite(5, HIGH); 171 digitalWrite(6, LOW);} 172 delay(500); 173 saves = 8; 174 break; 175 case 10: 176 servo1PosSave[9] = pot1Angle; 177 servo2PosSave[9] = pot2Angle; 178 servo3PosSave[9] = pot3Angle; 179 Serial.println("Position #10 Saved"); 180 {digitalWrite(4,LOW); 181 digitalWrite(5, HIGH); 182 digitalWrite(6, LOW);} 183 delay(500); 184 saves = 9; 185 break; 186 default: 187 for(int i=0;i<4; i++){ 188 digitalWrite(4,HIGH); 189 digitalWrite(5, LOW); 190 digitalWrite(6, LOW); 191 delay(200); 192 digitalWrite(4,LOW); 193 digitalWrite(5, LOW); 194 digitalWrite(6, LOW); 195 delay(200); 196 } 197 198 }} 199 200 201 if(digitalRead(button2) == HIGH){ 202 button2Pressed = true; 203 } 204 205 206 if(button2Pressed){ 207 digitalWrite(4,LOW); 208 digitalWrite(5, HIGH); 209 digitalWrite(6, HIGH); 210 for (int i =0; i<=saves; i++){ 211 servo1.write(servo1PosSave[i]); 212 servo2.write(servo2PosSave[i]); 213 servo3.write(servo3PosSave[i]); 214 delay(500); 215 } 216 } 217 delay(500); 218 219 220} 221 222 223
Downloadable files
Schematic
Contains all components. This is my first time using Fritzing, sorry if it is not perfect because I learn as I do.
Schematic
Comments
Only logged in users can leave comments
Ooi_Yan_Liang
0 Followers
•0 Projects
Table of contents
Intro
17
0