Krawi92 Październik 13, 2021 Udostępnij Październik 13, 2021 Serial.readStringUntil('n') Pierwszy babol.. Odczytaj do końca znaku linii czyli '\n'. Poza tym sprawdź jeszcze raz podłączenie zielonej Led, czy działa itp 1 Cytuj Link do komentarza Share on other sites More sharing options...
Bartroz Październik 13, 2021 Udostępnij Październik 13, 2021 Witam, wie ktoś dlaczego nie działa mi monitor portu szeregowego, tzn. mogę go uruchomić jednakże nie mogę "wejść" w to okno. Reinstalacja softwaru arduino nic nie pomogła. Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Październik 14, 2021 Udostępnij Październik 14, 2021 @Bartroz niezabardzo mogę sobie wyobrazić jak to może wyglądać, mógłbyś wrzucić zdjęcie? Dla testu możesz spróbować inny monitor, np TeraTerm albo Putty z ustawieniami dla "Serial". Cytuj Link do komentarza Share on other sites More sharing options...
jefrey Październik 14, 2021 Udostępnij Październik 14, 2021 @Krawi92 miałeś rację co do tego babola 🤣 Tylko to mi robiło konflikt , dzięki , Czytałem z 10 razy i tego nie ogarnąłem 😅 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Bartroz Październik 14, 2021 Udostępnij Październik 14, 2021 @Gieneq Po włączeniu monitoru portu szeregowego z zakładki narzędzia, uruchamia mi okno jednak nie mogę go odpalić. A próba najechania na niego kursorem skutkuje brakiem reakcji, to jakby monitor się uruchamiał i natychmiastowo zawieszał i nie reagował. Na dołączonej grafice najechałem na okno z moniotorem (COM3) jednakże pokazuje od razu mój pulpit. Cytuj Link do komentarza Share on other sites More sharing options...
ebucior Październik 19, 2021 Udostępnij Październik 19, 2021 (edytowany) Cześć, chciałem pochwalić się działającymi kodami. Choć zrobiłem zadania i kody rzeczywiście działają, to nie bardzo rozumiem działania boolean, a szczególnie składni (zakładam, że to jeszcze pojawi się na kursie) boolean cosTam = false Czy to oznacza, że na wstępie wszystko wyłączamy, a później stan podlega modyfikacjom? Poniżej kod: [code] //Zadanie 2.4 //Włączanie diody i komunikat o błędzie #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); //Wylaczamyg diody digitalWrite(czerwona, LOW); } void loop() { if (Serial.available() > 0) { //Czy Arduino odebrało dane //Jesli tak, to odczytujemy jes do znaku konca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "zielona") { //Jesli odebrano slowo "zielona" digitalWrite(zielona, HIGH); //To wlaczamy diode zielona delay(1000); digitalWrite(zielona, LOW); } else if (odebraneDane == "czerwona") { //Jesli odebrano slowo "czerwona" digitalWrite(czerwona, HIGH); //To wlaczamy diode czerwona delay(1000); digitalWrite(czerwona, LOW); } else { //Jesli inne slowo digitalWrite(czerwona, LOW); //pozostaw czerwoną zgaszoną Serial.println("Uwaga! Błędne polecenie!"); //Wyswietla komunikat o bledzie } } } [/code] oraz [code] //Zadanie domowe 2.5 //Przeciwny kolor diody lub komunikat o błędzie #define zielona 8 #define czerwona 9 String odebraneDane = ""; //Pusty ciąg odebranych danych boolean stanZielonej = false; boolean stanCzerwonej = false; void setup() { Serial.begin(9600); //Uruchomienie komunikacji pinMode(zielona, OUTPUT); //Konfiguracja wyjść pinMode(czerwona, OUTPUT); digitalWrite(zielona, LOW); //Wylaczamy diody digitalWrite(czerwona, LOW); } void loop() { if (Serial.available() > 0) { //Czy Arduino odebrało dane //Jesli tak, to odczytujemy jes do znaku konca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "zielona") { //Jesli odebrano slowo "zielona" stanZielonej = !stanZielonej; //zmiana stanu diody zielonej na przeciwny } else if (odebraneDane == "czerwona") { //Jesli odebrano slowo "czerwona" stanCzerwonej = !stanCzerwonej; } else { //Jesli inne slowo Serial.println("Uwaga! Błędne polecenie!"); //Wyswietla komunikat o bledzie } digitalWrite(zielona, stanZielonej); digitalWrite(czerwona, stanCzerwonej); } } [/code] Z programowaniem dopiero zaczynam i pewnie moje pytania są "oczywiste", ale może się czegoś nauczę;) Edytowano Październik 19, 2021 przez ebucior Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta Październik 19, 2021 Udostępnij Październik 19, 2021 52 minuty temu, ebucior napisał: nie bardzo rozumiem działania boolean, a szczególnie składni (zakładam, że to jeszcze pojawi się na kursie) boolean cosTam = false Czy to oznacza, że na wstępie wszystko wyłączamy, a później stan podlega modyfikacjom? boolean to typ zmiennej (jak int/char/float/etc) ktory moze przechowywac tylko dwa stany..."false" i " true"... false to to samo co stan niski i "0"...natomiast true to to samo co stan wysoki i "1" W twoim przypadku jak najbardziej mozesz modyfikowac te zmienne..nawet musisz zeby kod dzialal tak jak ma dzialac... Na starcie diody sa zgaszone (czyli false) 1 Cytuj Link do komentarza Share on other sites More sharing options...
jareklmx Październik 24, 2021 Udostępnij Październik 24, 2021 Niestety słabo się trochę przegląda te watki więc nie wiem czy moje pytanie już nie padło (jeśli padło to przepraszam), w zadaniu 2.5 sugerujesz użycie dodatkowej zmiennej ale to chyba nie jest konieczne ? czy może błędem jest używanie do output portów polecenia digitalRead ? mój kod poniżej #define zielona 8 #define czerwona 9 String odebraneDane = ""; void setup() { Serial.begin(9600); pinMode(zielona, OUTPUT); pinMode(czerwona, OUTPUT); digitalWrite(zielona, LOW); digitalWrite(czerwona, LOW); } void loop() { if(Serial.available() > 0) { odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "zielona") { if (digitalRead(zielona) == LOW){ digitalWrite(zielona, HIGH); }else{ digitalWrite(zielona, LOW); } } else if (odebraneDane == "czerwona") { if (digitalRead(czerwona) == LOW){ digitalWrite(czerwona, HIGH); }else{ digitalWrite(czerwona, LOW); } } else{ Serial.println("zle dane " +odebraneDane); } } } 1 Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Październik 25, 2021 Udostępnij Październik 25, 2021 @jareklmx jest to dobry sposób, a nawet jest lepszy: digitalWrite(!digitalRead(pin), pin); Dodatkowa zmienna może się przydać, gdybyś chciał napisać bardziej uniwersalny program gdzie niekoniecznie używasz wyprowadzeń czy LED. 1 Cytuj Link do komentarza Share on other sites More sharing options...
n1ckenn Listopad 6, 2021 Udostępnij Listopad 6, 2021 String odebraneDane = ""; //Pusty ciąg odebranych danych boolean czyCzerwonaZapalona = false; boolean czyZielonaZapalona = false; 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 odebrało dane //Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "zielona") { //Jeśli odebrano słowo "zielona" if(czyZielonaZapalona==false){ digitalWrite(zielona, HIGH); //To włączamy diodę zieloną czyZielonaZapalona=true; } else { digitalWrite(zielona, LOW); czyZielonaZapalona=false; } } else if (odebraneDane == "czerwona") { //Jeśli odebrano słowo "czerwona" if(czyCzerwonaZapalona==false){ digitalWrite(czerwona, HIGH); czyCzerwonaZapalona=true;//To włączamy diodę zieloną } else { digitalWrite(czerwona, LOW); czyCzerwonaZapalona=false; } } else { Serial.println("Podany zły kolor diody!"); } } } Jakby ktoś potrzebował kodu z zadaniami domowymi to tak to u mnie wygląda :) 1 Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Listopad 8, 2021 Udostępnij Listopad 8, 2021 @n1ckenn super 🙂 Plus za ładnie opisane zmienne ➕ Cytuj Link do komentarza Share on other sites More sharing options...
Mateo Listopad 9, 2021 Udostępnij Listopad 9, 2021 Witam chciałbym się dowiedzieć się jaka jest różnica w działaniu takiego kodu if (digitalRead(przycisk == LOW)){ w stosunku do takiego kodu if (digitalRead(przycisk) == LOW){ Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta Listopad 9, 2021 Udostępnij Listopad 9, 2021 Druga wersja jest prawidlowa...i tak sie ja powinno zapisywac...digitalRead to nic innego jak funkcja z jednym argumentem krora zwraca true lub false 1 Cytuj Link do komentarza Share on other sites More sharing options...
Krawi92 Listopad 9, 2021 Udostępnij Listopad 9, 2021 Nie mam jak stestowac ale dla mnie nie ma żadnej różnicy w działaniu Cytuj Link do komentarza Share on other sites More sharing options...
farmaceuta Listopad 9, 2021 Udostępnij Listopad 9, 2021 34 minuty temu, Krawi92 napisał: ale dla mnie nie ma żadnej różnicy w działaniu Zakladajac ze prxycisk ma wartosc 10... if (digitalRead(10 == LOW)){ Jako argument podaje warunek ktory sie nie jest prawdziwy bo 10 nie jest rowne LOW (czyli 0) wiec rozwineie sie to do postaci if (digitalRead(false)){ A nastepnie.. if (digitalRead(0)) Czyli chyba nie o to nam chodzilo...😉 no tak mi sie wydaje... 1 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!