Skocz do zawartości

Wortan

Użytkownicy
  • Zawartość

    10
  • Rejestracja

  • Ostatnio

Reputacja

2 Neutralna

O Wortan

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. @Treker Przeglądając odpowiedzi tutaj odnalazłem pańską odpowiedź w której osoba miała taki sam problem. Pomogło ustawienie opcji "brak zakończenia linii".
  2. Witam czytających. Mam problem z zadaniem 6.2 . Otóż jak wpisuje literę koloru to oprócz zaświecenia się diody na Monitorze portu szeregowe wyświetla się tekst z błędem mimo że jeden z warunków został spełniony. Nie wiem gdzie popełniam błąd. Oto mój kod #define zielona 3 #define czerwona 2 int odebraneDane = 0; //Pusty ciąg odebranych danych void setup() { Serial.begin(9600); //Uruchomienie komunikacji pinMode(zielona, OUTPUT); //Konfiguracja wejsć pinMode(czerwona, OUTPUT); digitalWrite(zielona, LOW); //Wyłączamy diody digitalWrite(czerwona, LOW); Serial.println("Wpisz kolor - c (czerwony) lub z (zielony)"); } void loop() { while(Serial.available() == 0) {} odebraneDane = Serial.read(); switch (odebraneDane) { case 'z': digitalWrite(zielona, HIGH); //To włączamy diodę zieloną delay(1000); digitalWrite(zielona, LOW); break; case 'c': digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną delay(1000); digitalWrite(czerwona, LOW); break; default: Serial.println("Podałes złe dane!"); break; } } Z góry dziękuje za odpowiedzi. Edit: Już nieważne. Znalazłem rozwiązanie.
  3. Mam pytanie do zadania 4.5. Czy jest możliwość usuwania danych wysyłanych przez monitor portu szeregowego do Arduino?
  4. @ethanak Tak ustawiałem. Wtedy powtarza się poprawny napis. No nie może. Jak coś to ja nie pytam się o rozwiązanie problemu tylko odpowiadałem na zadania domowe z tematu. Jeśli zostało to źle zinterpretowane to przepraszam.
  5. Odpowiedzi do pytań z tematu: Jeśli wybiorę inną prędkość transmisji to program zamiast tekstu będzie wstawiał stale te same znaki. Im większa prędkość tym jest ich więcej i są inne. W terminalu cały czas będzie się pojawiała liczba 0. Kiedy wartość z zakresu 0-255 zostanie przekroczona program zaczyna znowu liczyć od 0. Program wysyłający komunikat w przypadku podania złego koloru: #define zielona 8 #define czerwona 9 String odebraneDane = ""; //Pusty ciąg odebranych danych boolean poprawnosc = false; //Poprawnosc odebranych danych void setup() { Serial.begin(9600); //Uruchomienie komunikacji pinMode(zielona, OUTPUT); //Konfiguracja wejsć pinMode(czerwona, OUTPUT); digitalWrite(zielona, LOW); //Wyłączamy diody digitalWrite(czerwona, LOW); } void loop() { if(Serial.available() > 0) { //Czy Arduino odebrało dane //Jesli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); if (odebraneDane == "zielona") { //Jesli odebrano słowo "zielona" poprawnosc = true; digitalWrite(zielona, HIGH); //To włączamy diodę zieloną delay(1000); digitalWrite(zielona, LOW); } if (odebraneDane == "czerwona") { //Jesli odebrano słowo "czerwona" poprawnosc = true; digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną delay(1000); digitalWrite(czerwona, LOW); } if (poprawnosc == false) { //Jesli podano błędne dane Serial.println("Podałes złe dane!"); } poprawnosc = false; } } Program zmieniający stan po wpisaniu odpowiedniego koloru: #define zielona 8 #define czerwona 9 String odebraneDane = ""; //Pusty ciag odebranych danych boolean poprawnosc = false; boolean swiecenie_zielonej = false; boolean swiecenie_czerwonej = false; void setup() { Serial.begin(9600); //Uruchomienie komunikacji pinMode(zielona, OUTPUT); //Konfiguracja wejsć pinMode(czerwona, OUTPUT); digitalWrite(zielona, LOW); //Wyłączamy diody digitalWrite(czerwona, LOW); } void loop() { if(Serial.available() > 0) { //Czy Arduino odebrało dane //Jesli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane odebraneDane = Serial.readStringUntil('\n'); poprawnosc = false; if (odebraneDane == "zielona") { //Jesli odebrano słowo "zielona" if(swiecenie_zielonej == false){ poprawnosc = true; swiecenie_zielonej = true; odebraneDane = ""; digitalWrite(zielona, HIGH); } else { poprawnosc = true; swiecenie_zielonej = false; odebraneDane = ""; digitalWrite(zielona, LOW); } } if(odebraneDane == "czerwona") { if(swiecenie_czerwonej == false){ poprawnosc = true; swiecenie_czerwonej = true; odebraneDane = ""; digitalWrite(czerwona, HIGH); } else { poprawnosc = true; swiecenie_czerwonej = false; odebraneDane = ""; digitalWrite(czerwona, LOW); } } if(poprawnosc == false){ Serial.println("Podałeś nieprawidłowe dane!"); poprawnosc = true; } } }
  6. @Gieneq Dokładnie tak jak piszesz. Sprawdziłem już, działa. Dziękuje za odpowiedź.
  7. Witam wszystkich. Mam pytanie odnośnie zad domowego nr 1.2 . Czy podłączenie układu w taki sposób niczego nie uszkodzi?
  8. Ok, już zrozumiałem jak to działa. Całe szczęście, że miernik mi się nie uszkodził. Dziękuję bardzo za wytłumaczenie. Postaram się nie popełniać takich błędów.
  9. Witam, ćwiczenie z mierzeniem natężenia wykonałem w trochę inny sposób niż na przykładzie. Wartość natężenia w takim połączeniu wynosi około 168 mA. Czemu tak się dzieje?Rezystor ma wartość 1kΩ.
×
×
  • Utwórz nowe...