Eine Frage zu diesem Sketch Teil
Die vielen if Abfragen dieser Zustandsabfrage von MS sind etwas langsam.
Die Abfrage funktioniert auch erst, seit ich MS mit den Variablen und nicht direkt mit den Zahlen vergleiche. [?]
void LED_Ampel()
{
if ((MS) == (MS2)) digitalWrite(led24, HIGH);
if ((MS) == (MS2)) digitalWrite(led26, HIGH);
if ((MS) == (MS2)) digitalWrite(led28, LOW ); // turn two LEDs ON
{
}
if ((MS) == (MS1)) digitalWrite(led24, HIGH);
if ((MS) == (MS1)) digitalWrite(led26, LOW );
if ((MS) == (MS1)) digitalWrite(led28, LOW ); // turns one LED off
{
}
if ((MS) == (MS0)) digitalWrite(led24, LOW );
if ((MS) == (MS0)) digitalWrite(led26, LOW );
if ((MS) == (MS0)) digitalWrite(led28, LOW ); // turns all red LEDs off
{
}
if ((MS) >= (MS3)||(MS) < (MS0)) digitalWrite(led24, LOW );
if ((MS) >= (MS3)||(MS) < (MS0)) digitalWrite(led26, LOW );
if ((MS) >= (MS3)||(MS) < (MS0)) digitalWrite(led28, HIGH); // turns the red LED on
}
Wie muss ich die selbe Logik anders formulieren, damit es schneller reagiert?
MS wird im Sketch inkrementiert und dekrementiert und sollte sich nur im Bereich 0-1-2 bewegen.
Kleiner Null und größer 2 sollte nicht vorkommen.
MS0 = 0; MS1 = 1 ; MS2 = 2; MS3 = 3;
Wer hilft mir da etwas weiter?
Gruß, Apus²
Hier habe ich eine Übung, als ich die 16x4 Displays ausprobiert habe.
Den Teil mit der Kurzfassung und Kleinbuchstaben, habe ich erst gestern eingefügt. 
In dieser Art, könnte ich auch bei der MS-Abfrage eine Lösung gebrauchen.
/* ÜBUNG Apus_Apus 01.04.2013
* LiquidCrystal_16x4_Testen_OK
* DV16400 liquid crystal display
*/
// Pinbelegung des Displays
// LCD.RS - pin 7
// LCD.En - pin 8
// LCD.D4 - pin 3
// LCD.D5 - pin 4
// LCD.D6 - pin 5
// LCD.D7 - pin 6
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 3, 4, 5, 6);
int x = 0; // Spalten - Zähler
int z = 0; // Zeilen - Zähler
String stringType = " "; // Zeichen
void setup() {
lcd.begin(16,4); // DV16400 liquid crystal display
}
void loop() {
lcd.clear();
lcd.setCursor(0 ,0);lcd.print("1. Zeile 0,0");
lcd.setCursor(0 ,1);lcd.print("2. Zeile 0,1");
lcd.setCursor(16,0);lcd.print("3. Zeile 16,0");
lcd.setCursor(16,1);lcd.print("4. Zeile 16,1");
delay (2000) ;
lcd.clear();
delay ( 300) ;
// Beginn der Kurzform und ohne delay; schnell
for (int z = 0; z< 2; z++){
for (int y = 0; y< 2; y++){
y = y *16; lcd.setCursor(y ,z);
for (int x = 0; x< 16; x++){
stringType = String(x,HEX);
lcd.print (stringType);
}
}
}
// Ende der Kurzform
delay (3000) ; // Zeit zum Staunen :-))
lcd.clear();
// lange Form mit delay und langsamer
lcd.setCursor(0 ,0);lcd.print("0"); // erste Zeile
delay (100);
lcd.setCursor(1 ,0);lcd.print("1");
delay (100);
lcd.setCursor(2 ,0);lcd.print("2");
delay (100);
lcd.setCursor(3 ,0);lcd.print("3");
delay (100);
lcd.setCursor(4 ,0);lcd.print("4");
delay (100);
lcd.setCursor(5 ,0);lcd.print("5");
delay (100);
lcd.setCursor(6 ,0);lcd.print("6");
delay (100);
lcd.setCursor(7 ,0);lcd.print("7");
delay (100);
lcd.setCursor(8 ,0);lcd.print("8");
delay (100);
lcd.setCursor(9 ,0);lcd.print("9");
delay (100);
lcd.setCursor(10 ,0);lcd.print("A");
delay (100);
lcd.setCursor(11 ,0);lcd.print("B");
delay (100);
lcd.setCursor(12 ,0);lcd.print("C");
delay (100);
lcd.setCursor(13 ,0);lcd.print("D");
delay (100);
lcd.setCursor(14 ,0);lcd.print("E");
delay (100);
lcd.setCursor(15 ,0);lcd.print("F");
delay (100) ; // zweite Zeile
lcd.setCursor(0 ,1);lcd.print("0");
delay (100);
lcd.setCursor(1 ,1);lcd.print("1");
delay (100);
lcd.setCursor(2 ,1);lcd.print("2");
delay (100);
lcd.setCursor(3 ,1);lcd.print("3");
delay (100);
lcd.setCursor(4 ,1);lcd.print("4");
delay (100);
lcd.setCursor(5 ,1);lcd.print("5");
delay (100);
lcd.setCursor(6 ,1);lcd.print("6");
delay (100);
lcd.setCursor(7 ,1);lcd.print("7");
delay (100);
lcd.setCursor(8 ,1);lcd.print("8");
delay (100);
lcd.setCursor(9 ,1);lcd.print("9");
delay (100);
lcd.setCursor(10 ,1);lcd.print("A");
delay (100);
lcd.setCursor(11 ,1);lcd.print("B");
delay (100);
lcd.setCursor(12 ,1);lcd.print("C");
delay (100);
lcd.setCursor(13 ,1);lcd.print("D");
delay (100);
lcd.setCursor(14,1);lcd.print("E");
delay (100);
lcd.setCursor(15,1);lcd.print("F");
delay (100) ; // dritte Zeile
lcd.setCursor(16,0);lcd.print("0");
delay (100);
lcd.setCursor(17,0);lcd.print("1");
delay (100);
lcd.setCursor(18,0);lcd.print("2");
delay (100);
lcd.setCursor(19,0);lcd.print("3");
delay (100);
lcd.setCursor(20,0);lcd.print("4");
delay (100);
lcd.setCursor(21,0);lcd.print("5");
delay (100);
lcd.setCursor(22,0);lcd.print("6");
delay (100);
lcd.setCursor(23,0);lcd.print("7");
delay (100);
lcd.setCursor(24,0);lcd.print("8");
delay (100);
lcd.setCursor(25,0);lcd.print("9");
delay (100);
lcd.setCursor(26,0);lcd.print("A");
delay (100);
lcd.setCursor(27,0);lcd.print("B");
delay (100);
lcd.setCursor(28,0);lcd.print("C");
delay (100);
lcd.setCursor(29,0);lcd.print("D");
delay (100);
lcd.setCursor(30,0);lcd.print("E");
delay (100);
lcd.setCursor(31,0);lcd.print("F");
delay (100) ; // vierte Zeile
lcd.setCursor(16 ,1);lcd.print("0");
delay (100);
lcd.setCursor(17 ,1);lcd.print("1");
delay (100);
lcd.setCursor(18 ,1);lcd.print("2");
delay (100);
lcd.setCursor(19,1);lcd.print("3");
delay (100);
lcd.setCursor(20,1);lcd.print("4");
delay (100);
lcd.setCursor(21,1);lcd.print("5");
delay (100);
lcd.setCursor(22,1);lcd.print("6");
delay (100);
lcd.setCursor(23 ,1);lcd.print("7");
delay (100);
lcd.setCursor(24,1);lcd.print("8");
delay (100);
lcd.setCursor(25,1);lcd.print("9");
delay (100);
lcd.setCursor(26 ,1);lcd.print("A");
delay (100);
lcd.setCursor(27 ,1);lcd.print("B");
delay (100);
lcd.setCursor(28 ,1);lcd.print("C");
delay (100);
lcd.setCursor(29 ,1);lcd.print("D");
delay (100);
lcd.setCursor(30 ,1);lcd.print("E");
delay (100);
lcd.setCursor(31 ,1);lcd.print("F");
delay (3000);
}