Lügendetektor
Material
- senseBox_MCU
- OLED-Display
- STJ-Adapterkabel
- STJ-Male Kabel
- Male-Male Kabel
- 1*470Ω Widerstand
Aufbau
Zunächst wird das JST-Adapterkabel an dein Display und an ein I2C/Wire Port angeschlossen. Nun steckst du das JST-Male Kabel in einen Digital Port deiner Wahl. Das schwarze Kabel (GND) findet in diesem Experiment keine Verwendung. Das rote Kabel (5V) steckst du auf dein Breadboard und verlängerst dieses mittels eines Male-Male Kabels, sodass hier ein freies Ende entsteht. Schließe nun eines der beiden übrig gebliebenen Kabel (grün/gelb) ebenfalls in ein freiliegenden Slot des Breadboards. Über einen Widerstand verbindest du nun das Kabel (grün/gelb) mit ein Male-Male Kabel, sodass du jetzt ein freies Ende hast, welches du in die Hand nehmen kannst. Das Kabel dient als dein Leitfähigkeitssensor.
Programmierung
1. Auslesen des Sensors
int val = 0; //Teil der Deklaration
int analogPin = A1;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(analogPin); // Analog Pin, welcher ausgelesen wird
Serial.println(val);
}
2. Einbindung des Display
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <senseBoxIO.h>
#include <Plot.h>
const double TIMEFRAME = 15;
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
Plot DataPlot(&display);
void setup() {
senseBoxIO.powerI2C(true);
delay(2000);
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
display.display();
delay(100);
display.clearDisplay();
DataPlot.setXLabel("T");
DataPlot.setYLabel("Lf");
DataPlot.setXRange(0, 15);
DataPlot.setYRange(0, 1024);
DataPlot.setXTick(5);
DataPlot.setYTick(0);
DataPlot.setXPrecision(0);
DataPlot.setYPrecision(0);
}
void loop() {
DataPlot.clear(); double starttime = millis();
double t = 0;
while (t <= TIMEFRAME) {
t = (millis() - starttime) / 1000.0;
int value = ... // Was soll ausgegeben werden ?
DataPlot.addDataPoint(t, value);
}
display.display();
display.clearDisplay();
}
Lösung
gesamter Quellcode
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <senseBoxIO.h>
#include <Plot.h>
const double TIMEFRAME = 15;
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
Plot DataPlot(&display);
int val = 0;
int analogPin = A1;
void setup() {
Serial.begin(9600);
senseBoxIO.powerI2C(true);
delay(2000);
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
display.display();
delay(100);
display.clearDisplay();
DataPlot.setXLabel("T");
DataPlot.setYLabel("Lf");
DataPlot.setXRange(0, 15);
DataPlot.setYRange(0, 1024);
DataPlot.setXTick(5);
DataPlot.setYTick(0);
DataPlot.setXPrecision(0);
DataPlot.setYPrecision(0);
}
void loop() {
DataPlot.clear(); double starttime = millis();
double t = 0;
while (t <= TIMEFRAME) {
val = analogRead(analogPin);
int wert = val;
t = (millis() - starttime) / 1000.0;
int value = wert / 2;
DataPlot.addDataPoint(t, value);
Serial.println(wert);
}
display.display();
Serial.println(val);
display.clearDisplay();
}
Durchführung
Um nun den im Display dargestellen Graphen zu verändern, musst du lediglich die beiden Kabel des Digital Ports jeweils in einer Hand halten. Du solltes eine Veränderung im Display feststellen, was die Leitfähigkeit deiner Haut wiederspiegelt. Das Ergebnis zeigt, dass deine Haut ein Leiter für Strom ist. Dies wird durch den hohen y-Wert (Lf), welcher im Graphen gezeigt wird dargestellt.Wie bekomme ich ein Ergebnis?
Was bedeutet das Ergebnis?