Created
March 22, 2022 06:12
-
-
Save idriszmy/633941b7d4faaa1cf2130ca33233fcf9 to your computer and use it in GitHub Desktop.
Basic Otto DIY movement with Maker Nano
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Basic Otto DIY movement with Maker Nano | |
https://youtu.be/yhI3i0DSZoo | |
Board: | |
- Maker Nano | |
https://my.cytron.io/p-maker-nano-simplifying-arduino-for-projects | |
- IO Expansion Shield for Arduino Nano | |
https://my.cytron.io/p-io-expansion-shield-for-arduino-nano | |
- SG90 Micro Servo | |
https://my.cytron.io/p-sg90-micro-servo | |
- 5VDC HC-SR04 Ultrasonic Sensor | |
https://my.cytron.io/p-5v-hc-sr04-ultrasonic-sensor | |
- 3D printing products | |
https://my.cytron.io/c-3d-modeling | |
Otto DIY | |
- https://www.ottodiy.com/ | |
Last Modified: 22 Mar 2022 | |
*/ | |
#include <Servo.h> | |
#define SERVO_LL 2 // Servo attached to left leg | |
#define SERVO_LR 3 // Servo attached to right leg | |
#define SERVO_FL 4 // Servo attached to left foot | |
#define SERVO_FR 5 // Servo attached to right foot | |
#define TRIG 9 | |
#define ECHO 8 | |
#define BUZZER 8 | |
int offset_ll = 5; | |
int offset_lr = 0; | |
int offset_fl = 5; | |
int offset_fr = 0; | |
int defaultpos_ll = 90 - offset_ll; | |
int defaultpos_lr = 90 - offset_lr; | |
int defaultpos_fl = 90 - offset_fl; | |
int defaultpos_fr = 90 - offset_fr; | |
Servo servo_ll; | |
Servo servo_lr; | |
Servo servo_fl; | |
Servo servo_fr; | |
void stand() | |
{ | |
servo_ll.write(defaultpos_ll); | |
servo_lr.write(defaultpos_lr); | |
servo_fl.write(defaultpos_fl); | |
servo_fr.write(defaultpos_fr); | |
delay(1000); | |
} | |
void dance_1() | |
{ | |
int count, servo_pos; | |
for (count = 0; count <= 4; count++) { | |
servo_pos = defaultpos_fl - (count*10); | |
servo_fl.write(servo_pos); | |
delay(20); | |
} | |
for (count = 4; count >= 0; count--) { | |
servo_pos = defaultpos_fl - (count*10); | |
servo_fl.write(servo_pos); | |
delay(20); | |
} | |
delay(300); | |
} | |
void dance_2() | |
{ | |
int count, servo_pos; | |
for (count = 0; count <= 4; count++) { | |
servo_pos = defaultpos_fr + (count*10); | |
servo_fr.write(servo_pos); | |
delay(20); | |
} | |
for (count = 4; count >= 0; count--) { | |
servo_pos = defaultpos_fr + (count*10); | |
servo_fr.write(servo_pos); | |
delay(20); | |
} | |
delay(300); | |
} | |
void dance_3() | |
{ | |
int count, servo_pos; | |
for (count = 0; count <= 5; count++) { | |
servo_pos = defaultpos_fl + (count*10); | |
servo_fl.write(servo_pos); | |
delay(30); | |
} | |
for (count = 0; count <= 5; count++) { | |
servo_pos = defaultpos_fr - (count*10); | |
servo_fr.write(servo_pos); | |
delay(30); | |
} | |
delay(200); | |
for (count = 5; count >= 0; count--) { | |
servo_pos = defaultpos_fl + (count*10); | |
servo_fl.write(servo_pos); | |
delay(30); | |
} | |
for (count = 5; count >= 0; count--) { | |
servo_pos = defaultpos_fr - (count*10); | |
servo_fr.write(servo_pos); | |
delay(30); | |
} | |
} | |
void dance_4() | |
{ | |
int count, servo_pos; | |
for (count = 0; count <= 5; count++) { | |
servo_pos = defaultpos_fr - (count*10); | |
servo_fr.write(servo_pos); | |
delay(30); | |
} | |
for (count = 0; count <= 5; count++) { | |
servo_pos = defaultpos_fl + (count*10); | |
servo_fl.write(servo_pos); | |
delay(30); | |
} | |
delay(500); | |
for (count = 5; count >= 0; count--) { | |
servo_pos = defaultpos_fr - (count*10); | |
servo_fr.write(servo_pos); | |
delay(30); | |
} | |
for (count = 5; count >= 0; count--) { | |
servo_pos = defaultpos_fl + (count*10); | |
servo_fl.write(servo_pos); | |
delay(30); | |
} | |
} | |
void dance_5() | |
{ | |
int count, servo_pos; | |
for (count = 0; count <= 4; count++) { | |
servo_pos = defaultpos_fl + (count*10); | |
servo_fl.write(servo_pos); | |
servo_pos = defaultpos_fr - (count*10); | |
servo_fr.write(servo_pos); | |
delay(50); | |
} | |
delay(500); | |
for (count = 4; count >= 0; count--) { | |
servo_pos = defaultpos_fl + (count*10); | |
servo_fl.write(servo_pos); | |
servo_pos = defaultpos_fr - (count*10); | |
servo_fr.write(servo_pos); | |
delay(50); | |
} | |
} | |
void dance_6() | |
{ | |
int count, servo_pos, i; | |
for (count = 0; count <= 2; count++) { | |
servo_pos = defaultpos_ll - (count*10); | |
servo_ll.write(servo_pos); | |
servo_pos = defaultpos_lr - (count*10); | |
servo_lr.write(servo_pos); | |
delay(30); | |
} | |
delay(500); | |
for (i = 0; i < 3; i++) { | |
for (count = 0; count <= 4; count++) { | |
servo_pos = defaultpos_ll + (count*10) - 20; | |
servo_ll.write(servo_pos); | |
servo_pos = defaultpos_lr - (count*10); | |
servo_lr.write(servo_pos); | |
delay(30); | |
} | |
delay(500); | |
for (count = 0; count <= 4; count++) { | |
servo_pos = defaultpos_ll - (count*10) + 20; | |
servo_ll.write(servo_pos); | |
servo_pos = defaultpos_lr - (count*10); | |
servo_lr.write(servo_pos); | |
delay(30); | |
} | |
delay(500); | |
} | |
} | |
void setup() | |
{ | |
servo_ll.attach(SERVO_LL); | |
servo_lr.attach(SERVO_LR); | |
servo_fl.attach(SERVO_FL); | |
servo_fr.attach(SERVO_FR); | |
stand(); | |
delay(5000); | |
} | |
void loop() | |
{ | |
dance_6(); | |
stand(); | |
dance_3(); | |
stand(); | |
dance_4(); | |
stand(); | |
delay(5000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment