Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion apps/tuya.ai/your_otto_robot/include/tuya_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
*/

#ifndef TUYA_PRODUCT_ID
#define TUYA_PRODUCT_ID "aub53kai42j8fdlf"
#define TUYA_PRODUCT_ID "b05nl7xoijx4fwae" // Otto Ninja Robot
//#define TUYA_PRODUCT_ID "aub53kai42j8fdlf" // Otto Robot
#endif

#define TUYA_OPENSDK_UUID "uuidxxxxxxxxxxxxxxxx" // Please change the correct uuid
Expand Down
3 changes: 3 additions & 0 deletions apps/tuya.ai/your_otto_robot/src/otto_ninja/3D_Models/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CC-BY-SA 4.0 and GPLv3
Original authors: cparrapa Brian,GreenShadeZhang, etc.
Original Community: Otto DIY
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
38 changes: 22 additions & 16 deletions apps/tuya.ai/your_otto_robot/src/otto_ninja/otto_ninja_app_servo.c
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,10 @@ void servo_write(uint8_t pin, uint16_t angle)
// Set duty cycle
tkl_pwm_duty_set(pwm_id, duty);

// PR_NOTICE("servo_write: pin=%d, angle=%d, pulse_width=%d us, duty=%d%%",
// pin, angle, pulse_width, duty);
// Calculate duty percentage (duty range 1-10000 corresponds to 0.01%-100%)
// float duty_percent = (float)duty / 100.0f;
// PR_NOTICE("servo_write: pin=%d, angle=%d, pulse_width=%d us, duty=%d (%.2f%%)",
// pin, angle, pulse_width, duty, duty_percent);
// Ensure PWM is running
tkl_pwm_start(pwm_id);
}
Expand Down Expand Up @@ -368,6 +370,15 @@ void servo_detach(uint8_t pin)
delay_ms(400);
#endif

// Attach leg servos
servo_attach(SERVO_LEFT_LEG_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
servo_attach(SERVO_RIGHT_LEG_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);

// Set leg positions
servo_write(SERVO_LEFT_LEG_PIN, LA0);
servo_write(SERVO_RIGHT_LEG_PIN, RA0);
delay_ms(1000);

// Attach feet servos
servo_attach(SERVO_LEFT_FOOT_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
servo_attach(SERVO_RIGHT_FOOT_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
Expand All @@ -377,14 +388,7 @@ void servo_detach(uint8_t pin)
servo_write(SERVO_RIGHT_FOOT_PIN, 90);
delay_ms(400);

// Attach leg servos
servo_attach(SERVO_LEFT_LEG_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
servo_attach(SERVO_RIGHT_LEG_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);

// Set leg positions
servo_write(SERVO_LEFT_LEG_PIN, LA0);
servo_write(SERVO_RIGHT_LEG_PIN, RA0);
delay_ms(400);


// Detach all servos
servo_detach(SERVO_LEFT_FOOT_PIN);
Expand All @@ -405,6 +409,7 @@ void servo_detach(uint8_t pin)
*/
void robot_set_walk(void)
{
PR_NOTICE("robot_set_walk");
#if ARM_HEAD_ENABLE == 1
// Arms to middle position
servo_attach(SERVO_LEFT_ARM_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
Expand All @@ -420,9 +425,9 @@ void servo_detach(uint8_t pin)
servo_attach(SERVO_RIGHT_LEG_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
servo_write(SERVO_LEFT_LEG_PIN, LA0);
servo_write(SERVO_RIGHT_LEG_PIN, RA0);
delay_ms(300);
servo_detach(SERVO_LEFT_LEG_PIN);
servo_detach(SERVO_RIGHT_LEG_PIN);
delay_ms(100);
//servo_detach(SERVO_LEFT_LEG_PIN);
//servo_detach(SERVO_RIGHT_LEG_PIN);

#if ARM_HEAD_ENABLE == 1
// Arms to final position
Expand All @@ -440,6 +445,7 @@ void servo_detach(uint8_t pin)
*/
void robot_set_roll(void)
{
PR_NOTICE("robot_set_roll");
#if ARM_HEAD_ENABLE == 1
// Arms to middle position
servo_attach(SERVO_LEFT_ARM_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
Expand All @@ -456,9 +462,9 @@ void servo_detach(uint8_t pin)
servo_attach(SERVO_RIGHT_LEG_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
servo_write(SERVO_LEFT_LEG_PIN, LA1);
servo_write(SERVO_RIGHT_LEG_PIN, RA1);
delay_ms(300);
servo_detach(SERVO_LEFT_LEG_PIN);
servo_detach(SERVO_RIGHT_LEG_PIN);
delay_ms(100);
// servo_detach(SERVO_LEFT_LEG_PIN);
// servo_detach(SERVO_RIGHT_LEG_PIN);

#if ARM_HEAD_ENABLE == 1
// Arms to final position
Expand Down
30 changes: 29 additions & 1 deletion apps/tuya.ai/your_otto_robot/src/otto_ninja/otto_ninja_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ int get_mode_counter(void){

#define DPID_JOYSTICK_X 103 //joystick_x
#define DPID_JOYSTICK_Y 104 //joystick_y
#define DPID_DIRECTION 105 //direction
OPERATE_RET otto_ninja_dp_obj_proc(dp_obj_recv_t *dpobj)
{
uint32_t index = 0;
Expand Down Expand Up @@ -160,6 +161,33 @@ OPERATE_RET otto_ninja_dp_obj_proc(dp_obj_recv_t *dpobj)
break;
}

case DPID_DIRECTION:{
int8_t direction = dp->value.dp_enum;
if(direction == 0){
set_joystick_y(100);
set_joystick_x(0);
}
else if(direction == 1){
set_joystick_y(-100);
set_joystick_x(0);
}
else if(direction == 2){
set_joystick_y(0);
set_joystick_x(100);
}
else if(direction == 3){
set_joystick_y(0);
set_joystick_x(-100);
}
else if(direction == 4){
set_joystick_y(0);
set_joystick_x(0);
}

PR_DEBUG("direction:%d", direction);
break;
}


default:
break;
Expand Down Expand Up @@ -187,7 +215,7 @@ static void __example_otto_ninja_task(void *param)
PR_NOTICE("=== OttoNinja Servo Control Task Start ===");

main_init();

tal_system_sleep(1000); // Wait 1 second before starting
robot_set_walk();
while (1) {

Expand Down
5 changes: 5 additions & 0 deletions boards/T5AI/T5AI_OTTO/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,9 @@ choice T5AI_OTTO_EX_MODULE
bool "GC9D01 160x160 spi LCD"
select ENABLE_DISPLAY
select ENABLE_LVGL_OS_FREERTOS if (LVGL_VERSION_9)

config T5AI_OTTO_EX_MODULE_GC9D01
bool "GC9D01 160x160 spi LCD"
select ENABLE_DISPLAY
select ENABLE_LVGL_OS_FREERTOS if (LVGL_VERSION_9)
endchoice
8 changes: 4 additions & 4 deletions boards/T5AI/T5AI_OTTO/t5ai_otto.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
#include "tdd_button_gpio.h"
#endif

#if defined(T5AI_OTTO_EX_MODULE_13565LCD) && (T5AI_OTTO_EX_MODULE_13565LCD == 1)
#include "tdd_disp_st7789.h"
#elif defined(T5AI_OTTO_EX_MODULE_ST7735S_XLT) && (T5AI_OTTO_EX_MODULE_ST7735S_XLT == 1)
#include "tdd_disp_st7735s.h"
#if defined(T5AI_OTTO_EX_MODULE_ST7789) && (T5AI_OTTO_EX_MODULE_ST7789 == 1)
#include "tdd_disp_st7789.h"
#elif defined(T5AI_OTTO_EX_MODULE_ST7735S_XLT) && (T5AI_OTTO_EX_MODULE_ST7735S_XLT == 1)
#include "tdd_disp_spi_st7735s_xlt.h"
#elif defined(T5AI_OTTO_EX_MODULE_GC9D01) && (T5AI_OTTO_EX_MODULE_GC9D01 == 1)
#include "tdd_disp_gc9d01.h"
#endif
Expand Down
Loading