Proyecto Arduino powered
Video:
(Nota: hemos editado los sonidos sobre el vídeo. La razón era durante la grabación y comprobar nuestros clips no podíamos escuchar los sonidos reales mientras ellos estaban allí. Cuando procesa el vídeo, podía oír los sonidos reales que fueron activados mediante el uso de la máquina expendedora mientras pensábamos que no eran registrados por la cámara. Por lo tanto, es por eso que escuche los sonidos dos veces! Parecía que la cámara * hizo * grabar los sonidos después de todo! :) )
Materiales necesarios;
-Buscador de Ranger ultrasónico SRF10 o Devantech SRF08
-Los cables de puente Arduino (bastante, otro tendrá que soldar los cables entre sí)
-Cinta
-Una máquina expendedora!
-Unos altavoces (o utilice su ordenador portátil para reproducir sonido)
Herramientas necesarias;
-Arduino (+ proceso)
-Conocimiento básico Arduino y procesamiento
-Lo más probable es que necesita soldar si los cables no son lo suficientemente largos
-Sonidos!
Proceso;
1. en primer lugar, encontrar un lugar adecuado. Recuerde que usted necesita ocultar su ordenador portátil, tu Arduino y finalmente los altavoces fuera de la vista.
2. usted necesitará lugar/palillo del sensor ultrasónico de tal manera que a desencadenar un cambio de datos como personas usan la máquina expendedora. Verifica si los cables son bastante de su sensor hasta el lugar podrá ocultar su ordenador portátil, Arduino, etc.. Si no, la soldadura de los cables hasta que son lo suficientemente largos.
3. encontrar los sonidos que desea reproducir cuando personas activan el código a través del sensor. Formato mp3 es el más fácil de usar. ¿Encontrar los sonidos que usted quiere? Iniciar un nuevo dibujo de procesamiento, guardar el dibujo y pegar sus sonidos en la carpeta correspondiente. Ver el código de procesamiento en la sección 'código de la materia prima'. Reemplazar los nombres de los archivos. mp3 con los nombres de archivo de mp3. Con el tiempo, eliminar o agregar sonidos como usted por favor.
4. copiar y pegar el código de Arduino y conectar todo entre sí. Ver si recibe datos en su proceso de Arduino. Asegúrese de que todo funciona! ¿Algo no funciona? Pruebe y encuentre el error paso a paso. ¿Su proceso recibe los valores? ¿Qué tipo de valores? Hacer el Arduino imprimir sus valores antes de escribir, etc..
(Lo más probable es que el código tiene que ser retocado un poco para hacerlo trabajar para usted!)
5. bien! Tiempo de finetune. Iniciar con la colocación de sus instrumentos (sensores, arduino, portátil, altavoces) donde deberían estar. Antes cinta los cables, etc.. Comprobar (por prueba), los datos que recibe cuando la gente utiliza la máquina expendedora. Modificar el código de tal manera que responda a la modificación de datos. Esto generalmente es la parte difícil!
6. cinta para arriba los cables, ocultar todo, ejecutar el código y disfrutar!
¿7. programa pegado? Prueba procesamiento recomienzo o reponer su Arduino.
Código de la materia prima;
CÓDIGO DE ARDUINO:
Buscador de Ranger ultrasónico SRF10 I2C o Devantech SRF08 Se muestra cómo utilizar la biblioteca de alambre, lectura de datos de la Creado el 29 de abril de 2006 Este ejemplo de código es de dominio público. #include void setup() lectura de int = 0; void loop() changeAddress (oldAddress, newAddress); {while(1)} } } El código siguiente cambia la dirección de un Devantech ultrasónico Distanciómetro (SRF10 o SRF08) void changeAddress (int oldAddress, int newAddress)
por Nicholas Zambetti
y James Tichenor
Rangers de Devantech Utrasonic SFR08 y SFR10
{
Wire.Begin(); Únete a bus i2c (dirección opcional para el maestro)
Serial.Begin(9600); iniciar la comunicación serial a 9600bps
}
{
int datos = 0;
int oldAddress = 0x70; I2C gebruikt enkel 7 bit adressen (de MSB) dus 0xE0 wordt 0x70
int newAddress = 0xE2; es constante con dirección 2--> 0xE4
int newAddress = 0x71; se utilizan sólo 7 bits--> 0x72
Mantenga boolean = false;
datos = readData(newAddress);
{if(Data!=0)}
Serial.println(Data);
if(Data >100) {}
Serial.Write("e");
else if (datos < 90) {}
Serial.Write("f");
}
}
Else {}
Serial.Write("0");
}
Delay(100); esperar un poco ya que la gente tiene que leer la salida
Delay(1000);
}
uso: changeAddress(0x70, 0xE6);
{
Wire.beginTransmission(oldAddress);
Wire.Write(byte(0x00));
Wire.Write(byte(0XA0));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.Write(byte(0x00));
Wire.Write(byte(0xAA));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.Write(byte(0x00));
Wire.Write(byte(0xA5));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.Write(byte(0x00));
Wire.Write(newAddress);
Wire.endTransmission();
}
El código siguiente es para leer los datos del sensor
int readData (int direccion) {}
lectura de int = 0;
Paso 1: indicar a sensor de leer ecos
Wire.beginTransmission(address); transmitir al dispositivo #112 (0x70)
la dirección especificada en la hoja de datos es 224 (0xE0)
pero dirección i2c utiliza el alto 7 pedacitos de 112
Wire.Write(byte(0x00)); puntero de registro de sistemas para el registro de comando (0 x 00)
Wire.Write(byte(0x51)); sensor de mando a medida en "centímetros" (0x51)
Use 0 x 50 para pulgadas
Utilice 0x51 para centímetros
Utilice 0x52 para microsegundos de ping
Wire.endTransmission(); interrumpir la transmisión
Paso 2: esperar lecturas a pasar
Delay(70); hoja de datos sugiere por lo menos 65 milisegundos
Paso 3: instruir a sensor para devolver una lectura particular eco
Wire.beginTransmission(address); transmitir al dispositivo #112
Wire.Write(byte(0x02)); sistemas de registro de puntero para echo registro #1 (0 x 02)
Wire.endTransmission(); interrumpir la transmisión
Paso 4: pedir la lectura del sensor
Wire.requestFrom (dirección, 2); Reciba 2 bytes del dispositivo esclavo #112
Paso 5: recibir lectura de sensor
Si (2 < = Wire.available()) / / si se recibieron dos bytes
{
lectura = Wire.read(); recibe byte alto (sobrescribe la lectura anterior)
lectura = lectura << 8; desplazar byte alto para ser alto 8 bits
leyendo | = Wire.read(); recibir menor 8 bits byte bajo
volver a leer;
}
return 0;
}
CÓDIGO DE PROCESO:
Import processing.serial.*; Mínima mínima; Serie myPort; int r; void setup() {} println(serial.List()); void serialEvent (serie myPort) {} int inByte = myPort.read(); println(inByte); Si (inByte == 102 & & mano == false) {} para (int i = 0; i < 9000; i ++) {} Si (i == 1) {} IN5.Play(); void draw() {} void stop() Super.STOP();
Import ddf.minim.*;
AudioPlayer en;
AudioPlayer in2;
AudioPlayer in3;
AudioPlayer in4;
AudioPlayer in5;
Mano boolean = false;
tamaño (800, 600);
mínima = nuevo Minim(this);
en = minim.loadFile("god.mp3");
in2 = minim.loadFile("applaus.mp3");
IN3 = minim.loadFile("babygelach.mp3");
In4 = minim.loadFile("scheet.mp3");
IN5 = minim.loadFile("muntje.mp3");
String portName = Serial.list() [6];
myPort = serie nueva (este, portName, 9600);
Background(0);
r = 0;
}
int r = int (random(1, 4));
println(r);
mano = true;
println(Hand);
// }
in.Play();
}
else if (r == 2) {}
in2.Play();
}
else if (r == 3) {}
in3.Play();
}
else if (r == 4) {}
In4.Play();
}
Else {}
}
}
Si (inByte == 101) {}
mano = false;
println(Hand);
}
}
}
{
in.Close();
Minim.STOP();
}