Skocz do zawartości

pempol

Użytkownicy
  • Zawartość

    6
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

pempol wygrał w ostatnim dniu 19 maja 2015

pempol ma najbardziej lubianą zawartość!

Reputacja

1 Neutralna

O pempol

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Wrocław/Lubartów
  1. oszczędzanie? to mi się podoba:] widziałem ten zapis w referencjach na arduino.cc, ale właśnie ze względu na wspomniane przez Ciebie pilnowanie nawiasów, trochę się rozpisałem. Myślę, że spróbuję przerobić to pod else if. pozdrawiam pempol
  2. o widzisz, spróbuję ponownie /edit Spróbowałem, zacząłem od nowa z zadaniem 2.3 i dało radę. Wcześniej miałem taką sytuację, że nawet jak wpisałem poprawny kolor to wyświetlało mi komunikat o błędzie. Po zmianie wygląda to tak. //Zadanie domowe 2.3 //Gdy wpisany zły kolor diody, wyświetla komunikat o błędzie // #define GREEN 8 #define RED 9 String odebraneDane = ""; //pusty ciąg odebranych danych void setup() { Serial.begin(9600); //Ustawienie prędkości transmisji ilość baudów //Inicjalizacja połączenia z PC pinMode(GREEN, OUTPUT); //Konfiguracja wyjść pinMode(RED, OUTPUT); digitalWrite(GREEN, LOW); //Wyłączamy diody digitalWrite(RED, LOW); } void loop() { // put your main code here, to run repeatedly: if (Serial.available() > 0) {//Czy Arduino odebrało dane //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "green") { //gdy wpisane 'green' digitalWrite(GREEN, HIGH); //wlaczamy diode GREEN delay(1000); digitalWrite(GREEN, LOW); } else { if (odebraneDane == "red") { //gdy wpisane 'red' digitalWrite(RED, HIGH); delay(1000); digitalWrite(RED, LOW); } else { //Wyświetla komunikat o błędnie wprowadzonym kolorze Serial.println("Blad. Wprowadzona nazwa nie jest obslugiwanym kolorem diody."); Serial.println("Obslugiwane kolory: 'green' oraz 'red'."); } } //end of else od odebraneDane=="green" } //end of if wprowadzono >0 znakow //pusty else } //end of void loop() I odpowiednio po zastosowaniu tego w połączeniu ze zmienną logiczną, mamy odpowiedź na zadanie 2.4, która prezentuje się tak //Zadanie domowe 2.4 //Napisz program, który po wysłaniu koloru diody zmieni jej stan na przeciwny. //Jeśli dioda jest włączona, to zostanie wyłączona i na odwrót. #define GREEN 8 #define RED 9 String odebraneDane = ""; //pusty ciąg odebranych danych boolean AreGreenON = false; //zmienna logiczna, czy GREEN (8) ON boolean AreRedON = false; //zmienna logiczna, czy Red (9) ON void setup() { Serial.begin(9600); //Ustawienie prędkości transmisji ilość baudów //Inicjalizacja połączenia z PC pinMode(GREEN, OUTPUT); //Konfiguracja wyjść pinMode(RED, OUTPUT); digitalWrite(GREEN, LOW); //Wyłączamy diody digitalWrite(RED, LOW); } void loop() { // put your main code here, to run repeatedly: if (Serial.available() > 0) {//Czy Arduino odebrało dane //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "green") { //jak wpisane 'green' delay(100); AreGreenON = !AreGreenON; //negacja wartosc AreGreenOn digitalWrite(GREEN, AreGreenON); //To włączamy lub wyłaczamy diodrę GREEN delay(500); Serial.println("AreGreenON = "); Serial.println(AreGreenON); Serial.println(""); } else { //w przeciwnym wypadku if (odebraneDane == "red") { //gdy wpisane 'red' delay(100); AreRedON = !AreRedON; //negacja wartosci AreRedOn digitalWrite(RED, AreRedON); //To wl/wyl diodę RED w zaleznosci od AreRedOn delay(500); Serial.println("AreRedON = "); Serial.println(AreRedON); Serial.println(""); } else { //w przeciwnym wypadku - od 'red' i takze od 'green' //Wyświetla komunikat o błędnie wprowadzonym kolorze Serial.println("Blad. Wprowadzona nazwa nie jest obslugiwanym kolorem diody."); Serial.println("Obslugiwane kolory: 'green' oraz 'red'."); } //end of else 'red' } //end of else od 'green' } //end of if gdy wprowadzono wiecej niz 0 znakow } //end of void loop() Miłego dnia i czekam na kolejne lekcje:] pempol
  3. Witam. I jak kursanci, ktoś podzieli się rozwiązaniami zadań domowych? Ja swoje wrzucam poniżej. Ad. Na początku rozwiązałem to za pomocą rozbudowania struktury if i dopisania na końcu kodu z kursu, jednego else. I działało, chodź jak się po chwili okazało nie dokładnie tak jak powinno. Dopiero zastosowanie funkcji case i odpowiednie przypisanie wartości zmiennej będącej przełącznikiem case dało pożądany rezultat:) //Zadanie domowe 2.3 //Gdy wpisany zły kolor diody, wyświetla komunikat o błędzie // #define GREEN 8 #define RED 9 String odebraneDane = ""; //pusty ciąg odebranych danych void setup() { Serial.begin(9600); //Ustawienie prędkości transmisji ilość baudów //Inicjalizacja połączenia z PC pinMode(GREEN, OUTPUT); //Konfiguracja wyjść pinMode(RED, OUTPUT); digitalWrite(GREEN, LOW); //Wyłączamy diody digitalWrite(RED, LOW); } void loop() { // put your main code here, to run repeatedly: if (Serial.available() > 0) {//Czy Arduino odebrało dane //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); int wybor = 0; if (odebraneDane == "green") { wybor = 1; } else { if (odebraneDane == "red") { wybor = 2; } } Serial.println("wybor = '"); Serial.println(wybor); Serial.println("'"); switch (wybor) { case 1: digitalWrite(GREEN, HIGH); //To włączamy diodrę GREEN delay(1000); digitalWrite(GREEN, LOW); break; case 2: digitalWrite(RED, HIGH); //To włączamy diodrę RED delay(1000); digitalWrite(RED, LOW); break; default: //Wyświetla komunikat o błędnie wprowadzonym kolorze Serial.println("Blad. Wprowadzona nazwa nie jest obslugiwanym kolorem diody."); Serial.println("Obslugiwane kolory: 'green' oraz 'red'."); } } } //end of void loop() I dalej. Ad. Tak jak w podpowiedzi, skorzystałem z dwóch zmiennych boolean. Na początku chciałem wprowadzić dodatkowe sprawdzanie warunku jaki stan logiczny ma dana zmienna, i na tej podstawie sterować diodą - ale rozrosło się to do wielu if'ów Na stronce oficjalnej arduino w dziale references znalazłem przykład zastosowania zmiennej typu boolean i po przeanalizowaniu tego, wrzuciłem kod do mojego szkicu. Ostatecznie po modyfikacji wcześniejszego zadania domowego, która polegała na zastosowaniu instrukcji case, użyłem tego także w tym kodzie. Całość poniżej: //Zadanie domowe 2.4 //Napisz program, który po wysłaniu koloru diody zmieni jej stan na przeciwny. //Jeśli dioda jest włączona, to zostanie wyłączona i na odwrót. #define GREEN 8 #define RED 9 String odebraneDane = ""; //pusty ciąg odebranych danych boolean AreGreenON = false; //zmienna logiczna, czy GREEN (8) ON boolean AreRedON = false; //zmienna logiczna, czy Red (9) ON void setup() { Serial.begin(9600); //Ustawienie prędkości transmisji ilość baudów //Inicjalizacja połączenia z PC pinMode(GREEN, OUTPUT); //Konfiguracja wyjść pinMode(RED, OUTPUT); digitalWrite(GREEN, LOW); //Wyłączamy diody digitalWrite(RED, LOW); } void loop() { // put your main code here, to run repeatedly: if (Serial.available() > 0) {//Czy Arduino odebrało dane //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); int wyborlabel = 0; //zmienna wyborlabel do funkcji case //przydzielenie numerow w zaleznosci od wpisanego koloru if (odebraneDane == "green") { //Jeśli odebrano słowo "green" wyborlabel = 1; Serial.println("Wpisano slowo 'green'. wyborlabel= "); Serial.println(wyborlabel); } else { //w przeciwnym wypadku if (odebraneDane == "red") { //Jeśli odebrano slowo "red" wyborlabel = 2; Serial.println("Wpisano slowo 'red'. wyborlabel= "); Serial.println(wyborlabel); } //pusty else } //koniec if odebrano green switch (wyborlabel) { //przelacznik case w zaleznosci od zmiennej wyborlabel case 1: //gdy wyborlabel=1, czyli wpisano green (case label:) delay(100); AreGreenON = !AreGreenON; //negacja wartosc AreGreenOn digitalWrite(GREEN, AreGreenON); //To włączamy lub wyłaczamy diodrę GREEN delay(500); Serial.println("AreGreenON = "); Serial.println(AreGreenON); Serial.println(""); break; //wyjscie z opcji 1 case 2: //gdy wyborlabel=2, czyli wpisano red delay(100); AreRedON = !AreRedON; //negacja wartosci AreRedOn digitalWrite(RED, AreRedON); //To wl/wyl diodę RED w zaleznosci od AreRedOn delay(500); Serial.println("AreRedON = "); Serial.println(AreRedON); Serial.println(""); break; //wyjscie z opcji 2 default: //domyslnie wybrane - w pozostale przypadki czyli wyborlabel=0 //Wyświetla komunikat o błędnie wprowadzonym kolorze Serial.println("Blad. Wprowadzona nazwa nie jest obslugiwanym kolorem diody."); Serial.println("Obslugiwane kolory: 'green' oraz 'red'."); } //end of switch (wyborlabel) } //koniec warunku, ze wprowadzono wiecej niz 0 znakow } //koniec programu main void loop() Czekam na inne rozwiązania, bo ciekaw jestem jak Wy to zrobiliście? pozdrowienia pempol
  4. Witam. Jak zobaczyłem, że Forbot zapowiedział kurs elektroniki dla początkujących to pomyślałem, że to dobra opcja by wrócić do tej tematyki:> Po wymianie kilku maili z Damianem (zaginione mierniki:P) w końcu paczka znalazła się w moich rękach. W tym miejscu mogę potwierdzić, że zamawiając zestaw, otrzymacie wszystko to, co jest wymienione w tabelce w tym artykule. Jeśli chcecie zestaw na dobry początek to jest to dobry wybór:)
×
×
  • Utwórz nowe...