Je me suis enfin décidé à faire mon premier robot, un robot simple avec:
- une plaque de bois en guise chassis
- 2 servos et une roue folle pour dirriger le tout
- un PIC 16F877A pour controler le robot
- etc etc
J'essaye de programmer le robot en C grâce au logiciel CCS, j'utilise les fonctions du
fichier SERVO.C integré à ce compilateur pour faire tourner les servos (pour le moment sa m'aide).
Aujourd'hui j'ai voulu ajouter des micro-switch au robot pour le faire tourner dès qu'il touche
un mur ou un autre obstacle...
J'ai d'abord fais un programme simple avec un seul servo et un seul switch, le voici:
#include <16f877A.h> #fuses HS, NOWDT, NOPROTECT, NOLVP, NOPUT, NOBROWNOUT #use delay(clock=4000000) #include <servos.c> #define SD pin_B4 //SD = Switch Droit void main() { while(1) { if(input(SD)==1) { set_servo(0, 0, 2); } else { set_servo(0, 1, 2); } } }
fonction set_servo(coté, sens, vitesse):
-coté: servo coté gauche=0 (pin_D6) ou droit=1 (pin_D7)
-sens: avance=0 et recul=1
-vitesse=1, 2, 3 ou 4
lorsque j'appuie sur le switch le servo à beaucoup de mal à tourner et je ne comprend pas
pourquoi, est ce que j'ai oublier quelques choses ?
Merci d'avance