Project description
Code
Omicron code
arduino
1//Made by Tine Logar (2017) 2 3#include <Servo.h> 4Servo servo1; 5Servo servo2; 6Servo servo3; 7Servo servo4; 8 9//Starting position of servos 10int pos1 = 90; 11int pos2 = 23; 12int pos3 = 111; 13int pos4 = 146; 14 15//Joysticks 16int VRx1 = 0; 17int VRy1 = 0; 18int VRx2 = 0; 19int VRy2 = 0; 20 21//Potentiometer 22int pot = 0; 23int servoSpeed = 0; 24 25//Button 26const int button1 = 2; 27int state1; 28int lastState = LOW; 29long lastDebounce = 0; 30long delayDebounce = 50; 31const int ledPump = 7; 32int reading; 33int pumpState; 34const int relay = 12; 35 36//Switch 37const int modeSwitch = 4; 38int switchState; 39 40//LEDs 41const int ledManual = 8; 42const int ledAuto = 13; 43const int ledOperation = 3; 44 45const int buttonStart = 11; 46int stateStart; 47 48void setup() { 49 50 Serial.begin(9600); 51 52 servo1.attach(5); 53 servo2.attach(6); 54 servo3.attach(9); 55 servo4.attach(10); 56 57 servo1.write(pos1); 58 servo2.write(pos2); 59 servo3.write(pos3); 60 servo4.write(pos4); 61 62 pinMode(button1, INPUT_PULLUP); 63 pinMode(ledPump, OUTPUT); 64 pinMode(relay, OUTPUT); 65 digitalWrite(relay, LOW); 66 67 pinMode(modeSwitch, INPUT_PULLUP); 68 69 pinMode(ledManual, OUTPUT); 70 pinMode(ledAuto, OUTPUT); 71 pinMode(ledOperation, OUTPUT); 72 73 pinMode(buttonStart, INPUT_PULLUP); 74 75} 76 77void loop() { 78 79 //Reading of inputs 80 switchState = digitalRead(modeSwitch); 81 82 pot = analogRead(A4); 83 servoSpeed = map(pot, 0, 1023, 100, 12); 84 85 VRx1 = analogRead(A1); 86 VRx1 = map(VRx1, 0, 1023, 0, 10); 87 VRy1 = analogRead(A0); 88 VRy1 = map(VRy1, 0, 1023, 10, 0); 89 VRx2 = analogRead(A2); 90 VRx2 = map(VRx2, 0, 1023, 0, 10); 91 VRy2 = analogRead(A3); 92 VRy2 = map(VRy2, 0, 1023, 0, 10); 93 94 reading = digitalRead(button1); 95 96 stateStart = digitalRead(buttonStart); 97 98 //Manual mode 99 if (switchState == LOW) { 100 101 digitalWrite(ledManual, HIGH); 102 digitalWrite(ledAuto, LOW); 103 104 if (VRx1 < 2 && pos1 > 0) { 105 (pos1--); 106 delay(servoSpeed); 107 } 108 109 if (VRx1 > 8 && pos1 <180) { 110 (pos1++); 111 delay(servoSpeed); 112 } 113 114 servo1.write(pos1); 115 116 if (VRy1 < 2 && pos2 > 0) { 117 (pos2--); 118 delay(servoSpeed); 119 } 120 121 if (VRy1 > 8 && pos2 <180) { 122 (pos2++); 123 delay(servoSpeed); 124 } 125 126 servo2.write(pos2); 127 128 if (VRx2 < 2 && pos3 > 0) { 129 (pos3--); 130 delay(servoSpeed); 131 } 132 133 if (VRx2 > 8 && pos3 < 180) { 134 (pos3++); 135 delay(servoSpeed); 136 } 137 138 servo3.write(pos3); 139 140 if (VRy2 < 2 && pos4 > 0) { 141 (pos4--); 142 delay(servoSpeed); 143 } 144 145 if (VRy2 > 8 && pos4 < 180) { 146 (pos4++); 147 delay(servoSpeed); 148 } 149 150 servo4.write(pos4); 151 152 //Turn ON/OFF air pump 153 if (reading != lastState) { 154 lastDebounce = millis(); 155 } 156 157 if ((millis() - lastDebounce) > delayDebounce) { 158 if (reading != state1) { 159 state1 = reading; 160 if (state1 == LOW) { 161 pumpState = ! pumpState; 162 } 163 } 164 } 165 166 lastState = reading; 167 168 digitalWrite(ledPump, pumpState); 169 digitalWrite(relay, !pumpState); 170 } 171 172 //Home position 173 if (stateStart == LOW) { 174 175 for (pos1; pos1 < 90; pos1++) { 176 delay(servoSpeed); 177 servo1.write(pos1); 178 } 179 180 for (pos1; pos1 > 90; pos1--) { 181 delay(servoSpeed); 182 servo1.write(pos1); 183 } 184 185 for (pos4; pos4 < 146; pos4++) { 186 delay(servoSpeed); 187 servo4.write(pos4); 188 } 189 190 for (pos4; pos4 > 146; pos4--) { 191 delay(servoSpeed); 192 servo4.write(pos4); 193 } 194 195 for (pos3; pos3 < 111; pos3++) { 196 delay(servoSpeed); 197 servo3.write(pos3); 198 } 199 200 for (pos3; pos3 > 111; pos3--) { 201 delay(servoSpeed); 202 servo3.write(pos3); 203 } 204 205 for (pos2; pos2 < 23; pos2++) { 206 delay(servoSpeed); 207 servo2.write(pos2); 208 } 209 210 for (pos2; pos2 > 23; pos2--) { 211 delay(servoSpeed); 212 servo2.write(pos2); 213 } 214 215 } 216 217 //Auto mode 218 if (switchState == HIGH && pumpState == LOW) { 219 220 digitalWrite(ledAuto, HIGH); 221 digitalWrite(ledManual, LOW); 222 223 //Start operation 224 if (stateStart == LOW) { 225 226 digitalWrite(ledOperation, HIGH); 227 228 for (pos1; pos1 < 90; pos1++) { 229 delay(servoSpeed); 230 servo1.write(pos1); 231 } 232 233 for (pos1; pos1 > 90; pos1--) { 234 delay(servoSpeed); 235 servo1.write(pos1); 236 } 237 238 for (pos4; pos4 < 146; pos4++) { 239 delay(servoSpeed); 240 servo4.write(pos4); 241 } 242 243 for (pos4; pos4 > 146; pos4--) { 244 delay(servoSpeed); 245 servo4.write(pos4); 246 } 247 248 for (pos3; pos3 < 111; pos3++) { 249 delay(servoSpeed); 250 servo3.write(pos3); 251 } 252 253 for (pos3; pos3 > 111; pos3--) { 254 delay(servoSpeed); 255 servo3.write(pos3); 256 } 257 258 for (pos2; pos2 < 23; pos2++) { 259 delay(servoSpeed); 260 servo2.write(pos2); 261 } 262 263 for (pos2; pos2 > 23; pos2--) { 264 delay(servoSpeed); 265 servo2.write(pos2); 266 } 267 268 for (pos2; pos2 < 35; pos2++) { 269 delay(servoSpeed); 270 servo2.write(pos2); 271 } 272 273 for (pos1; pos1 > 60; pos1--) { 274 delay(servoSpeed); 275 servo1.write(pos1); 276 } 277 278 for (pos2; pos2 > 20; pos2--) { 279 delay(servoSpeed); 280 servo2.write(pos2); 281 } 282 283 delay(500); 284 digitalWrite(relay, LOW); 285 digitalWrite(ledPump, HIGH); 286 delay(1000); 287 288 for (pos2; pos2 < 35; pos2++) { 289 delay(servoSpeed); 290 servo2.write(pos2); 291 } 292 293 for (pos1; pos1 < 170; pos1++) { 294 delay(servoSpeed); 295 servo1.write(pos1); 296 } 297 298 for (pos2; pos2 < 80; pos2++) { 299 delay(servoSpeed); 300 servo2.write(pos2); 301 } 302 303 for (pos3; pos3 > 75; pos3--) { 304 delay(servoSpeed); 305 servo3.write(pos3); 306 } 307 308 for (pos4; pos4 > 70; pos4--) { 309 delay(servoSpeed); 310 servo4.write(pos4); 311 } 312 313 for (pos1; pos1 > 15; pos1--) { 314 delay(servoSpeed); 315 servo1.write(pos1); 316 } 317 318 for (pos4; pos4 < 146; pos4++) { 319 delay(servoSpeed); 320 servo4.write(pos4); 321 } 322 323 for (pos3; pos3 < 111; pos3++) { 324 delay(servoSpeed); 325 servo3.write(pos3); 326 } 327 328 for (pos1; pos1 < 120; pos1++) { 329 delay(servoSpeed); 330 servo1.write(pos1); 331 } 332 333 for (pos2; pos2 > 20; pos2--) { 334 delay(servoSpeed); 335 servo2.write(pos2); 336 } 337 338 delay(1000); 339 digitalWrite(relay, HIGH); 340 digitalWrite(ledPump, LOW); 341 delay(500); 342 343 for (pos2; pos2 <35; pos2++) { 344 delay(servoSpeed); 345 servo2.write(pos2); 346 } 347 348 for (pos1; pos1 > 90; pos1--) { 349 delay(servoSpeed); 350 servo1.write(pos1); 351 } 352 353 for(pos2; pos2 > 23; pos2--) { 354 delay(servoSpeed); 355 servo2.write(pos2); 356 } 357 358 digitalWrite(ledOperation, LOW); 359 360 } 361 } 362} 363 364//Made by: Tine Logar (2017) 365
Omicron code
arduino
1//Made by Tine Logar (2017) 2 3#include <Servo.h> 4Servo servo1; 5Servo 6 servo2; 7Servo servo3; 8Servo servo4; 9 10//Starting position of servos 11int 12 pos1 = 90; 13int pos2 = 23; 14int pos3 = 111; 15int pos4 = 146; 16 17//Joysticks 18int 19 VRx1 = 0; 20int VRy1 = 0; 21int VRx2 = 0; 22int VRy2 = 0; 23 24//Potentiometer 25int 26 pot = 0; 27int servoSpeed = 0; 28 29//Button 30const int button1 = 2; 31int 32 state1; 33int lastState = LOW; 34long lastDebounce = 0; 35long delayDebounce 36 = 50; 37const int ledPump = 7; 38int reading; 39int pumpState; 40const int relay 41 = 12; 42 43//Switch 44const int modeSwitch = 4; 45int switchState; 46 47//LEDs 48const 49 int ledManual = 8; 50const int ledAuto = 13; 51const int ledOperation = 3; 52 53const 54 int buttonStart = 11; 55int stateStart; 56 57void setup() { 58 59 Serial.begin(9600); 60 61 62 servo1.attach(5); 63 servo2.attach(6); 64 servo3.attach(9); 65 servo4.attach(10); 66 67 68 servo1.write(pos1); 69 servo2.write(pos2); 70 servo3.write(pos3); 71 servo4.write(pos4); 72 73 74 pinMode(button1, INPUT_PULLUP); 75 pinMode(ledPump, OUTPUT); 76 pinMode(relay, 77 OUTPUT); 78 digitalWrite(relay, LOW); 79 80 pinMode(modeSwitch, INPUT_PULLUP); 81 82 83 pinMode(ledManual, OUTPUT); 84 pinMode(ledAuto, OUTPUT); 85 pinMode(ledOperation, 86 OUTPUT); 87 88 pinMode(buttonStart, INPUT_PULLUP); 89 90} 91 92void loop() 93 { 94 95 //Reading of inputs 96 switchState = digitalRead(modeSwitch); 97 98 99 pot = analogRead(A4); 100 servoSpeed = map(pot, 0, 1023, 100, 12); 101 102 103 VRx1 = analogRead(A1); 104 VRx1 = map(VRx1, 0, 1023, 0, 10); 105 VRy1 = analogRead(A0); 106 107 VRy1 = map(VRy1, 0, 1023, 10, 0); 108 VRx2 = analogRead(A2); 109 VRx2 = map(VRx2, 110 0, 1023, 0, 10); 111 VRy2 = analogRead(A3); 112 VRy2 = map(VRy2, 0, 1023, 0, 10); 113 114 115 reading = digitalRead(button1); 116 117 stateStart = digitalRead(buttonStart); 118 119 120 //Manual mode 121 if (switchState == LOW) { 122 123 digitalWrite(ledManual, 124 HIGH); 125 digitalWrite(ledAuto, LOW); 126 127 if (VRx1 < 2 && pos1 128 > 0) { 129 (pos1--); 130 delay(servoSpeed); 131 } 132 133 if (VRx1 134 > 8 && pos1 <180) { 135 (pos1++); 136 delay(servoSpeed); 137 } 138 139 140 servo1.write(pos1); 141 142 if (VRy1 < 2 && pos2 > 0) { 143 (pos2--); 144 145 delay(servoSpeed); 146 } 147 148 if (VRy1 > 8 && pos2 <180) { 149 (pos2++); 150 151 delay(servoSpeed); 152 } 153 154 servo2.write(pos2); 155 156 if (VRx2 157 < 2 && pos3 > 0) { 158 (pos3--); 159 delay(servoSpeed); 160 } 161 162 163 if (VRx2 > 8 && pos3 < 180) { 164 (pos3++); 165 delay(servoSpeed); 166 167 } 168 169 servo3.write(pos3); 170 171 if (VRy2 < 2 && pos4 > 0) { 172 173 (pos4--); 174 delay(servoSpeed); 175 } 176 177 if (VRy2 > 8 && pos4 178 < 180) { 179 (pos4++); 180 delay(servoSpeed); 181 } 182 183 servo4.write(pos4); 184 185 186 //Turn ON/OFF air pump 187 if (reading != lastState) { 188 lastDebounce 189 = millis(); 190 } 191 192 if ((millis() - lastDebounce) > delayDebounce) { 193 194 if (reading != state1) { 195 state1 = reading; 196 if (state1 197 == LOW) { 198 pumpState = ! pumpState; 199 } 200 } 201 } 202 203 204 lastState = reading; 205 206 digitalWrite(ledPump, pumpState); 207 digitalWrite(relay, 208 !pumpState); 209 } 210 211 //Home position 212 if (stateStart == LOW) { 213 214 215 for (pos1; pos1 < 90; pos1++) { 216 delay(servoSpeed); 217 servo1.write(pos1); 218 219 } 220 221 for (pos1; pos1 > 90; pos1--) { 222 delay(servoSpeed); 223 224 servo1.write(pos1); 225 } 226 227 for (pos4; pos4 < 146; pos4++) 228 { 229 delay(servoSpeed); 230 servo4.write(pos4); 231 } 232 233 for 234 (pos4; pos4 > 146; pos4--) { 235 delay(servoSpeed); 236 servo4.write(pos4); 237 238 } 239 240 for (pos3; pos3 < 111; pos3++) { 241 delay(servoSpeed); 242 243 servo3.write(pos3); 244 } 245 246 for (pos3; pos3 > 111; pos3--) { 247 248 delay(servoSpeed); 249 servo3.write(pos3); 250 } 251 252 for (pos2; 253 pos2 < 23; pos2++) { 254 delay(servoSpeed); 255 servo2.write(pos2); 256 257 } 258 259 for (pos2; pos2 > 23; pos2--) { 260 delay(servoSpeed); 261 262 servo2.write(pos2); 263 } 264 265 } 266 267 //Auto mode 268 if (switchState 269 == HIGH && pumpState == LOW) { 270 271 digitalWrite(ledAuto, HIGH); 272 digitalWrite(ledManual, 273 LOW); 274 275 //Start operation 276 if (stateStart == LOW) { 277 278 digitalWrite(ledOperation, 279 HIGH); 280 281 for (pos1; pos1 < 90; pos1++) { 282 delay(servoSpeed); 283 284 servo1.write(pos1); 285 } 286 287 for (pos1; pos1 > 90; pos1--) 288 { 289 delay(servoSpeed); 290 servo1.write(pos1); 291 } 292 293 294 for (pos4; pos4 < 146; pos4++) { 295 delay(servoSpeed); 296 servo4.write(pos4); 297 298 } 299 300 for (pos4; pos4 > 146; pos4--) { 301 delay(servoSpeed); 302 303 servo4.write(pos4); 304 } 305 306 for (pos3; pos3 < 111; pos3++) { 307 308 delay(servoSpeed); 309 servo3.write(pos3); 310 } 311 312 for (pos3; 313 pos3 > 111; pos3--) { 314 delay(servoSpeed); 315 servo3.write(pos3); 316 317 } 318 319 for (pos2; pos2 < 23; pos2++) { 320 delay(servoSpeed); 321 322 servo2.write(pos2); 323 } 324 325 for (pos2; pos2 > 23; pos2--) { 326 327 delay(servoSpeed); 328 servo2.write(pos2); 329 } 330 331 for (pos2; 332 pos2 < 35; pos2++) { 333 delay(servoSpeed); 334 servo2.write(pos2); 335 336 } 337 338 for (pos1; pos1 > 60; pos1--) { 339 delay(servoSpeed); 340 341 servo1.write(pos1); 342 } 343 344 for (pos2; pos2 > 20; pos2--) { 345 346 delay(servoSpeed); 347 servo2.write(pos2); 348 } 349 350 delay(500); 351 352 digitalWrite(relay, LOW); 353 digitalWrite(ledPump, HIGH); 354 delay(1000); 355 356 357 for (pos2; pos2 < 35; pos2++) { 358 delay(servoSpeed); 359 servo2.write(pos2); 360 361 } 362 363 for (pos1; pos1 < 170; pos1++) { 364 delay(servoSpeed); 365 366 servo1.write(pos1); 367 } 368 369 for (pos2; pos2 < 80; pos2++) { 370 371 delay(servoSpeed); 372 servo2.write(pos2); 373 } 374 375 for (pos3; 376 pos3 > 75; pos3--) { 377 delay(servoSpeed); 378 servo3.write(pos3); 379 380 } 381 382 for (pos4; pos4 > 70; pos4--) { 383 delay(servoSpeed); 384 385 servo4.write(pos4); 386 } 387 388 for (pos1; pos1 > 15; pos1--) { 389 390 delay(servoSpeed); 391 servo1.write(pos1); 392 } 393 394 for (pos4; 395 pos4 < 146; pos4++) { 396 delay(servoSpeed); 397 servo4.write(pos4); 398 399 } 400 401 for (pos3; pos3 < 111; pos3++) { 402 delay(servoSpeed); 403 404 servo3.write(pos3); 405 } 406 407 for (pos1; pos1 < 120; pos1++) { 408 409 delay(servoSpeed); 410 servo1.write(pos1); 411 } 412 413 for (pos2; 414 pos2 > 20; pos2--) { 415 delay(servoSpeed); 416 servo2.write(pos2); 417 418 } 419 420 delay(1000); 421 digitalWrite(relay, HIGH); 422 digitalWrite(ledPump, 423 LOW); 424 delay(500); 425 426 for (pos2; pos2 <35; pos2++) { 427 delay(servoSpeed); 428 429 servo2.write(pos2); 430 } 431 432 for (pos1; pos1 > 90; pos1--) { 433 434 delay(servoSpeed); 435 servo1.write(pos1); 436 } 437 438 for(pos2; 439 pos2 > 23; pos2--) { 440 delay(servoSpeed); 441 servo2.write(pos2); 442 443 } 444 445 digitalWrite(ledOperation, LOW); 446 447 } 448 } 449} 450 451//Made 452 by: Tine Logar (2017) 453
Downloadable files
Schematic
Schematic
Comments
Only logged in users can leave comments
tlogar
0 Followers
•0 Projects
Table of contents
Intro
8
0