Advertisement
tomateblue

TestMotor3.151592

Nov 8th, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. // variaveis
  2. int p1,p2,p3,p4; // Pinos do motor conforme o circuito base.
  3. byte i;
  4. unsigned long t;
  5. int x = 0;
  6. String ler;
  7. int numero;
  8. int j=0;
  9. char letra;
  10.  
  11.  
  12.  
  13.  
  14. // funcoes
  15. void left(byte B);
  16. void right(byte B);
  17. void motor(int posicao,int velocidade);
  18. int setVelMotor(int _vel);
  19. void setMotor(int _p1, int _p2, int _p3, int _p4);
  20.  
  21.  
  22.  
  23.  
  24. void setup() {
  25.   Serial.begin(9600);
  26.   Serial.print("\n\n\n");
  27.   Serial.print("Digita a direcao e a velocidade\n[ l => left ]\n[ r => right ]\nEX => r10 (right 10 miliseconds por rotacao)\n>> ");
  28.   p1 = 2;  
  29.   p2 = 3;  
  30.   p3 = 4;  
  31.   p4 = 5;  
  32.   setMotor(p1, p2, p3, p4);
  33.  
  34.   i = 1;
  35.   t = millis();
  36. }
  37.  
  38. void loop() {
  39.  if (Serial.available() > 0){
  40.   ler = Serial.readString();
  41.   Serial.print(ler);
  42.   Serial.print("\n");    
  43.  
  44.    for (i = 0; ler[i]; i++ )
  45.   {
  46.     if (ler[i] == 'l') {
  47.       letra = 'l';
  48.       ler[i]= '0';    
  49.       numero = ler.toInt();  
  50.     }
  51.     if (ler[i] == 'r') {
  52.       letra = 'r';
  53.       ler[i] = '0';
  54.       numero = ler.toInt();  
  55.     }
  56.   }
  57.   if (letra == 'l') motor(1,numero);
  58.   if (letra == 'r') motor(0,numero);
  59.  }
  60. }
  61.  
  62. void setMotor(int _p1, int _p2, int _p3, int _p4)
  63. {
  64.  pinMode(_p1,OUTPUT);
  65.  pinMode(_p2,OUTPUT);
  66.  pinMode(_p3,OUTPUT);
  67.  pinMode(_p4,OUTPUT);
  68. }
  69.  
  70. void motor(int posicao,int velocidade){
  71.   int vel;
  72.   vel = setVelMotor(velocidade);
  73.   switch(posicao){
  74.   case 0:  
  75.    for (x = 0; x < 100;x++ ){
  76.     Serial.print(x);
  77.     Serial.print(":");
  78.     if ((millis() - t) > 20 ) {
  79.     right(i);
  80.     i *= 2;
  81.     if (i > 8) i = 1;
  82.     delay(vel); // a bad usar sapoha de delay
  83.      }
  84.     }
  85.    break;
  86.  
  87.  
  88.   case 1:
  89.    for (x = 0; x < 100; x++){
  90.     Serial.print(x);
  91.     Serial.print(".");
  92.     if ((millis() - t) > 20 ) {
  93.     left(i);
  94.     i *= 2;
  95.     if (i > 8) i = 1;
  96.     delay(vel); // a bad usar sapoha de delay
  97.      }
  98.     }
  99.   }
  100. }
  101.  
  102.  
  103. int setVelMotor(int rpm)
  104. {
  105.   t = 60000 /(rpm * 64);
  106.   return t;
  107. }
  108.  
  109. void left(byte B) {
  110.  
  111.   bool bit;
  112.   byte aux = B;
  113.  
  114.   bit = aux % 2;
  115.   digitalWrite(p1, bit);
  116.  
  117.   aux = aux >> 1;
  118.   bit = aux % 2;
  119.   digitalWrite(p2, bit);
  120.  
  121.   aux = aux >> 1;
  122.   bit = aux % 2;
  123.   digitalWrite(p3, bit);
  124.  
  125.   aux = aux >> 1;
  126.   bit = aux % 2;
  127.   digitalWrite(p4, bit);
  128. }
  129.  
  130. void right(byte B) {
  131.  
  132.   bool bit;
  133.   byte aux = B;
  134.  
  135.   bit = aux % 2;
  136.   digitalWrite(p4, bit);
  137.  
  138.   aux = aux >> 1;
  139.   bit = aux % 2;
  140.   digitalWrite(p3, bit);
  141.  
  142.   aux = aux >> 1;
  143.   bit = aux % 2;
  144.   digitalWrite(p2, bit);
  145.  
  146.   aux = aux >> 1;
  147.   bit = aux % 2;
  148.   digitalWrite(p1, bit);
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement