Zrobiłem zadanie z gwiazdką, czy można tutaj coś ulepszyć?
#define zielona 5
#define czerwona 6
void setup() {
Serial.begin(9600);
pinMode(zielona, OUTPUT);
pinMode(czerwona, OUTPUT);
//ustawiamy odpowiednie piny jako wyjścia
}
void loop() {
static String od = "";
static boolean stanCz = 0;
static boolean stanZ = 0;
//tworzymy zmienne statyczne
if(Serial.available() > 0)
{
od = Serial.readStringUntil('\n');
if(od == "zielona")
stanZ = !stanZ;
//zmieniamy stan na przeciwny
else if(od == "czerwona")
stanCz = !stanCz;
//tak samo jak wyżej
else
Serial.println("nieznana komenda");
//jak sie wpisze głupotę, to program reaguje
}
if(stanZ > 0)
digitalWrite(zielona, HIGH); //w zależności od stanu
else //zapalamy bądź gasimy diody
digitalWrite(zielona, LOW);
if(stanCz > 0)
digitalWrite(czerwona, HIGH);
else
digitalWrite(czerwona, LOW);
}
EDIT
Zmieniłem, jest trochę krótszy. Mam pytanie, po wpisaniu komendy trzeba stosunkowo długo poczekać zanim zapali się odpowiednia dioda, które operacje zajmują kontrolerowi najwięcej czasu?
#define zielona 5
#define czerwona 6
void setup() {
Serial.begin(9600);
pinMode(zielona, OUTPUT);
pinMode(czerwona, OUTPUT);
}
void loop() {
static String od = "";
static boolean stanCz = 0;
static boolean stanZ = 0;
if(Serial.available() > 0)
{
od = Serial.readStringUntil('\n');
if(od == "zielona") {
stanZ = !stanZ;
digitalWrite(zielona, stanZ);
}
else if(od == "czerwona") {
stanCz = !stanCz;
digitalWrite(czerwona, stanCz);
}
else
Serial.println("nieznana komenda");
}
}