Skip to content

Instantly share code, notes, and snippets.

@idriszmy
Created March 22, 2022 06:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save idriszmy/633941b7d4faaa1cf2130ca33233fcf9 to your computer and use it in GitHub Desktop.
Save idriszmy/633941b7d4faaa1cf2130ca33233fcf9 to your computer and use it in GitHub Desktop.
Basic Otto DIY movement with Maker Nano
/*
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