Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.69 KB | None | 0 0
  1. #define viteza_mica 120
  2. #define viteza_micaB 70
  3. #define viteza_mare 180
  4. #define viteza_mareB 100
  5.  
  6. //motor MARE
  7. int dirmotorA=8;
  8. int pwmmotorA=9;
  9.  
  10. //motor mic
  11. int dir1motorB=10;
  12. int dir2motorB=11;
  13. int analogpin=2;
  14. int sem=2;
  15.  
  16. void slowdown(int viteza)
  17. {
  18.   if (sem == 2)
  19.     analogWrite(pwmmotorA,0);
  20.   else
  21.   {
  22.     for (int i=viteza; i>=80; i--)
  23.     {
  24.       analogWrite(pwmmotorA,i);
  25.       delay(10);
  26.     }
  27.     analogWrite(pwmmotorA,0);
  28.   }
  29. }
  30.  
  31. void setup()
  32. {
  33.   pinMode(dirmotorA,OUTPUT);
  34.   pinMode(pwmmotorA,OUTPUT);
  35.  
  36.   pinMode(dir1motorB,OUTPUT);
  37.   pinMode(dir2motorB,OUTPUT);
  38.   pinMode(analogpin,OUTPUT);
  39.   Serial.begin(9600);
  40. }
  41.  
  42. void loop()
  43. {
  44.   int i,viteza,val;
  45.   boolean isValidInput;
  46.   Serial.println( "-----------------------------" );
  47.   Serial.println( "MENU:" );
  48.   Serial.println( "1) Fast SPEED" );
  49.   Serial.println( "2) Low SPEED" );
  50.   Serial.println( "3) Soft stop (coast)" );
  51.   Serial.println( "4) Left" );
  52.   Serial.println( "5) Right" );
  53.   Serial.println( "6) Hard stop (brake)" );
  54.   Serial.println( "7) Forward" );
  55.   Serial.println( "-----------------------------" );
  56.   do
  57.   {
  58.     byte c;
  59.     while( !Serial.available() );
  60.     c = Serial.read();
  61.     switch( c )
  62.     {
  63.       case '1': // 1) Fast SPEED
  64.         Serial.println( "Fast SPEED..." );
  65.         digitalWrite(dirmotorA,LOW);
  66.         analogWrite(pwmmotorA,viteza_mare);
  67.         sem = 1;
  68.         isValidInput = true;
  69.         break;      
  70.          
  71.       case '2': // 2) Low SPEED      
  72.         Serial.println( "Low SPEED..." );
  73.         digitalWrite(dirmotorA,LOW);
  74.         analogWrite(pwmmotorA,viteza_mica);
  75.         sem = 0;
  76.         isValidInput = true;
  77.         break;
  78.          
  79.       case '3': // 3) Soft stop
  80.         Serial.println( "Soft stop" );
  81.         digitalWrite(dirmotorA,LOW);
  82.         if (sem == 1)
  83.           viteza = viteza_mare;
  84.         else
  85.           viteza = viteza_mica;
  86.          
  87.         slowdown(viteza);
  88.  
  89.         digitalWrite(dir1motorB,LOW);
  90.         digitalWrite(dir2motorB,LOW);
  91.         isValidInput = true; sem = 2;
  92.         break;      
  93.  
  94.       case '4': // 4) Left
  95.         Serial.println( "Left" );
  96.         digitalWrite(dirmotorA,LOW);
  97.         if (sem == 1)
  98.           analogWrite(pwmmotorA,viteza_mare);
  99.         else
  100.           analogWrite(pwmmotorA,viteza_mica);
  101.        
  102.         digitalWrite(dir1motorB,LOW);
  103.         digitalWrite(dir2motorB,HIGH);
  104.         analogWrite(dir1motorB,viteza_mareB);
  105.         digitalWrite(dir2motorB,LOW);
  106.  
  107.         delay(1000);
  108.         val = analogRead(analogpin);
  109.         isValidInput = true;
  110.         break;      
  111.      
  112.       case '5': // 5) Right
  113.         Serial.println( "Right" );
  114.         digitalWrite(dirmotorA,LOW);
  115.         if (sem == 1)
  116.           analogWrite(pwmmotorA,viteza_mare);
  117.         else
  118.           analogWrite(pwmmotorA,viteza_mica);
  119.        
  120.         digitalWrite(dir1motorB,HIGH);
  121.         digitalWrite(dir2motorB,LOW);
  122.         analogWrite(dir2motorB,viteza_mareB);
  123.         digitalWrite(dir1motorB,LOW);
  124.         delay(1000);
  125.        
  126.         isValidInput = true;
  127.         break;
  128.        
  129.       case '6': // 6) Hard stop
  130.         Serial.println( "Hard stop" );
  131.         if (sem == 1)
  132.           analogWrite(pwmmotorA,viteza_mare);
  133.         else
  134.           analogWrite(pwmmotorA,viteza_mica);
  135.         analogWrite(pwmmotorA,0);
  136.        
  137.         digitalWrite(dir1motorB,LOW);
  138.         digitalWrite(dir2motorB,LOW);
  139.         isValidInput = true;
  140.         break;      
  141.      
  142.       case '7': // 7) Forward
  143.        
  144.         Serial.println(sem);
  145.         Serial.println( "Forward" );
  146.         digitalWrite(dirmotorA,LOW);
  147.        
  148.         if (sem == 1)
  149.           analogWrite(pwmmotorA,viteza_mare);
  150.         else
  151.           analogWrite(pwmmotorA,viteza_mica);
  152.        
  153.         val = analogRead(analogpin);
  154.         if (val <= 450)
  155.         {
  156.           digitalWrite(dir1motorB,LOW);
  157.           digitalWrite(dir2motorB,HIGH);
  158.           while (val <= 400)
  159.           {
  160.             analogWrite(dir2motorB,150);
  161.             val = analogRead(analogpin);
  162.             Serial.println(val);
  163.           }
  164.           digitalWrite(dir2motorB,LOW);
  165.         }
  166.         else
  167.         {
  168.           digitalWrite(dir1motorB,HIGH);
  169.           digitalWrite(dir2motorB,LOW);
  170.           while (val >= 600)
  171.           {
  172.             analogWrite(dir1motorB,150);
  173.             val = analogRead(analogpin);
  174.             Serial.println(val);
  175.           }
  176.           digitalWrite(dir1motorB,LOW);
  177.         }
  178.        
  179.         isValidInput = true;
  180.         break;
  181.       default:
  182.         if (c > 7 || c < 1)
  183.           Serial.println("Wrong character!");
  184.        
  185.         isValidInput = false;
  186.         break;
  187.     }
  188.   } while( isValidInput == true );
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement