Por medio del teclado del pc, se controlan 3 servomotores

Dependencies:   mbed

Committer:
nsnicolassr
Date:
Thu Apr 27 16:50:39 2017 +0000
Revision:
0:991a0eae9d18
Control de motores por medio de comunicacion serial ; ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nsnicolassr 0:991a0eae9d18 1 #include "mbed.h"
nsnicolassr 0:991a0eae9d18 2
nsnicolassr 0:991a0eae9d18 3 Serial pc(USBTX, USBRX);
nsnicolassr 0:991a0eae9d18 4
nsnicolassr 0:991a0eae9d18 5 PwmOut s1(PC_6);
nsnicolassr 0:991a0eae9d18 6 PwmOut s2(PC_8);
nsnicolassr 0:991a0eae9d18 7 PwmOut s3(PC_9);
nsnicolassr 0:991a0eae9d18 8
nsnicolassr 0:991a0eae9d18 9 void servos (int nservo, float grados)
nsnicolassr 0:991a0eae9d18 10 {
nsnicolassr 0:991a0eae9d18 11 float porcentaje;
nsnicolassr 0:991a0eae9d18 12
nsnicolassr 0:991a0eae9d18 13 porcentaje=((grados*0.000277778)+0.05);
nsnicolassr 0:991a0eae9d18 14
nsnicolassr 0:991a0eae9d18 15 switch (nservo)
nsnicolassr 0:991a0eae9d18 16 {
nsnicolassr 0:991a0eae9d18 17 case 1:
nsnicolassr 0:991a0eae9d18 18 s1.write(porcentaje);
nsnicolassr 0:991a0eae9d18 19 wait(0.5);
nsnicolassr 0:991a0eae9d18 20 break;
nsnicolassr 0:991a0eae9d18 21
nsnicolassr 0:991a0eae9d18 22 case 2:
nsnicolassr 0:991a0eae9d18 23 s2.write(porcentaje);
nsnicolassr 0:991a0eae9d18 24 wait(0.5);
nsnicolassr 0:991a0eae9d18 25 break;
nsnicolassr 0:991a0eae9d18 26
nsnicolassr 0:991a0eae9d18 27 case 3:
nsnicolassr 0:991a0eae9d18 28 s3.write(porcentaje);
nsnicolassr 0:991a0eae9d18 29 wait(0.5);
nsnicolassr 0:991a0eae9d18 30 break;
nsnicolassr 0:991a0eae9d18 31
nsnicolassr 0:991a0eae9d18 32 default:
nsnicolassr 0:991a0eae9d18 33 s1.write( 0.05);
nsnicolassr 0:991a0eae9d18 34 s2.write( 0.05);
nsnicolassr 0:991a0eae9d18 35 s3.write( 0.05);
nsnicolassr 0:991a0eae9d18 36 wait(0.5);
nsnicolassr 0:991a0eae9d18 37 break;
nsnicolassr 0:991a0eae9d18 38 }
nsnicolassr 0:991a0eae9d18 39 }
nsnicolassr 0:991a0eae9d18 40
nsnicolassr 0:991a0eae9d18 41
nsnicolassr 0:991a0eae9d18 42
nsnicolassr 0:991a0eae9d18 43 int main()
nsnicolassr 0:991a0eae9d18 44 {
nsnicolassr 0:991a0eae9d18 45 pc.printf("Hello World!\n");
nsnicolassr 0:991a0eae9d18 46 pc.printf("Para mover el motor digite el numero del motor seguido de los angulos ");
nsnicolassr 0:991a0eae9d18 47
nsnicolassr 0:991a0eae9d18 48 while(1)
nsnicolassr 0:991a0eae9d18 49 {
nsnicolassr 0:991a0eae9d18 50 if (pc.readable())
nsnicolassr 0:991a0eae9d18 51 {
nsnicolassr 0:991a0eae9d18 52 char command= pc.getc();
nsnicolassr 0:991a0eae9d18 53
nsnicolassr 0:991a0eae9d18 54 switch(command)
nsnicolassr 0:991a0eae9d18 55 {
nsnicolassr 0:991a0eae9d18 56 case '1':
nsnicolassr 0:991a0eae9d18 57 servos (1, 180);
nsnicolassr 0:991a0eae9d18 58 wait(2);
nsnicolassr 0:991a0eae9d18 59 break;
nsnicolassr 0:991a0eae9d18 60 case '2':
nsnicolassr 0:991a0eae9d18 61 servos (2, 180);
nsnicolassr 0:991a0eae9d18 62 wait(2);
nsnicolassr 0:991a0eae9d18 63 break;
nsnicolassr 0:991a0eae9d18 64 case '3':
nsnicolassr 0:991a0eae9d18 65 servos (3, 180);
nsnicolassr 0:991a0eae9d18 66 wait(2);
nsnicolassr 0:991a0eae9d18 67 break;
nsnicolassr 0:991a0eae9d18 68 case '4':
nsnicolassr 0:991a0eae9d18 69 servos (1, 0);
nsnicolassr 0:991a0eae9d18 70 servos (2, 0);
nsnicolassr 0:991a0eae9d18 71 servos (3, 0);
nsnicolassr 0:991a0eae9d18 72 wait(2);
nsnicolassr 0:991a0eae9d18 73 break;
nsnicolassr 0:991a0eae9d18 74 }
nsnicolassr 0:991a0eae9d18 75 }
nsnicolassr 0:991a0eae9d18 76 }
nsnicolassr 0:991a0eae9d18 77 }
nsnicolassr 0:991a0eae9d18 78
nsnicolassr 0:991a0eae9d18 79