document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // Definimos a las líneas a las que se encuentran
  2. // conectados los puentes H
  3. #define M1A 9
  4. #define M1B 10
  5. #define M1C 11
  6. #define M1D 12
  7. #define M2A 3
  8. #define M2B 4
  9. #define M2C 5
  10. #define M2D 6
  11.  
  12. // Buffer para almacenar los textos de control
  13. #define BUFFSIZE 255
  14.  
  15. void setup() {
  16.   //Configuramos todos los pines de control como output
  17.   pinMode(M1A, OUTPUT);
  18.   pinMode(M1B, OUTPUT);
  19.   pinMode(M1C, OUTPUT);
  20.   pinMode(M1D, OUTPUT);
  21.   pinMode(M2A, OUTPUT);
  22.   pinMode(M2B, OUTPUT);
  23.   pinMode(M2C, OUTPUT);
  24.   pinMode(M2D, OUTPUT);
  25.  
  26.   // Iniciamos el serial al que está conectado el módulo bluetooth
  27.   Serial.begin(9600);
  28. }
  29.  
  30. // FORWARD
  31. void go_forward() {
  32.   digitalWrite(M1A,LOW);
  33.   digitalWrite(M1B,HIGH);
  34.   digitalWrite(M1C,HIGH);
  35.   digitalWrite(M1D,LOW);
  36. }
  37.  
  38. // REVERSE
  39. void go_reverse() {
  40.   digitalWrite(M1A,HIGH);
  41.   digitalWrite(M1B,LOW);
  42.   digitalWrite(M1C,LOW);
  43.   digitalWrite(M1D,HIGH);
  44. }
  45.  
  46. // STOP
  47. void stop_motor() {
  48.   digitalWrite(M1A,LOW);
  49.   digitalWrite(M1B,LOW);
  50.   digitalWrite(M1C,LOW);
  51.   digitalWrite(M1D,LOW);
  52. }
  53.  
  54. // RIGHT
  55. void turn_right() {
  56.   digitalWrite(M2A,HIGH);
  57.   digitalWrite(M2B,LOW);
  58.   digitalWrite(M2C,LOW);
  59.   digitalWrite(M2D,HIGH);
  60. }
  61.  
  62. // LEFT
  63. void turn_left() {
  64.   digitalWrite(M2A,LOW);
  65.   digitalWrite(M2B,HIGH);
  66.   digitalWrite(M2C,HIGH);
  67.   digitalWrite(M2D,LOW);
  68. }
  69.  
  70. // CENTER
  71. void center_wheels() {
  72.   digitalWrite(M2A,LOW);
  73.   digitalWrite(M2B,LOW);
  74.   digitalWrite(M2C,LOW);
  75.   digitalWrite(M2D,LOW);
  76. }
  77.  
  78.  
  79.  
  80. //Código para manejo del buffer:
  81. char buffer[BUFFSIZE];
  82. int i = 0;
  83.  
  84. void flush_buffer() {
  85.   Serial.write((const uint8_t*)buffer,i);
  86.   for(int j=0;j<=i;j++) {
  87.     buffer[j] = 0;
  88.   }
  89.   i = 0;
  90. }
  91.  
  92. void append_buffer(char c) {
  93.   if(i<BUFFSIZE) {
  94.     buffer[i++] = c;
  95.   } else {
  96.     flush_buffer();
  97.   }
  98. }
  99.  
  100. //Código fuente del loop principal:
  101. void loop() {
  102.   while(Serial.available()>0) {
  103.     char c = Serial.read();
  104.     append_buffer(c);
  105.     Serial.write(c);
  106.     if(c==\'\\r\'||c==\'\\n\') {
  107.        if(strstr(buffer,"FORWARD")!=0) {
  108.           go_forward();
  109.        }
  110.        if(strstr(buffer,"REVERSE")!=0) {
  111.           go_reverse();
  112.        }
  113.        if(strstr(buffer,"STOP")!=0) {
  114.           stop_motor();
  115.        }
  116.        if(strstr(buffer,"LEFT")!=0) {
  117.           turn_left();
  118.        }
  119.        if(strstr(buffer,"RIGHT")!=0) {
  120.           turn_right();
  121.        }
  122.        if(strstr(buffer,"CENTER")!=0) {
  123.           center_wheels();
  124.        }
  125.        flush_buffer();
  126.        Serial.write("\\r\\n");
  127.     }
  128.   }
  129. }
');