Witam wszystkich tu na forum. Od dwóch tygodni studiuję , uczę się elektroniki cyfrowej. Jeśli chodzi o zadanie nr. 2.4 to zrobiłem to tak:
#define zielona 8
#define czerwona 9
String odebraneDane = ""; //Pusty ciąg odebranych danych
void setup() {
Serial.begin(9600); //Uruchomienie komunikacji
pinMode(zielona, OUTPUT); //Konfiguracja wyjść
pinMode(czerwona, OUTPUT);
digitalWrite(zielona, LOW); //Wyłączamy diody
digitalWrite(czerwona, LOW);
}
void loop() {
if(Serial.available() > 0) { //Czy Arduino odebrano dane
//Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane
odebraneDane = Serial.readStringUntil('\n');
if (odebraneDane == "czerwona")//Jeśli odebrano słowo "czerwona"
{
digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną
delay(1000);
digitalWrite(czerwona,LOW);
}
else if (odebraneDane == "zielona")
{
digitalWrite(zielona,HIGH);
delay(1000);
digitalWrite(zielona,LOW);
}
else
{
Serial.println("Wpisales nie poprawny kolor!");
}
}
}
A jeśli chodzi o zadanie trudniejsze 2.5* to niestety sam nie dałem rady, tylko podpatrzyłem jak inni to zrobili... I tu mam pytanie jedne dotyczące tego zadania:
W tym zadaniu mam:
#define zielona 8
#define czerwona 9
String odebraneDane = ""; //pusty ciąg odebranych danych
boolean ZielonaOn = false; //zmienna logiczna, czy czerwona (8) ON 1
boolean CzerwonaOn = false; //zmienna logiczna, czy zielona (9) ON 1
//boolean ZielonaOn = true; //zmienna logiczna, czy czerwona (8) OFF 0
//boolean CzerwonaOn = true; //zmienna logiczna, czy zielona (9) OFF 0
void setup() {
Serial.begin(9600); //Ustawienie prędkości transmisji ilość baudów
//Inicjalizacja połączenia z PC
pinMode(zielona, OUTPUT); //Konfiguracja wyjść
pinMode(czerwona, OUTPUT);
digitalWrite(zielona, LOW); //Wyłączamy diody
digitalWrite(czerwona, LOW);
}
void loop() {
if(Serial.available() > 0) { //Czy Arduino odebrano dane
//Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane
odebraneDane = Serial.readStringUntil('\n');
if (odebraneDane == "zielona") {//jezeli wpisane zielona
delay(1000);
ZielonaOn = !ZielonaOn; //negacja wartosci ZielonaOn
digitalWrite(zielona,ZielonaOn); //wlaczamy lub wylaczamy diode zielone
delay(1000);
Serial.println("Zielona ON"); //ZielonaOn
Serial.println(ZielonaOn); // 1 lub 0
}
else if(odebraneDane == "czerwona") {
delay(100);
CzerwonaOn = !CzerwonaOn; //negacja CzerwoanaOn Operator ! neguje wartość logiczną, a więc gdy argument ma wartość true to zwraca false, a gdy false to zwraca true.
digitalWrite(czerwona,CzerwonaOn);//wlaczamy lub wylaczamy
delay(100);
Serial.println("CzerwonaOn");
Serial.println(CzerwonaOn);
}
else{
Serial.println("Wprowadzona nazwa jest zla!!!.");
Serial.println("Obslugiwane kolory to: zielona lub czerwona ");
}
}
}
Dlaczego pokazuje mi wartość 1 ?, jak powinna mi pokazywać wartość 0(bo jest false)
Jak dam wartosć "true" zamiast "false" to pokazuje mi wartość 0?
Chodzi pewnie o to ze ta wartość została znegocjowana w programie?
ZielonaOn = !ZielonaOn;
Pozdrawiam serdecznie.