Skocz do zawartości

Krigare

Użytkownicy
  • Zawartość

    3
  • Rejestracja

  • Ostatnio

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Lulea

Osiągnięcia użytkownika Krigare

Aktywny debiutant

Aktywny debiutant (2/19)

  • To już rok!
  • To już 5 lat!

Odznaki

0

Reputacja

  1. Zadanie 5.4 #include <Servo.h> //Biblioteka odpowiedzialna za serwa Servo serwomechanizm; //Tworzymy obiekt, dzięki któremu możemy odwołać się do serwa int wychylenie = 0; //Wychylenie ramienia serwa String odebrane = ""; //Odbierane dane z konsoli void setup() { serwomechanizm.attach(9); //Serwomechanizm podłączony do pinu 9 serwomechanizm.write(0); //Ustawienie serwomechanizmu do pozycji 0 Serial.begin(9600); // Inicjacja konsoli Serial.println("Witaj \nProszę podać do jakiej pozycji ma się obrócić serwomechanizm \nDostępny zakres 0-180"); } void loop() { if(Serial.available() > 0){ //Spawdza czy sa przesylane dane z konsoli odebrane = Serial.readStringUntil('\n'); //Wczytywanie danych z konsoli wychylenie = odebrane.toInt(); //Zamiana tekstu na cyfre if((odebrane == "0" && wychylenie == 0) || (wychylenie > 0 && wychylenie <= 180)){ //Warunek sprawdzajacy czy jest podane "0" lub zakres 1-180. Eliminuje to błąd zamiany tekstu na zero prze funnkcję toInt(). serwomechanizm.write(wychylenie); //Wykonanie ruchu serwomechanizmu } else{ Serial.println("Podałeś złą wartość. \nDostępny zakres 0-180"); } } delay(50); //Opóźnienie dla lepszego efektu } Miałem małe problemy z int ale w końcu udało mi się opanować. Zauważyłem coś dziwnego w moim serwomechanizmie jak podaję wartość z przedziału 0-3 to "buczy" i stabilizator się zaczyna grzać. Nie wiem czy mam rację ale mam wrażenie jak by serwo chciało się wychylić poza blokadę. Nie wiem jak dokładnie działa funkcja toInt() ale w moim przypadku przy podaniu tekstu zamienia go na "0". Przeglądnąłem cały ten temat i nie zauważyłem, żeby ktoś w warunku wykluczał ten przypadek. Jest gdzieś dostępna dokumentacja arduino w języku polskim? Przeglądając temat zauważyłem że kolega użył funkcji, co nie znałem i nie mogłem odnaleźć. Zadanie 5.5 #include <Servo.h> //Biblioteka odpowiedzialna za serwa Servo serwomechanizm; //Tworzymy obiekt, dzięki któremu możemy odwołać się do serwa int wychylenie = 10; //Wychylenie ramienia serwa dla bezpieczenstwa ustaw 10+ int bylo = 0; // Zmienia do sprawdzania czy bayla wczesniej taka wartość void setup() { serwomechanizm.attach(9); //Serwomechanizm podłączony do pinu 9 serwomechanizm.write(wychylenie); //Ustawienie serwomechanizmu do pozycji "wychylenie" Serial.begin(9600); // Inicjacja konsoli Serial.println("Witaj \nMożesz tu monitorować w jakiej pozycji powinno znajdować się serwomechanizm"); } void loop() { wychylenie = map(analogRead(A5), 0, 1023,0, 181); //Przypisanie przeskanowanej wartosci z pinu A5 if(wychylenie >= 0 && wychylenie <= 180) { //Warunek blokujący maxymalna liczbę z funkcji map() if(wychylenie != bylo) { // Warunek sprawdzający czy była wcześniej taka wartość serwomechanizm.write(wychylenie); //Ustawienie serwomechanizmu do pozycji "wychylenie" Serial.print(wychylenie); Serial.println(" stopni"); bylo = wychylenie; //Przypisanie nowej zmiennej do ponownego sprawdzenia } } delay(50); //Opóźnienie dla lepszego efektu }
  2. Treker Przydało by się poprawić w kursie to co Pakos napisał. Wybacz, że to piszę ale chwilę się męczyłem niczym doszedłem to tego co Pakos. Już myślałem że uszkodziłem Arduino.
  3. Witam wszystkich. Ja sobie wykombinowałem coś takiego #define zielona 8 #define czerwona 9 bool led_zielona = false; bool led_czerwona = false; 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" && !led_zielona) { digitalWrite(zielona, HIGH); led_zielona = true; } else if(odebraneDane == "zielona" && led_zielona) { digitalWrite(zielona, LOW); led_zielona = false; } else if(odebraneDane == "czerwona" && !led_czerwona) { digitalWrite(czerwona, HIGH); led_czerwona = true; } else if(odebraneDane == "czerwona" && led_czerwona) { digitalWrite(czerwona, LOW); led_czerwona = false; } else { Serial.println("Nie ma takiego koloru."); Serial.println("Prawidlowy kolor to:"); Serial.println("zielona"); Serial.println("czerwona"); } } } Chciałem zapytać czy można zagęścić Serial.println? Chciałem to zrobić w ten sposób: Serial.println("Nie ma takiego koloru." + '/n' + "Prawidlowy kolor to:" + '/n'+ "zielona" + '/n' + "czerwona"); Okazało się że nie można używać operatora "+" do tekstu. Jest jakiś inny sposób? Fajne rozwiązanie ma Michal_78 w kodzie. Nie wiedziałem że, "LOW" jest równoznaczne z "false"
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.