Advertisement
Push28

arduino truck control

May 1st, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.90 KB | None | 0 0
  1. // modified from Michal Rinott servo by potentiometer code <http://people.interaction-ivrea.it/m.rinott>
  2. #include <Wire.h>
  3. #include <Servo.h>
  4. Servo myservo;
  5. uint16_t led[8];
  6. char ds[8];
  7. const byte fog = 4;
  8. const byte beam = 2;
  9. const byte flashleft = 8;
  10. const byte flashright = 7;
  11. const byte brakes = 3;
  12. const byte turnleft = 12; //fil orange mobo truck
  13. const byte turnright = 13; // fil blanc/orange truck
  14. const byte avance = 10; //fil bleu mobo truck
  15. const byte reverse = 5; // fil vert mobo truck
  16. const byte horn = 6;
  17. char buffer[25];
  18. byte cam = 88;
  19.  
  20.  
  21. void setup() {
  22.   pinMode(2, OUTPUT);
  23.   pinMode(3, OUTPUT);
  24.   pinMode(4, OUTPUT);
  25.   pinMode(5,OUTPUT);
  26.   pinMode(7, OUTPUT);
  27.   pinMode(8, OUTPUT);
  28.   pinMode(6, OUTPUT);
  29.   pinMode(10, OUTPUT);
  30.   pinMode(12, OUTPUT);
  31.   pinMode(13, OUTPUT);
  32.  
  33.   myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  34.  
  35.   Serial.begin(19200); // Speed of serial port
  36.   Serial.flush();
  37.   Wire.begin(0x02); // join i2c bus (address optional for master)
  38.    Wire.onRequest(requestEvent); // register event
  39.   digitalWrite(reverse,LOW);
  40.     digitalWrite(avance,LOW);
  41.     digitalWrite(turnleft,LOW);
  42.     digitalWrite(turnright,LOW);
  43. }
  44.  
  45.  
  46. void loop() {
  47.   pan();
  48.  
  49.   if (Serial.available() > 0) {
  50.     byte index=0;
  51.     delay(100); // let the buffer fill up
  52.     byte numChar=Serial.available();
  53.     if (numChar>20) {
  54.       numChar=20;
  55.       }
  56.         while (numChar--) {
  57.           buffer[index++] = Serial.read();
  58.           }
  59.     splitString(buffer);
  60.   }
  61.   }
  62.  
  63.  
  64.  
  65. void pan(){
  66.   myservo.write(cam);
  67.   delay(15);
  68. }
  69.  
  70.  
  71. void splitString(char* data) {
  72.  
  73.    char * parameter;
  74.    parameter = strtok (data, " ,");
  75.    while (parameter != NULL) {
  76.      setLED(parameter);
  77.      parameter = strtok (NULL, " ,");
  78.      }// Clear the text and serial buffers
  79.        for (byte x=0; x<20; x++) {
  80.          buffer[x]='\0';
  81.          }
  82.   Serial.flush();
  83. }
  84.  
  85.  
  86. void setLED(char *data) {
  87.  
  88.   Serial.println(data);
  89.  
  90.  ds[0]=data[0];
  91.  ds[1]=data[1];
  92.  ds[2]=data[2];
  93.  ds[3]=data[3];
  94.  ds[4]=data[4];
  95.  ds[5]=data[5];
  96.  ds[6]=data[6];
  97.  Serial.println(ds);
  98.   if (data[0]=='9') { //STALLED
  99.     digitalWrite(reverse,LOW);
  100.     digitalWrite(avance,LOW);
  101.     digitalWrite(turnleft,LOW);
  102.     digitalWrite(turnright,LOW);
  103.     }
  104.   if (data[0]=='1') { //FORWARD
  105.     digitalWrite(reverse,LOW);
  106.     digitalWrite(avance,HIGH);
  107.     digitalWrite(turnleft,LOW);
  108.     digitalWrite(turnright,LOW);
  109.     }
  110.   if (data[0]=='2') { //FORWARD-RIGHT
  111.     digitalWrite(reverse,LOW);
  112.     digitalWrite(avance,HIGH);
  113.     digitalWrite(turnleft,LOW);
  114.     digitalWrite(turnright,HIGH);
  115.     }
  116.   if (data[0]=='3') { //RIGHT STALLED
  117.     digitalWrite(reverse,LOW);
  118.     digitalWrite(avance,LOW);
  119.     digitalWrite(turnleft,LOW);
  120.     digitalWrite(turnright,HIGH);
  121.     }
  122.   if (data[0]=='4') { //REVERSE-RIGHT
  123.     digitalWrite(reverse,HIGH);
  124.     digitalWrite(avance,LOW);
  125.     digitalWrite(turnleft,LOW);
  126.     digitalWrite(turnright,HIGH);
  127.  
  128.     }
  129.   if (data[0]=='5') { //REVERSE
  130.     digitalWrite(reverse,HIGH);
  131.     digitalWrite(avance,LOW);
  132.     digitalWrite(turnleft,LOW);
  133.     digitalWrite(turnright,LOW);
  134.    
  135.     }
  136.   if (data[0]=='6') { //REVERSE-LEFT
  137.     digitalWrite(reverse,HIGH);
  138.     digitalWrite(avance,LOW);
  139.     digitalWrite(turnleft,HIGH);
  140.     digitalWrite(turnright,LOW);
  141.    
  142.     }
  143.   if (data[0]=='7') { // LEFT-STALLED
  144.     digitalWrite(reverse,LOW);
  145.     digitalWrite(avance,LOW);
  146.     digitalWrite(turnleft,HIGH);
  147.     digitalWrite(turnright,LOW);
  148.     }
  149.   if (data[0]=='8') { // FORWARD-LEFT
  150.     digitalWrite(reverse,LOW);
  151.     digitalWrite(avance,HIGH);
  152.     digitalWrite(turnleft,HIGH);
  153.     digitalWrite(turnright,LOW);
  154.     }
  155.  
  156.  
  157.     if ((data[1]=='9')&&(data[0]=='9')) { //BEAM off w/o FOG w/o BRAKES    
  158.       digitalWrite(beam,LOW);
  159.       analogWrite(brakes,0);
  160.       digitalWrite(fog,LOW);
  161.       }
  162.     if ((data[1]=='9')&&((data[0]=='4')||(data[0]=='5')||(data[0]=='6'))) { //BEAM off w/o FOG w BRAKES
  163.       digitalWrite(beam,LOW);
  164.       analogWrite(brakes,255);
  165.       digitalWrite(fog,LOW);
  166.       }
  167.     if ((data[1]=='1')&&((data[0]!='4')||(data[0]!='5')||(data[0]!='6'))) { //BEAM on w/o FOG w/o BRAKES
  168.       digitalWrite(beam,HIGH);
  169.       analogWrite(brakes,65);
  170.       digitalWrite(fog,LOW);
  171.       }
  172.     if ((data[1]=='1')&&((data[0]=='4')||(data[0]=='5')||(data[0]=='6'))) { //BEAM on w/o FOG w BRAKES
  173.       digitalWrite(beam,HIGH);
  174.       analogWrite(brakes,255);
  175.       digitalWrite(fog,LOW);
  176.       }
  177.     if ((data[1]=='2')&&((data[0]!='4')||(data[0]!='5')||(data[0]!='6'))) { //BEAM on w FOG w/o BRAKES
  178.       digitalWrite(beam,HIGH);
  179.       analogWrite(brakes,65);
  180.       digitalWrite(fog,HIGH);
  181.       }
  182.     if ((data[1]=='2')&&((data[0]=='4')||(data[0]=='5')||(data[0]=='6'))) { //BEAM on w FOG w BRAKES
  183.       digitalWrite(beam,HIGH);
  184.       analogWrite(brakes,255);
  185.       digitalWrite(fog,HIGH);
  186.       }
  187.      
  188.    if (data[1]=='3') { //cam full left
  189.      cam = 0;
  190.       }
  191.    if (data[1]=='4') { //Cam front left
  192.      cam = 45;
  193.       }
  194.    if (data[1]=='5') { //Cam full front
  195.      cam = 88;
  196.       }
  197.        if (data[1]=='6') { //Cam front right
  198.      cam = 135;
  199.       }
  200.        if (data[1]=='7') { //cam full right
  201.      cam = 180;
  202.       }
  203.       if (data[2]=='9') { //ALL FLASHER off
  204.         digitalWrite(flashleft,LOW);
  205.         digitalWrite(flashright,LOW);
  206.         }
  207.       if (data[2]=='1') { //LEFT FLASHER on
  208.         digitalWrite(flashright,LOW);
  209.         digitalWrite(flashleft,HIGH);
  210.         }
  211.       if (data[2]=='2') { //RIGHT FLASHER on
  212.         digitalWrite(flashleft,LOW);
  213.         digitalWrite(flashright,HIGH);
  214.         }
  215.    
  216.          if (data[3]=='9'){ //turn off horn
  217.          digitalWrite(horn,LOW);
  218.          }
  219.        
  220.         if  (data[3]=='1'){ //turn on horn
  221.         digitalWrite(horn,HIGH);
  222.         }
  223.        
  224. }
  225.  
  226.  
  227. void requestEvent() {
  228.   Wire.write(ds); // respond with message of 6 bytes
  229.   // as expected by master
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement