Advertisement
tomateblue

TestMotor3.15159265

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