3D tryckta ormen robot (6 / 7 steg)
Steg 6: Program
Programmet använder programvara servo för att kontrollera 8 servon på en gång. Det är helt enkelt öka och minska servo position med liten förskjutning att imitera våg. Tack vare detta drag är det ser ut som en mask utan också steg effektivare.
Om du som du kan ändra fördröjningen i slutet av slingan. Denna fördröjning kontroll hastighet orm. Så om du ger mindre värde det kommer att gå snabbare, högre värde = flytta långsammare. Jag gav 6 eftersom detta är högsta hastigheten vid vilken orm inte rullar över. Men du kan experimentera med detta.
Du kan också ändra högsta och lägsta värde för att göra rörelser större.
#include
SoftwareServo servo1, servo2, servo3, servo4, servo5, servo6, servo7, servo8;
int b_pos, c_pos, d_pos, e_pos;
Sträng, kommando;
int skillnaden = 30.
int angle1 = 90.
int angle2 = 150;
int ser1 = 30.
int ser2 = 70.
int ser3 = 110.
int ser4 = 150;
int minsta = 40;
int maximala = 170;
bool increment_ser1 = sant;
bool increment_ser2 = sant;
bool increment_ser3 = sant;
bool increment_ser4 = sant;
bool increment_ser5 = sant;
int ser5 = 90.
bool increment_ser6 = sant;
int ser6 = 90.
void setup() {
Serial.BEGIN(9600);
servo1.attach(3);
servo2.attach(5);
servo3.attach(6);
servo4.attach(9);
servo5.attach(10);
servo6.attach(11);
servo7.attach(12);
servo8.attach(13);
servo1.write(90);
servo2.write(130);
servo3.write(90);
servo4.write(100);
servo5.write(90);
servo6.write(90);
servo7.write(90);
servo8.write(90);
}
void loop() {
Forward();
SoftwareServo::refresh();
}
void forward() {
IF(increment_ser1) {
ser1 ++;
} annat {
ser1--;
}
IF(ser1 < minimum) {
increment_ser1 = sant;
}
IF(ser1 > maximum) {
increment_ser1 = false;
}
servo1.write(ser1);
IF(increment_ser2) {
ser2 ++;
} annat {
ser2--;
}
IF(ser2 < minimum) {
increment_ser2 = sant;
}
IF(ser2 > maximum) {
increment_ser2 = false;
}
servo3.write(ser2);
IF(increment_ser3) {
ser3 ++;
} annat {
ser3--;
}
IF(ser3 < minimum) {
increment_ser3 = sant;
}
IF(ser3 > maximum) {
increment_ser3 = false;
}
servo5.write(ser3);
IF(increment_ser4) {
ser4 ++;
} annat {
ser4--;
}
IF(ser4 < minimum) {
increment_ser4 = sant;
}
IF(ser4 > maximum) {
increment_ser4 = false;
}
servo7.write(ser4);
Delay(6);
}