Mahlzeit...
Ich bastel grad ein altes Wahlscheiben Telefon zu einem Alkoholtester um.
Der Sensor befindet sich im Hörer an der Stelle des Mic´s.
Sketch habe ich Teils aus dem Netz...läuft soweit auch ganz gut...die Stellen der Anzeige sollen noch mittig, aber das mache ich später.
Derweil bin ich aber an einer Sache die nicht ganz gut klappt.
Ich möchte den Analogwert als höchsten Peak halten..ohne den ganzen sketch nur das AnalogRead geht das auch, aber ich bekomme ihn nicht in den Alkoholtester Sketch rein
Hier der Sketch in dem es geht:
int maxval = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(maxval);
int reading = analogRead(A0);
if ( reading > maxval ) {maxval = reading;}
delay(1);
}
Hier der Alkoholsketch
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
int TIME_UNTIL_WARMUP = 10;
unsigned long time;
int analogPin = 0;
int val = 0;
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
}
void loop() {
delay(100);
val = readAlcohol();
printTitle();
printWarming();
time = millis()/1000;
if(time<=TIME_UNTIL_WARMUP)
{
time = map(time, 0, TIME_UNTIL_WARMUP, 0, 100);
display.drawRect(10, 50, 110, 10, WHITE); //Empty Bar
display.fillRect(10, 50, time,10,WHITE);
}else
{
printTitle();
printAlcohol(val);
printAlcoholLevel(val);
//display.drawPixel(0, 0, WHITE);
//display.drawPixel(127, 0, WHITE);
//display.drawPixel(0, 63, WHITE);
//display.drawPixel(127, 63, WHITE);
}
display.display();
}
void printTitle()
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(20,0);
display.println("Telefon Leitung");
}
void printWarming()
{
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(6,14);
display.println("Verbindung");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(20,35);
display.println("wird hergetellt");
}
void printAlcohol(int value)
{
display.setTextSize(4);
display.setTextColor(WHITE);
display.setCursor(17,17); //1. Wert vor Zurück 2. Hochrunter
display.println(val);
}
void printAlcoholLevel(int value)
{
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(10,56);
if(value<200)
{
display.println(" Trink mal was.");
}
if (value>=200 && value<280)
{
display.println(" Nur ein Bier ?");
}
if (value>=280 && value<350)
{
display.println(" Ohh es wird besser");
}
if (value>=350 && value <450)
{
display.println(" Schnappes?");
}
if(value>450)
{
display.println(" Du bist Voll !");
}
}
int readAlcohol()
{
int val = 0000;
int val1;
int val2;
int val3;
display.clearDisplay();
val1 = analogRead(analogPin);
delay(10);
val2 = analogRead(analogPin);
delay(10);
val3 = analogRead(analogPin);
val = (val1+val2+val3)/3;
return val;
}
Ich habe ihn schon überall reingemogelt aber das resultat is nicht der Peak
Ganz ehrlich versteh ich auch nicht den readAlcohol teil
Vielleicht mag jemand helfen
Lg Lisa