Skocz do zawartości
Komentator

Kurs Arduino - #6 - kontynuacja UART, serwomechanizmy

Pomocna odpowiedź

Witajcie,

W Podsumowaniu zauważyłem błąd w zdaniu, dwa razy powtarza się ze smutkiem.

Cytat

Część dodatkowa, uzupełniająca wyszła całkiem długa. Mam jednak nadzieję, że będzie pomocna. Ze smutkiem po raz kolejny ze smutkiem stwierdzam, że rozpisałem się zbyt mocno.

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@Stark dziękujemy za zwrócenie na to uwagi. Przyda się to przy rewizji kursu 🙂 

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

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.

Edytowano przez Wortan

Udostępnij ten post


Link to post
Share on other sites
15 godzin temu, Wortan napisał:

Edit: Już nieważne. Znalazłem rozwiązanie.

@Wortan podziel się rozwiązaniem swojego problemu - na pewno będzie to pomocne dla kogoś w przyszłości 🙂

Udostępnij ten post


Link to post
Share on other sites

@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". 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Hej wszystkim, to moja wersja rozwiązania zadania 6.1 🙂  Zostawiam ją tutaj i lecę przerabiać kurs dalej.

#define przycisk 7
int liczbaWcisniec = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);// Rozpoczęcie transmisji danych
  pinMode(przycisk, INPUT_PULLUP);//Przycisk
}


void loop() {
  // put your main code here, to run repeatedly:
  if( digitalRead(przycisk) == LOW ) { //Jesli przycisk zostanie wcisniety
    int fotorezystor1 = analogRead(A0);
    int fotorezystor2 = analogRead(A1);
    int potencjometr = analogRead(A2);
    liczbaWcisniec+=1;
  
    Serial.print("Fotorezystor 1: ");
    Serial.print(fotorezystor1*5.0/1024.0);
    Serial.print("[V] \t Fotorezystor 2: ");
    Serial.print(fotorezystor2*5.0/1024.0);
    Serial.print("[V] \t Potencjometr: ");
    Serial.print(potencjometr*5.0/1024.0);
    Serial.print("[V] \t Liczba wcisniec: ");
    Serial.print(liczbaWcisniec);
    Serial.println();
  }
 delay(200);
}

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

@kludo fajnie że wrzuciłaś swoje rozwiązanie!

Dnia 2.10.2020 o 17:08, kludo napisał:

Zostawiam ją tutaj i lecę przerabiać kurs dalej.

A ja może Cię zawrócę na chwilę 😉 taki drobny szczegół, ale edukacyjny - a przytrzymaj przycisk w tym układzie, ile razy wyświetli się linijka?

Cytat

podłączonego do Arduino wysyłaj jeden raz linijkę zawierającą informacje:

W treści zadania jest dodatkowy haczyk, klikasz przycisk i wyświetla sięnapis ale tylko raz, puszczasz i klikasz znowu, trzymasz, wyświetl się ale raz i czeka. Jak to zrobić 🙂

Ten artykuł może się przydać:

 

Edytowano przez Gieneq
  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

@Gieneq  Dziękuję za zwrócenie uwagi na haczyk, przyznam że myślałam, że szybkie naciskanie załatwi sprawę haha dobrze było się doedukować. Po poprawce mój kod wygląda następująco: 

#define przycisk 7
int liczbaWcisniec = 0;
int ostatniStan = HIGH;


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);// Rozpoczęcie transmisji danych
  pinMode(przycisk, INPUT_PULLUP);//Przycisk
}


void loop() {
int stan = digitalRead(przycisk);
  if( stan == LOW && ostatniStan == HIGH ) { //Jesli przycisk zostanie wcisniety
    int fotorezystor1 = analogRead(A0);
    int fotorezystor2 = analogRead(A1);
    int potencjometr = analogRead(A2);
    liczbaWcisniec+=1;
  
    Serial.print("Fotorezystor 1: ");
    Serial.print(fotorezystor1*5.0/1024.0);
    Serial.print("[V] \t Fotorezystor 2: ");
    Serial.print(fotorezystor2*5.0/1024.0);
    Serial.print("[V] \t Potencjometr: ");
    Serial.print(potencjometr*5.0/1024.0);
    Serial.print("[V] \t Liczba wcisniec: ");
    Serial.print(liczbaWcisniec);
    Serial.println();
  }
  ostatniStan = stan;
  delay(50);
}

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...