Accueil > Ressources > Fiches pratiques > PaperTeclado : un clavier en papier

A faire soi-même

PaperTeclado : un clavier en papier

par Jocelyne

Basé sur les documents élaborés au sein du Red Creativa de Ciencia, le PaperTeclado de Iñigo Zuluagadu part du principe que « des bandes en papier imprimées avec une imprimante à jet d’encre sont légèrement conductrices, le niveau de résistance électrique se calculant en fonction de la longueur et de la largeur de chaque bande. »

Comment faire son propre clavier en papier ?

Plusieurs variations du PaperTeclado sont disponibles, mais notre préférence va au clavier de musique, le PaperTecladoPiano. Si votre curiosité vous y conduit, vous pouvez retrouvez les étapes de montage et les fichiers de code des autres variations sur l’article d’origine.

Passons à la mise en pratique

Partant des caractéristiques déterminées par le Red Creativa de Ciencia, le schéma ci-dessous représente la correspondance du montage des résistances sur une bande imprimée.

Fabrication du clavier papier

- Téléchargez le schéma ci-dessous et imprimez-le - en niveaux de gris uniquement et sur une imprimante à jet d’encre haute qualité (l’encrage doit être dense).

- Une fois l’encre séchée, découpez le schéma et faites une petite encoche de chaque côté pour le passage des câbles.

- Pliez la feuille en suivant les pointillés.

- Connecter ensuite les câbles à la feuille :
La masse (câble noir) en contact avec la zone GND.
Le signal (câble bleu) en contact avec la zone Serial.
L’alimentation 5 volts (câble rouge) en contact avec la zone 5V.

- Vous pouvez ensuite procéder au collage en veillant à n’appliquer la colle que sur les zones non encrées. Vous pouvez également protéger votre clavier en le recouvrant d’une feuille de plastique transparent.

Connecter le clavier à un Arduino

- Pour connecter le clavier à un Arduino, effectuez le montage comme suit. Vous aurez ici impérativement besoin d’un haut-parleur, qui se relie à la broche 9 de l’Arduino par l’intermédiaire d’une résistance de 100 Ohms.

- Et enfin, le programme de l’Arduino que vous pourrez par la suite modifier s vous le souhaitez.

/*
 PaperTecladoPiano
Lee el estado de un teclado compuesto por un divisor de tensión modificable,
realizado con una hoja de papel impresa por un impresora de inyección
de tinta. Mediante pulsadores de papel se cambia la geometría de la pista
de tinta y por lo tanto su resistencia a masa o a 5 voltios.
El programa emite una nota diferente en funcin de la tecla pulsada.

El circuito:
* Salida de señal "PaperTeclado" (cable azul) conectada a la entrada analógica 0
* Cable rojo de "PaperTeclado" a 5v
* Cable negro de "PaperTeclado" a masa. (GND)
* Un cable del altavoz a la salida digital 8 a través de una resistecia de 100 Ohmnios.
* El otro cable a masa (GND)

Creado por Iñigo Zuluaga
13-Octubre-2010
http://txapuzas.blogspot.com

// Entradas-Salidas
int TecladoPin = 0;    // Pin de entrada para el teclado
int AltavozPin = 8;    // Pin de salida para el altavoz
// Variables
int TecladoValor = 0;  // Variable para almacenar el valor analógico del teclado
int Pulsador=0;        // Variable que indica el pulsador accionado
int Nlecturas=0;       // Variable para almacenar el número de lecturas realizadas
int Margen=1;          // Número de veces que hay que leer un mismo valor para aceptarlo
int Do=262;            // Frecuencia de las notas
int Re=294;
int Mi=330;
int Fa=349;
int Sol=392;
int La=440;
int Si=494;
char* Nota="Sol";      // Variable para almacenar la última nota

void setup() {
  pinMode(AltavozPin,OUTPUT); // El pin del altavoz como salida
  Serial.begin(9600);         // configura la conexión serie
}

void loop() {
delay(10);
TecladoValor = analogRead(TecladoPin);  // lee el valor analógico del teclado  
 
if (TecladoValor>900) {   // Si el valor leído es grande (no se ha pulsado nada)
  if (Pulsador==0){   // y estaba activo el pulsador 0
     Nlecturas=Nlecturas+1;  // incrementa el contador de lecturas                      
  }  
   else {    // Si es Si, pero estaba activa otra nota
      Nlecturas=0;   // pone el contador de lecturas a cero                  
      Pulsador=0;    // activa el pulsador 7
     }
  }  
  else if (TecladoValor>800) {  // Si el valor leído es SI
     if (Pulsador==7){          // y estaba activo el pulsador 7
        Nlecturas=Nlecturas+1;  // incrementa el contador de lecturas                      
     }  
     else {    // Si es Si, pero estaba activa otra nota
        Nlecturas=0;   // pone el contador de lecturas a cero                  
        Pulsador=7;   // activa el pulsador 7
     }
  }  
  else if (TecladoValor>700) {  // Si el valor leído es LA
     if (Pulsador==6){   // y estaba activo el pulsador 6
        Nlecturas=Nlecturas+1;  // incrementa el contador de lecturas                      
     }  
     else {    // Si es LA, pero estaba activa otra nota
        Nlecturas=0;   // pone el contador de lecturas a cero                          
        Pulsador=6;   // activa el pulsador 6
     }
  }
  else if (TecladoValor>600) {  // Si el valor leído es SOL
     if (Pulsador==5){   // y estaba activo el pulsador 5
        Nlecturas=Nlecturas+1;  // incrementa el contador de lecturas                      
     }  
     else {    // Si es SOL, pero estaba activo otra nota
        Nlecturas=0;   // pone el contador de lecturas a cero                          
        Pulsador=5;    // activa el pulsador 5
     }
  }
  else if (TecladoValor>500) {  // Si el valor leído es FA
     if (Pulsador==4){  // y estaba activo el pulsador 4
        Nlecturas=Nlecturas+1;  // incrementa el contador de lecturas                      
     }  
     else {    // Si es FA, pero estaba activo otra nota
        Nlecturas=0;   // pone el contador de lecturas a cero                          
        Pulsador=4;   // activa el pulsador 4
     }
  }
  else if (TecladoValor>300) {  // Si el valor leído es MI
     if (Pulsador==3){   // y estaba activo el pulsador 3
        Nlecturas=Nlecturas+1;  // incrementa el contador de lecturas                      
     }  
     else {    // Si es MI, pero estaba activo otra nota
        Nlecturas=0;   // pone el contador de lecturas a cero                          
        Pulsador=3;   // activa el pulsador 3
     }
  }
  else if (TecladoValor>200) {  // Si el valor leído es RE
     if (Pulsador==2){   // y estaba activo el pulsador 2
        Nlecturas=Nlecturas+1;  // incrementa el contador de lecturas                      
     }  
     else {    // Si es RE, pero estaba activa otra nota
        Nlecturas=0;   // pone el contador de lecturas a cero                          
        Pulsador=2;   // activa el pulsador 2
     }
  }
  else if (TecladoValor<200) {  // Si se ha pulsado DO
     if (Pulsador==1){   // y estaba activo el pulsador 1
        Nlecturas=Nlecturas+1;  // incrementa el contador de lecturas                      
     }  
     else {    // Si es DO, pero estaba activa otra nota
        Nlecturas=0;   // pone el contador de lecturas a cero                          
        Pulsador=1;   // activa el pulsador 1
     }
 }
  // delay (500);
 
  if (Nlecturas > Margen) {   // Si se ha leído varias veces el mismo valor    
    switch (Pulsador) {    
      case 1:   // Si la tecla pulsada es la 1
        tone(AltavozPin,Do);   // emite la nota Do
        Nota="Do";   // Almacena el nombre
        break;   // y sale
      case 2:
        tone(AltavozPin,Re);
        Nota="Re";
        break;
      case 3:
        tone(AltavozPin,Mi);
        Nota="Mi";
        break;
      case 4:
        tone(AltavozPin,Fa);
        Nota="Fa";
        break;
      case 5:
        tone(AltavozPin,Sol);
        Nota="Sol";
        break;
      case 6:
        tone(AltavozPin,La);
        Nota="La";
        break;
      case 7:
        tone(AltavozPin,Si);
        Nota="Si";
        break;
     default:   // Si no se ha pulsado ninguna tecla
        noTone(AltavozPin);   // apaga el sonido
        Nota="  ";   // vacía la variable
        break;   // y sale
     }
  }
  Serial.print ("Valor leido: " );   // muestra en la terminal serie
  Serial.print (TecladoValor);   // el valor leído
  Serial.print (", Nota: " );   // y su nota
  Serial.println (Nota);   // correspondiente      
}  

À vous de jouer maintenant.

EN COMPLÉMENT
Jeu éducatif de Vali Fugulin pendant le confinement

Matériel nécessaire : 1 feuille de papier, des ciseaux, de la colle à papier, 1 imprimante à jet d’encre, 5 petites longueurs de fils électriques, du scotch électrique, 1 arduino, 1 haut parleur, 1 résistance de 100 Ohms