TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: bryanenriquemtz en 24 de Noviembre de 2021, 22:22:25
-
hola me podria ayudar tengo que mover 6 servos 4 con joystick y 2 con botones el codigo si mueve los 4 motore con los joystic pero falta los botones para mover los dos servos restantes (izquierda, derecha)
#include <16f877a.h>
#device ADC = 10
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOLVP,BROWNOUT
#use delay(clock=20M)
#use standard_io(D)
#define use_servo_1 // Utiliza el servo 1
#define servo_1 PIN_D0 // Pin del servo 1
#define use_servo_2 // Utiliza el servo 2
#define servo_2 PIN_D1 // Pin del servo 2
#define use_servo_3 // Utiliza el servo 3
#define servo_3 PIN_D2 // Pin del servo 3
#define use_servo_4 // Utiliza el servo 4
#define servo_4 PIN_D3 // Pin del servo 4
#define use_servo_5 // Utiliza el servo 5
#define SERVO_5 PIN_D4 // Pin del servo 5
#define use_servo_6 // Utiliza el servo 6
#define SERVO_6 PIN_D5 // Pin del servo 6
#include <servo_st.c> // Libreria para el manejo de servomotores
#include <map_function.c> // Libreria para conversiones
void main()
{
setup_adc_ports(ALL_ANALOG);
setup_adc(adc_clock_internal);
servo_init(); // Inicializa el servo
while(true)
{
set_adc_channel(0);
delay_us(20);
long valor_adc = read_adc();
int angulo = map(valor_adc, 0, 1023, 0,180);
servo_1_write(angulo); //control servo1
{
set_adc_channel(1);
delay_us(20);
long valor_adc = read_adc();
int angulo = map(valor_adc, 0, 1023, 0,180);
servo_2_write(angulo); //control servo2
{
set_adc_channel(2);
delay_us(20);
long valor_adc = read_adc();
int angulo = map(valor_adc, 0, 1023, 0,180);
servo_3_write(angulo); //control servo3
{
set_adc_channel(3);
delay_us(20);
long valor_adc = read_adc();
int angulo = map(valor_adc, 0, 1023, 0,180);
servo_4_write(angulo); //control servo4
}
}
}
}
}