1930plasteac
Перейти к навигации
Перейти к поиску
//
// 2024.01.16 umkiedu@gmail.com
// Танцующий робот на 4-х сервомоторах Plasteac
// https://chapelierfou.org/2017/04/plasteac-a-dancing-teapot/
// https://chapelierfou.org/2017/04/plasteac-enhancements/
// https://vimeo.com/214493309
// https://disk.yandex.ru/d/LwFjnGB7dctMHg - полный архив файлов. Подправить массив servoPins[4] - на 4 присоединенных мотора
//
// ---------- Pin setup ----------
const int servoPins[4] = {9, 6, 7, 8};
const int speakerPin = 12; // connected to a piezzo speaker
// -------- Servo offsets --------
const int leftHipOffset = 5;
const int rightHipOffset = 5;
const int leftFootOffset = 10;
const int rightFootOffset = 10;
// ------------- BPM -------------
long bpm = 120L;
// I'm a little teapot
//const char melody[] = "4C42D44E42F46G46C56A46C56G46R06F44F42G46E46E46D44D42E46C46R07C52A44G42G46F46E46D46C46R0";
// Tetris
const char melody[] = "4E52B42C54D52C52B44A42A42C54E52D52C56B42C54D54E54C54A42A42A42B42C56D52F54A52G52F56E52C54E52D52C54B42B42C54D54E54C54A44A44R0";
#include "move.h"
#include "melody.h"
void sync()
{
// Given set BPM, delay until the next quarter of a beat
static unsigned long lastMillis = 0;
unsigned long duration = 60000L/(bpm*4);
long leftMillis = lastMillis + duration - millis();
if(leftMillis > 0) delay(leftMillis);
lastMillis = millis();
// Update melody
syncMelody();
}
void setup()
{
// Init serial
Serial.begin(9600);
// Init legs
initialize();
delay(4000);
}
void loop()
{
playMelody(melody, false);
stand_rythm(2);
side_left(2);
hello_left(1);
walk(2);
playMelody(melody, false);
stand_rythm(2);
side_right(2);
hello_right(1);
walk(2);
}