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.
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