14
社区成员




模型及相关资料下载:https://www.printables.com/model/167489-lee-humanoid-robot
推荐IDE: https://github.com/technologiescollege/ArduinoTechnoEduc
所需其他库:
BatReader9.h (新建BatReader9文件夹及BatReader9.h,加到:ArduinoTechnoEduc\portable\sketchbook\libraries\BatReader9 路径下)
/******************************************************************************
* Battery Reader Library
* @author Raul de Pablos Martin
* Adapted for OTTO
******************************************************************************/
#ifndef __BATREADER9_H__
#define __BATREADER9_H__
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#include "pins_arduino.h"
#endif
////////////////////////////
// Definitions //
////////////////////////////
//#define BAT_PIN A7
#define BAT_MAX 4.2
#define BAT_MIN 3.25
#define ANA_REF 5
#define SLOPE 100/(BAT_MAX - BAT_MIN)
#define OFFSET (100*BAT_MIN)/(BAT_MAX - BAT_MIN)
class BatReader9
{
public:
////////////////////////////
// Enumerations //
////////////////////////////
////////////////////////////
// Variables //
////////////////////////////
////////////////////////////
// Functions //
////////////////////////////
// BatReader -- BatReader class constructor
//BatReader();
void init(byte BAT_PIN);
// readBatPercent
double readBatVoltage(void);
// readBatPercent
double readBatPercent(void);
private:
////////////////////////////
// Enumerations //
////////////////////////////
////////////////////////////
// Variables //
////////////////////////////
////////////////////////////
// Functions //
////////////////////////////
byte BAT_PIN;
};
#endif // BATREADER2_H //
项目源代码:
#include <Otto9Humanoid.h>
Otto9Humanoid Otto;
#include <Servo.h>
int Velocidad;
int Pausa;
int Centro;
int Mov_Cabeza;
int Cabeza_LH;
int Cabeza_RH;
#define PIN_YL 2 // left leg, servo[0]
#define PIN_YR 3 // right leg, servo[1]
#define PIN_RL 4 // left foot, servo[2]
#define PIN_RR 5 // right foot, servo[3]
#define PIN_LA 6 //servo[4] Left arm
#define PIN_RA 7 //servo[5] Right arm
#define PIN_Trigger 8 // ultrasound
#define PIN_Echo 9 // ultrasound
#define PIN_NoiseSensor A6
#define PIN_Buzzer 13 //buzzer
Servo servo_10;
long temps1=0 ;
void setup() {
Otto.initHUMANOID(PIN_YL, PIN_YR, PIN_RL, PIN_RR, PIN_LA, PIN_RA, true, PIN_NoiseSensor, PIN_Buzzer, PIN_Trigger, PIN_Echo);
servo_10.attach(10);
}
void loop() {
if ((millis()-temps1)>=1*1000) {
temps1=millis();
delay(500);
Otto.sing(S_mode3);
delay(500);
Otto.walk(1, 2000 ,1); // FORWARD
Otto.walk(1, 2000 ,1); // FORWARD
delay(500);
Velocidad = 30;
Pausa = 200;
Centro = 80;
Mov_Cabeza = 80;
Cabeza_LH = 120;
Cabeza_RH = 40;
Otto.moonwalker(1, 2000 , 40 , -1);
while (Cabeza_RH <= Mov_Cabeza) {
servo_10.write(Mov_Cabeza);
Mov_Cabeza = Mov_Cabeza - 1;
delay(Velocidad);
}
delay(Pausa);
Otto.sing(S_sleeping);
while (Mov_Cabeza <= Centro) {
servo_10.write(Mov_Cabeza);
Mov_Cabeza = Mov_Cabeza + 1;
delay(Velocidad);
}
delay(Pausa);
Otto.moonwalker(1, 2000 , 40 , 1);
while (Cabeza_LH >= Mov_Cabeza) {
servo_10.write(Mov_Cabeza);
Mov_Cabeza = Mov_Cabeza + 1;
delay(Velocidad);
}
delay(Pausa);
Otto.sing(S_sleeping);
while (Mov_Cabeza >= Centro) {
servo_10.write(Mov_Cabeza);
Mov_Cabeza = Mov_Cabeza - 1;
delay(Velocidad);
}
delay(Pausa);
Otto.sing(S_mode3);
}
}
玩的愉快!