Advertisement
xdesig

Teclado remoto MakeyMakey para escornabot

May 13th, 2018
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.57 KB | None | 0 0
  1. /*
  2.     Teclado para Escornabot con sensores tipo MakeyMakey na placa EchidnaShield
  3.     pódese por calquera obxecto que conduza minimamente a corrente,
  4.     axustando o valor umbral: maior para menos sensibilidade
  5.     *
  6.     Necesitamos 2 módulos Bluetooth, un Mestre e outro Escravo.
  7.     un HC-05 como Mestre e outro escravo que pode ser HC-05 ou HC-06
  8.    
  9. HC-05 como Mestre.
  10.     Conectaremos o modulo mediante un adaptador USB - RS-232 TTL. Axustes do terminal Baud 38400 ,NL & CR.
  11.    
  12.     Comandos AT HC-05 (Pulsar reset durante o acendido, (Parpadeo lento)):
  13.    
  14.                 Envío               -  Resposta
  15.     test:       AT                  -  OK
  16.     nome:       AT+NAME=<NOME>      -  OK ( preguntar é AT+NAME?, resposta o nome )
  17.     pin         AT+PSWD="<pin>"     -  OK ( AT+PSWD="1234" o mesmo que no escravo)
  18.     Velocidade  AT+UART=9600,0,0    -  OK ( a mesma velocidade que no escravo )
  19.     rol:        AT+ROLE=<rol>       -  OK ( 0=escravo, 1=Mestre (precisa reinicio (pulsar reset mentras se inicia )))
  20.     modo:       AT+CMODE=<mode>     -  OK ( 0=conexión a un enderezo especifico(Bind), 1=conectase o primeiro dispositivo que atopa e se queda ligado a el )
  21.     amarre:     AT+BIND=<enderezo>  -  OK ( Enderezo do escravo no seguinte formato 18,E4,34F79D )
  22.  
  23.     +info: https://goo.gl/YTYMmm
  24.  
  25. HC-06 escravo.
  26.      Conectaremos o modulo mediante un adaptador USB - RS-232 TTL. Axustes do terminal Baud 9600, sen axuste de liña.
  27.                 Envío             -  Resposta
  28.     test:       AT                -  OK
  29.     nome:       AT+NAME<NOME>     -  OKsetname
  30.     pin         AT+PIN<pin>       -  OKsetPIN ( AT+PIN1234 o mesmo pin que no mestre )
  31.     Velocidade  AT+BAUD4          -  OK9600 ( 4 = 9600 baud ( a mesma velocidade que no mestre ))
  32.    
  33.     XDeSIG 2018 Creative Commons BY-SA4.0.
  34. */
  35. // A0 Entrada tecla leste (e)
  36. // A1 Entrada tecla norte (n)
  37. // A2 Entrada tecla norte (oeste)
  38. // A3 Entrada tecla sur (n)
  39.  
  40. // A5 Entrada tecla executa (g)
  41.  
  42. #define led 9 //led para indicar o funcionamento
  43.  
  44. int entradas [5] = {A0, A1, A2, A3, A5};      //os pines de entrada
  45. int leds [6] = {13, 6, 11, 12, 5, led};            //Led para indicar a tecla pulsada
  46. char teclas [5] = {'e', 'n', 'w', 's', 'g'};  //cadea a enviar vía serie o escornabot
  47.  
  48.  
  49. int umbral = 400;   //Valor a partires do cal se detecta pulsacion ( sensibilidade)
  50. int valor = 0;      //Variable para almacenar o valor da lectura analoxica
  51.  
  52. int contador = 0;   //Variable do contador
  53.  
  54. void setup() {
  55.  
  56.   Serial.begin(9600);   //activación da canle serie a 9600bps
  57.  
  58.  
  59.  // configuración dos pines de entrada
  60.   for (contador = 0 ; contador < 5; contador ++) {
  61.     pinMode(entradas[contador], INPUT);
  62.   }
  63.  
  64. // configuración dos pines de saida ( leds)
  65. for (contador = 0 ; contador < 6; contador ++) {
  66.     pinMode(leds[contador], OUTPUT);
  67.   }
  68.  
  69.  analogWrite(led, 5);  //led de encendido tenue.
  70.   }
  71.  
  72.   void loop() {
  73.  
  74.     for (contador = 0 ; contador < 5; contador ++) {
  75.      
  76.       valor = analogRead(entradas[contador]);     //Collemos valor da entrada correspondente
  77.      
  78.       if (valor > umbral) {                       //Comprobamos se o valor supera o umbral de sensibilidade
  79.        
  80.         Serial.print (teclas [contador]);         //Enviamos o comando da tecla seguido do retorno de carro
  81.         Serial.print ("\n");
  82.        
  83.         digitalWrite (leds[contador], HIGH);      //Acendemos o led correspondente a tecla
  84.         delay(200);
  85.         digitalWrite (leds[contador], LOW);
  86.         delay(500);
  87.       }
  88.       delay(1); //Retardo entre lecturas
  89.     }
  90.  
  91.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement