Hola, soy absolutamente nueva en el tema, estoy haciendo un trabajo para la universidad y necesito conectar un micrófono ambiental (de 12v) que cubre 25m cuadrados, a un servo MG995 para que el mismo se mueva en un rango de 0° a 90°. Estoy usando un Arduino UNO.
Ahora los problemas:
1)Cómo puedo conectar el micrófono a una entrada analógica? El micro tiene su propia fuente de alimentación separada del Arduino, pero por lo que leí no sirve mandarle el out directo de 12v a las entradas analógicas.
2)Hice el intento de amplificar un electret, pero al medir los valores con AnalogReadSerial los mismos no varían.
3) Escribí una programación basada en otra de un Vúmetro que encontré por ahí, pero no estoy segura de que vaya a funcionar (siempre y cuando solucione todo lo anterior); la dejo abajo por si algún alma copada le pega una mirada:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
//Las variables que usaremos para el silencio
int Valor;
int Valor1;
int Valor2;
int Valor3;
int Valor4;
//Configuramos los pines y el serial para poder visualizar la entrada analogica
void setup (){
Serial.begin(9600);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop (){
//Leemos el valor
Valor = analogRead(A0);
//Transferimos los valores para saber cual era el estado anterior
Valor4 = Valor3;
Valor3 = Valor2;
Valor2 = Valor1;
Valor1 = Valor;
//Visualizamos los valores en Serial Monitor
Serial.print("Valor: ");
Serial.print(Valor);
Serial.print("\t Valor1: ");
Serial.print(Valor1);
Serial.print("\t Valor2: ");
Serial.print(Valor2);
Serial.print("\t Valor3: ");
Serial.print(Valor3);
Serial.print("\t Valor4: ");
Serial.println(Valor4);
//Condicionamos que si el programa lee 4 veces seguidas 0 que se apagen los leds, si no ponemos esto los leds parpadearan mucho
if (Valor1+Valor2+Valor3+Valor4==0){
myservo.write(pos);
}
//Encendemos los leds segun el valor de entrada. En este caso la salida de mi pc como mucho me llega a 400 asi que lo dividimos entre ocho leds.
else{
if (Valor>0){
for (pos = 0; pos <= 12; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
else{
for (pos = 12; pos <= 0; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
if (Valor>50){
for (pos = 12; pos <= 24; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
else{
for (pos = 24; pos <= 12; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
if (Valor>100){
for (pos = 24; pos <= 36; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
else{
for (pos = 36; pos <= 24; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
if (Valor>150){
for (pos = 36; pos <= 48; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
else{
for (pos = 48; pos <= 36; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
if (Valor>200){
for (pos = 48; pos <= 60; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
else{
for (pos = 60; pos <= 48; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
if (Valor>250){
for (pos = 60; pos <= 72; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
else{
for (pos = 72; pos <= 60; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
if (Valor>300){
for (pos = 72; pos <= 84; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
else{
for (pos = 84; pos <= 72; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
if (Valor>350){
for (pos = 84; pos <= 90; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
else{
for (pos = 90; pos <= 84; pos += 1); // goes from 0 degrees to 12 degrees
// in steps of 1 degree
}
}
}
Bueno es la primera vez que intento escribir programación y meterme con estas cosas, así que agradezco profundamente cualquier ayuda.