YFM con pantalla LCD
//Detector de metales YFM Pinpointer 2 tonos con pantalla LCD
// Hardware y software implementados por Hector Santos ("El yeti" en youtube) yeti-lab.blogspot.com
//YFM v1.2 LCD AutoBalance
// Entrada D5, Buzzer D12, boton D4
#include <FreqCount.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(6, 7, 8, 9, 10, 11);
// entrada en el pin 5
// Buzzer en el pin 12
bool fe = false;
bool AB=true;
int valor=0;
int buff=0;
int frq=0;
int resta=0;
int sens=2; // sensibilidad
int autoBalance=0;
void setup() {
lcd.begin(16, 2);
lcd.print("YFM Pinpointer");
pinMode (13,OUTPUT);
pinMode (12,OUTPUT);
pinMode(4,INPUT);
Serial.begin(9600);
FreqCount.begin(200); //nº ciclos de lectura de frecuencia
delay(100);
frq=FreqCount.read();
// Balance
buff=frq;
for(int i=0;i<5;i++){
for(int i=0;i<10;i++){// genera tono
digitalWrite(12,HIGH);
delay(2);
digitalWrite(12,LOW);
delay(2);
}
delay(20);
frq= FreqCount.read();
if(frq != buff){i=0; buff=frq;}
}
for(int i=0;i<20;i++){ // Genera tono
digitalWrite(12,HIGH);
delay(1);
digitalWrite(12,LOW);
delay(1);
}
lcd.clear();
}
void loop() {
AB=true;
frq = FreqCount.read();
resta=buff-frq;
valor= -resta;
fe=true;
if(resta<0){resta=-resta;fe=false;}
if(resta>sens && fe){ // Metales ferrosos
fe = true;
for(int i=0;i<10;i++){ // Genera tono
digitalWrite(12,HIGH);
delay(2);
digitalWrite(12,LOW);
delay(2);
}
delay(40-(constrain(resta*5,10,40)));
AB=false; //para resetear el autobalance
}
if(resta>sens && !fe){ // Metales no-ferrosos
fe=false;
//resta=-resta;
for(int i=0;i<20;i++){// genera tono
digitalWrite(12,HIGH);
delay(1);
digitalWrite(12,LOW);
delay(1);
}
delay(40-(constrain(resta*5,10,40)));
AB=false; //para resetear el autobalance
}
lcd.clear();
lcd.setCursor(0, 1);
//lcd.print(resta);
char O = 255;
char flecha = 94;
lcd.setCursor(sens,1);
lcd.print(flecha);
if(valor<0)lcd.setCursor(5,1);
else lcd.setCursor(6,1);
lcd.print(valor);
lcd.setCursor(10, 1);
if(fe && resta>sens)lcd.print("Fe");
if(!fe && resta>sens)lcd.print("NO Fe");
lcd.setCursor(0, 0);
resta = constrain(resta,0,16);
for(int i=0;i<resta;i++){
lcd.print(O);
}
//Serial.print(resta);
//Serial.print("---------");
//Serial.println(buff);
if(!(valor>sens||valor<-sens))delay(20);
if(!digitalRead(4)){
while(!digitalRead(4))delay(50);
sens++;
if(sens>4)sens=1;
}
if(true){ // auto Balance
digitalWrite(13,HIGH);
if(AB && resta !=0){
if(autoBalance>50){autoBalance=0; buff=frq;}
autoBalance++;
}else autoBalance=0;
delay(1);
}
}
Hola, soy nuevo en todo esto de Arduino y cuando copio el código para compilarlo me dice que no existe la librería FreqCount.h. Qué debo hacer? Saludos y gracias de antemano.
ResponderEliminarListo, estuve buscando y aprendí a instalar la librería. Estoy pensando en usar el pinpointer para detectar las barras de acero en el concreto armado, es que soy arquitecto y en ocasiones necesito saber que hay debajo de la superficie sin tener que demoler.
EliminarQue bien que aprendiste a instalar librerías.
EliminarPor el tipo de detector que es no tiene mucho alcance, además si hay impurezas de óxido de hierro en el hormigón te dará lecturas falsas.
Puedes ver el último detector que estoy desarrollando, ese también es muy sencillo y seguramente te de mejor resultado para ésa aplicación.
Además no necesita ninguna librería adicional.
Lo puedes ver en la última entrada del blog y algunos vídeos en mi canal de Youtube Yeti-lab
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola, una consulta, quisiera saber cómo podría hacer si quisiera hacerlo más personalizado de manera que me detecte de qué metal se trata en sí. Podría indicarme cómo hacer las mediciones para poder configurar las frecuencias?
ResponderEliminar