Diferencia entre revisiones de «Detector de mentiras con arduino»

De Recursos Educativos
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
Sin resumen de edición
Línea 20: Línea 20:


El cableado es muy similar al de el artículo, pero para mi montaje la resistencia de 2K que propone no me daba apenas variaciones en el gráfico, funcionó mucho mejor con una de 10K.
El cableado es muy similar al de el artículo, pero para mi montaje la resistencia de 2K que propone no me daba apenas variaciones en el gráfico, funcionó mucho mejor con una de 10K.
== Codigo ==
<syntaxhighlight lang="C" line>
int NIVEL_VERDE=75;
int NIVEL_AMARILLO=80;
int NIVEL_ROJO=95;
void setup()
{
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(3, HIGH);
  delay(500);
  digitalWrite(4, HIGH);
  delay(500);
}
void loop()
{
  int lectura = analogRead(A0);
  if ( lectura > NIVEL_ROJO)
  {
    digitalWrite(4, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(2, HIGH);
  }
  else
  {
    if ( lectura > NIVEL_AMARILLO)
    {
    digitalWrite(4, LOW);
    digitalWrite(3, HIGH);
    digitalWrite(2, HIGH);
    }
    else
    {
      if ( lectura > NIVEL_VERDE)
      {
        digitalWrite(4, LOW);
        digitalWrite(3, LOW);
        digitalWrite(2, HIGH);
      }
      else
      {
        digitalWrite(4, LOW);
        digitalWrite(3, LOW);
        digitalWrite(2, LOW);
      }
    }
  }
  Serial.println(lectura);
  delay(20);
}
</syntaxhighlight>
== Usandolo ==
A mi como detector de mentiras ... pues no funcionó, no detectaba variaciones, ni muchas ni pocas, estaba la gráfica plana.
La manera mas interesante que encontré de generar variaciones fue con presión. Poniendo la mano en el borde de la mesa y apretando los electrodos y soltando se generaba la siguiente gráfica.
[[Archivo:Detector01.png|800px]]
De forma consistente, con la mano relajada esta en torno a los 70 y con ella apretada entre 90 y 100. Ajustando los valores de las variables globales <code>NIVEL_VERDE</code>, <code>NIVEL_AMARILLO</code> y <code>NIVEL_ROJO</code> puedes jugar a ir encendiendo y apagando los LEDs con la presión de la mano. Otro experimento posible y curioso es jugar con otras variables corporales y ver como influyen en la gráfica, por ejemplo a mi me funcionó con la respiración, respirando fuerte y rápido se observaban cambios en la gráfica con respecto a la respiración en reposo.

Revisión del 11:58 7 abr 2018

Fase de investigación

Buscar en Google "detector de mentiras arduino" y "arduino lie detector".

La mayoría de resultados refieren a este este otro.

El proyecto en si es muy fácil, es una lectura de señal analógica, calibrado usando el "Serial Plotter" del IDE de Arduino, y un simple IF que enciende leds 3. Vamos a probarlo.

Requisitos y materiales

Siempre interesa tener actualizado el IDE y las librerías, uso IDE 1.8.5 y librerias y placas actualizadas a día de hoy (Abr 2018). No se puede hacer con IDEs muy antiguos porque no traian el Serial Plotter.

  • Papel de aluminio
  • Esparadrapo o similar
  • Resistencias variadas, entre 2K y 10K.

Construcción

El artículo lo hace con el arduino nano, yo lo hice con el duemilanove.

El cableado es muy similar al de el artículo, pero para mi montaje la resistencia de 2K que propone no me daba apenas variaciones en el gráfico, funcionó mucho mejor con una de 10K.

Codigo

int NIVEL_VERDE=75;
int NIVEL_AMARILLO=80;
int NIVEL_ROJO=95;

void setup()
{
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  digitalWrite(2, HIGH);
  delay(500);
  digitalWrite(3, HIGH);
  delay(500);
  digitalWrite(4, HIGH);
  delay(500);
}

void loop()
{
  int lectura = analogRead(A0);
  if ( lectura > NIVEL_ROJO)
  {
    digitalWrite(4, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(2, HIGH);
  }
  else
  {
    if ( lectura > NIVEL_AMARILLO)
    {
    digitalWrite(4, LOW);
    digitalWrite(3, HIGH);
    digitalWrite(2, HIGH);
    }
    else
    {
      if ( lectura > NIVEL_VERDE)
      {
        digitalWrite(4, LOW);
        digitalWrite(3, LOW);
        digitalWrite(2, HIGH);
      }
      else
      {
        digitalWrite(4, LOW);
        digitalWrite(3, LOW);
        digitalWrite(2, LOW);
      }
    }
  }

  Serial.println(lectura);
  delay(20);
}

Usandolo

A mi como detector de mentiras ... pues no funcionó, no detectaba variaciones, ni muchas ni pocas, estaba la gráfica plana.

La manera mas interesante que encontré de generar variaciones fue con presión. Poniendo la mano en el borde de la mesa y apretando los electrodos y soltando se generaba la siguiente gráfica.

Detector01.png

De forma consistente, con la mano relajada esta en torno a los 70 y con ella apretada entre 90 y 100. Ajustando los valores de las variables globales NIVEL_VERDE, NIVEL_AMARILLO y NIVEL_ROJO puedes jugar a ir encendiendo y apagando los LEDs con la presión de la mano. Otro experimento posible y curioso es jugar con otras variables corporales y ver como influyen en la gráfica, por ejemplo a mi me funcionó con la respiración, respirando fuerte y rápido se observaban cambios en la gráfica con respecto a la respiración en reposo.