nix_mehr_frei
Im endgültigen Programm, würde ich aufm LCD in einer Art "Menü" hin und her wechseln, und bei diesem Vorgang stört die Verzögerung, aber wenn sich die immer auf der Tatsache beruht, dass der Kondensator vom Temperatursensor zu langsam aufläd, dann werde ich wohl mit der Verzögerung leben müssen. ._. Außer euch würde noch was einfallen, womit man die Verzögerung wenigstens fürs wechsel zu einem anderen Menüpunkt "überspringen" kann. Das wechseln zu den einzelnen Punkten habe ich über viele If schleifen gelöst, welche dann immer zu bedingen Werten erfüllt werden. Ich wechsel im Menü über das drehen eines verstellbaren Widerstand. Hier dann noch ein paar Auszüge dazu.
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#include <OneWire.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
OneWire oneWire(9);
DallasTemperature sensors (&oneWire);
void setup() {
sensors.begin();
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(10, INPUT);
pinMode(9, INPUT);
pinMode(8, INPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
lcd.begin(20, 4);
}
void loop() {
// Vierter Punkt Links ------------------------------------------
if(analogRead(A0) < 1023 && analogRead(A0) > 850 ){
lcd.setCursor(0, 0);
lcd.print("Vierter Punkt Rechts");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("LINKS Drehen! ");
}
// Dritter Punkt Recht ------------------------------------------
if(analogRead(A0) < 850 && analogRead(A0) > 750){
lcd.setCursor(0, 0);
lcd.print("Dritter Punkt Rechts");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("LINKS Drehen! RECHTS");
}
// Zweiter Punkt Rechts -----------------------------------------
if(analogRead(A0) < 750 && analogRead(A0) > 650){
lcd.setCursor(0, 0);
lcd.print("Zweiter Punkt Rechts");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("LINKS Drehen! RECHTS");
}
***************************************************
***************************************************
***************************************************
// Erster Punkt Rechts ------------------------------------------
if(analogRead(A0) < 650 && analogRead(A0) > 550){
sensors.requestTemperatures();
float currentTemp0;
currentTemp0 = sensors.getTempCByIndex(0);
Serial.print("Temp0 = ");
Serial.print("\t");
Serial.print(currentTemp0);
lcd.setCursor(0, 0);
lcd.print("Temperatur -A1 - -A3");
lcd.setCursor(0, 1);
lcd.print(currentTemp0);
lcd.setCursor(5, 1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("LINKS Drehen! RECHTS");
}
***************************************************
***************************************************
***************************************************
// Mitte des Menüs ----------------------------------------------
if(analogRead(A0) < 550 && analogRead(A0) > 450){
lcd.setCursor(0, 0);
lcd.print(" Erster Test! ");
lcd.setCursor(0, 1);
lcd.print("Display Einstellung.");
lcd.setCursor(0, 3);
lcd.print("LINKS Drehen! RECHTS");
}
// Erster Punkt Links -------------------------------------------
if(analogRead(A0) < 450 && analogRead(A0) > 350){
if(analogRead(A0) < 450 && analogRead(A0) > 350 && digitalRead(10) == 1){
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}
lcd.setCursor(0, 0);
lcd.print(".Erster Punkt Links.");
lcd.setCursor(0, 1);
lcd.print(" Press -S1 to Laser ");
lcd.setCursor(0, 3);
lcd.print("LINKS Drehen! RECHTS");
}
// Zweiter Punkt Links ------------------------------------------
if(analogRead(A0) < 350 && analogRead(A0) > 250){
lcd.setCursor(0, 0);
lcd.print("Zweiter Punkt Links.");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("LINKS Drehen! RECHTS");
}
// Dritter Punkt Links ------------------------------------------
if(analogRead(A0) < 250 && analogRead(A0) > 150){
lcd.setCursor(0, 0);
lcd.print("Dritter Punkt Links.");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("LINKS Drehen! RECHTS");
}
// Vierter Punkt Links ------------------------------------------
if(analogRead(A0) < 150 && analogRead(A0) > 0){
lcd.setCursor(0, 0);
lcd.print("Vierter Punkt Links.");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" Drehen! RECHTS");
}
}
Hier mal doch lieber das ganze bisherige Programm,
störender Teil durch Sternchen makiert.