Advertisement
FokaKefir

SUCA project

Aug 7th, 2019
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.60 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2.  
  3. //Constants
  4. #define DEF_FORWARD 'f'
  5. #define DEF_BACK 'b'
  6. #define DEF_STOP 's'
  7. #define DEF_LEFT 'l'
  8. #define DEF_RIGHT 'r'
  9. #define DEF_STRAIGHT '$'
  10.  
  11. #define STATE_STOP 1
  12. #define STATE_FORWARD 2
  13. #define STATE_BACK 3
  14.  
  15. #define DIR_STRAIGHT 1
  16. #define DIR_RIGHT 2
  17. #define DIR_LEFT 3
  18.  
  19. #define SPEED_STOP 0
  20. #define SPEED_ONE 100
  21. #define SPEED_TWO 180
  22. #define SPEED_THREE 255
  23.  
  24.  
  25. //Decl widgets
  26. char data;
  27. short state;
  28. short iDirection;
  29. short iSpeed;
  30.  
  31. short leftOutForward= 3;
  32. short leftOutBack= 5;
  33.  
  34. short rightOutForward= 6;
  35. short rightOutBack= 9;
  36.  
  37.  
  38. SoftwareSerial mySerial(10, 11);
  39.  
  40.  
  41. void setup() {
  42.  
  43.     //Setting the Outputs
  44.     pinMode(leftOutForward, OUTPUT);
  45.     pinMode(leftOutBack, OUTPUT);
  46.     pinMode(rightOutForward, OUTPUT);
  47.     pinMode(rightOutBack, OUTPUT);
  48.  
  49.     // Default communication rate of the Bluetooth module
  50.     mySerial.begin(9600);
  51.     Serial.begin(9600);
  52.  
  53.     //Init variables
  54.     data=' ';
  55.     state=STATE_STOP;
  56.     iDirection=DIR_STRAIGHT;
  57.     iSpeed=SPEED_THREE;
  58.  
  59.     Serial.print("Decl is it ok");
  60.  
  61. }
  62.  
  63.  
  64. void goForward(){
  65.  
  66.     int lSpeed=iSpeed;
  67.     int rSpeed=iSpeed;
  68.    
  69.     switch(iDirection){
  70.         case DIR_LEFT:
  71.             lSpeed/=2;
  72.             break;
  73.            
  74.         case DIR_RIGHT:
  75.             rSpeed/=2;
  76.             break;
  77.     }
  78.    
  79.  
  80.     //Serial.println("Forward");
  81.  
  82.     analogWrite(leftOutForward, lSpeed);
  83.     analogWrite(leftOutBack, LOW);
  84.     analogWrite(rightOutForward, rSpeed);
  85.     analogWrite(rightOutBack, LOW);
  86. }
  87. void goBack(){
  88.    
  89.     int lSpeed=iSpeed;
  90.     int rSpeed=iSpeed;
  91.    
  92.     switch(iDirection){
  93.         case DIR_LEFT:
  94.             lSpeed/=2;
  95.             break;
  96.            
  97.         case DIR_RIGHT:
  98.             rSpeed/=2;
  99.             break;
  100.     }
  101.    
  102.     //Serial.println("Back");
  103.    
  104.     analogWrite(leftOutForward, LOW);
  105.     analogWrite(leftOutBack, lSpeed);
  106.     analogWrite(rightOutForward, LOW);
  107.     analogWrite(rightOutBack, rSpeed);
  108. }
  109. void goStop(){
  110.  
  111.     //Serial.println("Stop");
  112.    
  113.     analogWrite(leftOutForward, LOW);
  114.     analogWrite(leftOutBack, LOW);
  115.     analogWrite(rightOutForward, LOW);
  116.     analogWrite(rightOutBack, LOW);
  117.    
  118.     switch(iDirection){
  119.         case DIR_LEFT:
  120.             goLeft();
  121.             break;
  122.            
  123.         case DIR_RIGHT:
  124.             goRight();
  125.             break;
  126.     }
  127.    
  128. }
  129. void goLeft(){
  130.    
  131.     //Serial.println("Left");
  132.    
  133.     analogWrite(leftOutForward, LOW);
  134.     analogWrite(leftOutBack, iSpeed);
  135.     analogWrite(rightOutForward, iSpeed);
  136.     analogWrite(rightOutBack, LOW);
  137.    
  138. }
  139. void goRight(){
  140.    
  141.     //Serial.println("Right");
  142.    
  143.     analogWrite(leftOutForward, iSpeed);
  144.     analogWrite(leftOutBack, LOW);
  145.     analogWrite(rightOutForward, LOW);
  146.     analogWrite(rightOutBack, iSpeed);
  147. }
  148.  
  149. void loop() {
  150.  
  151.     //Setting the state to ' '
  152.     data=' ';
  153.  
  154.     // Checks whether data is comming from the serial port
  155.     if(mySerial.available() > 0){
  156.        
  157.         // Reads the data from the serial port
  158.         data = mySerial.read();  
  159.  
  160.     Serial.println(data);
  161.  
  162.     }
  163.  
  164.  
  165.     switch(data){
  166.         case DEF_FORWARD:
  167.             state=STATE_FORWARD;
  168.             break;
  169.         case DEF_BACK:
  170.             state=STATE_BACK;
  171.             break;
  172.        
  173.         case DEF_LEFT:
  174.             iDirection=DIR_LEFT;
  175.             break;
  176.         case DEF_RIGHT:
  177.             iDirection= DIR_RIGHT;
  178.             break;
  179.            
  180.         case DEF_STRAIGHT:
  181.             iDirection=DIR_STRAIGHT;
  182.             break;
  183.            
  184.         case DEF_STOP:
  185.             state=STATE_STOP;
  186.             break;
  187.  
  188.     case '0':
  189.       iSpeed=SPEED_STOP;
  190.       break;
  191.      
  192.         case '1':
  193.             iSpeed=SPEED_ONE;
  194.             break;
  195.            
  196.         case '2':
  197.             iSpeed=SPEED_TWO;
  198.             break;
  199.            
  200.         case '3':
  201.             iSpeed=SPEED_THREE;
  202.             break;
  203.  
  204.      
  205.     }
  206.    
  207.     switch(state){
  208.         case STATE_FORWARD:
  209.             goForward();
  210.             break;
  211.            
  212.         case STATE_BACK:
  213.             goBack();
  214.             break;
  215.            
  216.         case STATE_STOP:
  217.             goStop();
  218.             break;
  219.     }
  220.  
  221.     /*
  222.     Serial.print(state);
  223.     Serial.print("  ");
  224.     Serial.print(iDirection);
  225.     Serial.println();
  226.     */
  227.    
  228.  
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement