Caja azul basados en Arduino (teléfono Phreaking) (3 / 9 paso)

Paso 3: Código de manual de reparacion 1

Programación

El código de este nuevo esquema en su totalidad puede encontrarse aquí en mi perfil de pastebin.com. Por el bien de este tutorial se cubren la mayoría de los conceptos clave de la sintaxis que he usado. En primer lugar el Arduino utiliza un lenguaje de programación que es orientado a objetos; C++. Esta lengua es muy poderosa y alimenta mucho de la lógica del sitio web de moderno-día, microcontroladores y mucho más!

Teclado

Primero creamos un dos matriz bidimensional de enteros que utilizamos para la celebración de las frecuencias especificadas por dígitos por la página de la caja azul de Wikipedia. También establecemos una duración como un array de entero sin signo de typedef. Estos enteros son reproducción períodos de duración.

 int bb[16][2] = { // MF 0,1,2,3,4,5,6,7,8,9,kp,st,2400+2600,kp2,st2,ss4 super<br> {1300,1500},{700,900},{700,1100}, // 0,1,2 {900,1100},{700,1300},{900,1300}, // 3,4,5 {1100,1300},{700,1500},{900,1500}, // 6,7,8 {1100,1500},{1100,1700},{1500,1700}, // 9,kp,st {2600,2400},{1300,1700},{900,1700}, // 2400+2600,kp2,st2 {2400,2040}, // ss4 Supervisory }; <p>uint8_t bbdur[2] = {60,100};</p> 

A continuación, creamos una matriz matriz de claves como personajes. Estos caracteres se utilizará cada vez que se presiona un botón en el teclado. También fijamos las filas y pasadores de arrays de enteros.

 char keys[4][4] = {<br> {'1','2','3','a'}, {'4','5','6','b'}, {'7','8','9','c'}, {'#','0','*','d'} }; <p>byte rowPins[4] = {5,4,3,2}; //connect to the row pinouts of the keypad<br>byte colPins[4] = {9,8,7,6}; //connect to the column pinouts of the keypad</p> 

A continuación creamos un objeto de teclado y una matriz simple de tono objetos. Ya que estamos jugando tonos de dos pins a la vez, esto hace nuestra vida más simple al escribir y depurar el código.

 Tone freq[2]; // array of Tone objects, now we can play as freq[0].play(); etc<br>Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,4,4); 

Botones de lectura y reproducción de tonos

En la función setup() , necesitamos establecer las clavijas freq [0] y frecuencia [1] para la salida. Esto es simple. También Seleccione el "modo de pin" para el botón de 2600 y establece un detector de eventos, que es una llamada de función personalizada de procesamiento del botón de procButton() . Esta es la programación orientada a eventos. Esto básicamente significa que nos "escucha" de teclas a presionar, que sería un "evento". La función principal loop() es lo que encarga de los eventos y oyentes para nosotros.

 freq[0].begin(11); // Initialize our first tone generator<br>freq[1].begin(12); // Initialize our second tone generator pinMode(10, INPUT); // 2600 button keypad.addEventListener(procButton); 

Hemos mantenido nuestro método principal loop() simple, que es bueno ya que constantemente se está llamando. La primera línea,

 char button = keypad.getKey(); 

Básicamente se llama al método de getKey() del objeto teclado para ver si y qué tecla se presionó. El código,

 if(digitalRead(10)==HIGH){ // play 2600Hz if top button pressed<br> super(); // supervisory signalling } 

simplemente escucha para el voltaje en el pin 10 y si encuentran, juegos del 2600 hz frecuencia llamando a la función de señalización de supervisión personalizada super() . Se trata de la primera función definida justo debajo de la función loop() . También es la primera función para llamar a la frecuencia individual personalizada jugando la función de sf() ,

 sf(2600,750); 

Los argumentos que pasan a esta función son la frecuencia a reproducir y la duración. Después de asignar léxicamente la frecuencia y duración variables de número entero de los mismos nombres, la función personalizada sf() solo llama a un método solo juego en un solo perno

 freq[0].play(frequency,duration); 

Este es nuestro primer vistazo al método de juego de síntesis del tono de la biblioteca de tono. Así que si te imaginas jugando dos tonos, de múltiples frecuencias sería similar, pero con dos pines, como,

 freq[0].play(frequency,duration);<br>freq[0].play(frequency,duration); 

Y eso es exactamente lo que hace la función de mf() juego de encargo de múltiples frecuencias.

¿Cómo procesamos cada tecla de la función de procButton() ? Usando una lógica del interruptor de la caja. Las constantes "liberado," "presionado" y "cabo," (no "celebrado" por alguna extraña razón), son parte de la biblioteca de teclado y podemos utilizar el en un bloque de lógica del interruptor de la caja,

 switch (keypad.getState()){<br>case RELEASED: // drop right away // do some stuff break; case PRESSED: // momentary // do some stuff break; case HOLD: // HELD (special functions) // do some stuff break; } 

Y eso es exactamente lo que hacemos. Puesto que la función de procButton() es un controlador de eventos denominado por la función loop() , obtenemos un objeto de keypadevent a su controlador procButton(). Este objeto puede ser tratado como un simple personaje - y hacemos por simple resta el entero 48 de él para obtener Qué tecla del 0 al 9.

 void procButton(KeypadEvent b){<br> b -= 48; 

Ahora sabemos qué tecla se presionó y pasar a la función mf() que utiliza la matriz multidimensional [bb] que hemos creado antes para jugar los tonos mf. Usted puede haber notado que el KP (*) y ST (#) no son 0-9. Esto es correcto, ya que a través de y después de la sustracción -13 y -6 respectivamente. La función mf() encarga entonces como,

 }else if(digit==-13){<br> digit = 12; // * }else if(digit==-6){ digit = 14; // # 

Este entonces toca los tonos ya que se les asigna en el array multidimensional [bb] .

Ahora se han cubierto todos los conceptos clave mediante programación con este esquema (1), vamos a pasar en el segundo esquema y cómo podemos reproducir archivos WAV que ofrecen un sonido completamente diferente a nuestras cajas de azul.

Características adicionales

Este código proporciona una enorme cantidad de características adicionales incluyendo dígitos en la grabación y arreglos de discos para reproducción y modos de operación. El código es muy sencillo código de C++ de Arduino. Pulsación larga 'A' para recorrer los diferentes modos. Cada vez que cambiamos modos que el notifyMode() función se pulsará un código de pitidos de 440 hz para dejarnos saber que actualmente estamos utilizando el modo. Todos los modos se describen completamente en mi weblog aquí o en la página de Wikipedia para especificaciones de la caja azul.

Artículos Relacionados

Instalación de ProjectMF (teléfono Phreaking)

Instalación de ProjectMF (teléfono Phreaking)

IntroducciónUn amigo sin rostro en un canal de IRC en 2006 me dio el mp3 de la increíble presentación de ProjectMF esperanza dada por Mark Abene (Phiber Optik). Desde entonces, he estado fascinado por el proyecto, pero carecía de los conocimientos té
Caja de fibra de carbono teléfono

Caja de fibra de carbono teléfono

¿Quieres aprender cómo hacer tu propio brillante, liso, fibra de carbono caja del teléfono? Sólo tienes que seguir estos sencillos pasos para crear uno por ti mismo y mostrar a todos tus amigos!Paso 1: Selección de sus materialesFibre Glast 3k tejido
BRICOLAJE | Cómo hacer una caja de teléfono de silicona | Tutorial

BRICOLAJE | Cómo hacer una caja de teléfono de silicona | Tutorial

https://www.youtube.com/watch?v=uHgs8B_6c7I&feature=youtu.bePaso 1: Hacer una caja del silicón del teléfono necesita!!!!!! Video de hoy hacer una caja de teléfono impresionante DIY o como muchos llaman tope caja del teléfono celular en casa. ¿Usted s
Caja del teléfono del tablero de tiza

Caja del teléfono del tablero de tiza

Este proyecto comenzado porque quería darle a mi novia un regalo para el primer día de sus prácticas en la escuela primaria. Quería ser algo divertido y fácil de llevar consigo para los niños de su clase. Pensé que ella podría dejar que los niños jug
Cargador de teléfono

Cargador de teléfono

tomé el cargador del teléfono negro $5, entonces pensé que un diseño de la manija de la espada ninja o samurai sería fresco en él, pero tiene una luz que las luces roja y azul a si el teléfono está cargando. Asi que me hice la luz parecen ojos.
Cómo cambiar la pantalla de su teléfono móvil Nokia.

Cómo cambiar la pantalla de su teléfono móvil Nokia.

Este instructable le mostrará cómo cambiar una pantalla LCD rota en tu Nokia. Las fotos de arriba muestran un clásico Nokia 6300, pero podría ser el mismo o casi lo mismo con muchos otros modelos de Nokia.¿Por qué le tiene que cambiar su LCD? Tal vez
ArduinoPhone 2.0 - un teléfono móvil de código abierto

ArduinoPhone 2.0 - un teléfono móvil de código abierto

Hace más de 2 años que yo había hecho un instructable - ArduinoPhone.ArduinoPhone fue grande y es difícil para el principiante hacer uno. Ya que es un paso para hacer el circuito de carga.Y yo había oído por lo que muchos la voz cuando se haga Arudin
Conversión de un teléfono público para uso doméstico.

Conversión de un teléfono público para uso doméstico.

Como uso del teléfono celular continúa aumentando y las empresas de teléfono tomar teléfonos públicos fuera de servicio, teléfonos más usados están disponibles para la venta. Algunos comprarán teléfonos públicos con la intención de instalar estas pie
Sistema de intercomunicador teléfono VOIP y

Sistema de intercomunicador teléfono VOIP y

RESUMEN:Lo anterior instructable le muestra cómo utilizar un cuadro de Linksys VOIP para conectar a los teléfonos de ollas y hacer una especie de sistema de intercomunicación casero simple. Sin embargo, muchas personas (me incluidas) se preguntaban s
Teléfono de oficina

Teléfono de oficina

una instalación de arte con un teléfono de escritorio modificado que facilita y frustra la comunicación.Con electronica y alguna programación de microcontrolador simple, puede secuestrar la función normal de un teléfono de tono, dándole vida propia.
Linterna alimentada por la línea de teléfono

Linterna alimentada por la línea de teléfono

¿Qué haces cuando la energía de la casa se apaga? Buscar linternas! Pero si eres tan descuidada como yo, vas a ver que son de baterías desde la última vez que salió la energía.Desde entonces, en el 90% de las veces, la línea telefónica sigue trabajan
Como hacer un proyector para su teléfono por $2

Como hacer un proyector para su teléfono por $2

proyectores de diapositivas son excelente, pero anticuados y proyectores digitales cuestan un paquete. Afortunadamente, puede mostrar sus fotos móvil y tu hack de teléfono inteligente por convertir su teléfono en un smartphone barato proyector.Los in
La introducción de Climaduino - el termostato basado en Arduino controlas desde tu teléfono!

La introducción de Climaduino - el termostato basado en Arduino controlas desde tu teléfono!

Actualización:Hay una nueva versión de la Climaduino y el Climaduino con algunos cambios muy significativos.Soporta múltiples zonasUtiliza el Arduino YúnTrabaja con aire acondicionado CentralSe comunica mediante el protocolo MQTT (se puede integrar c
Caja azul de Arduino 12-modo - Introducción

Caja azul de Arduino 12-modo - Introducción

ACTUALIZACIÓN DE FIRMWARE! -10/2/2015 - ver último paso para obtener más informaciónPresentado aquí está basado en un Arduino "Caja azul". Produce el "tradicional" azul caja 2600 Hz tono y tonos MF (multifrecuencia), pero hace mucho má