Autor Tema: pic 16f887a servo control joystick y boton  (Leído 1361 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado bryanenriquemtz

  • PIC10
  • *
  • Mensajes: 1
pic 16f887a servo control joystick y boton
« 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
     
      }
      }
        }
  }
}