Skocz do zawartości
Komentator

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki

Pomocna odpowiedź

Wepnij dwa kondensatory ceramiczne i będzie dobrze. Możesz też wpiąć jeden ceramiczny, a drugi elektrolityczny. W tym układzie, przy prostym teście działania serwa nie będzie to robiło większej różnicy 😉

Udostępnij ten post


Link to post
Share on other sites

@Treker Wow, naprawdę? Nie spodziewałem się tego. A jest różnica między takimi układami? Czy efekt będzie taki sam? (Części układu są na zdjęciach.)IMG_20190424_231914.thumb.jpg.70f8bcd8afbea5cadd1abf1b039bd706.jpgIMG_20190424_232043.thumb.jpg.d6d0698f36a895cf1ee0841d1d86d908.jpg

Na jednym z nich jest duży kondensator z przodu, a na drugim z tyłu. Możliwe, że ich kolejność jest obojętna, ale wolę się spytać. Ogólnie to sory za tyle pytań, ale taką mam naturę, że jak czegoś nie rozumiem, to pytam się do skutku. Pozdrawiam 😉

Udostępnij ten post


Link to post
Share on other sites

Witam, mam małe pytanie, otóż wykonałem zadanie 5.4 i zastanawia mnie jedna rzecz. Oto mój kod:

#include <Servo.h>

Servo servo;

void setup(){
  Serial.begin(9600); 
  servo.attach(9);
  servo.write(0); //napisałem tak bo zauważyłem że domyślne położenie to 90 stopni. 
}
 
void loop() {

  if(Serial.available()){
    
     int rotate = Serial.parseInt();

     if(rotate>180){
        Serial.println("Rotacja musi być <= 180");
     }
     else{
        Serial.println("Ok!");
        servo.write(rotate); 
        delay(200);
        Serial.println("Powrót...");
        servo.write(0);   
     }
  }
}

Myślałem że problemy z kodem mnie tu nie dotyczą bo jakieś tam lekkie doświadczenie z programowaniem już mam, a jednak "kajam się w prochu i popiele" 😕 Otóż po wpisaniu wartości w monitorze warunek wykonuje się zawsze dwa razy, czyli dostaje informacje zwrotną:

Ok!

Powrót...

Ok!

Powrót...

Patrzę na kod i nie wiem co jest grane, z góry dziękuję za pomoc i pozdrawiam.

Udostępnij ten post


Link to post
Share on other sites

Dopisz zaraz za linią pobierającą rotate:

Serial.println(rotate);

Zobacz co Ci zwróci.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

@Panda jest, ale w tym wypadku nie będzie żadnej odczuwalnej różnicy. Możesz zostawić dowolną wersję i będzie dobrze.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
Dnia 25.04.2019 o 09:36, ethanak napisał:

Dopisz zaraz za linią pobierającą rotate:


Serial.println(rotate);

Zobacz co Ci zwróci.

@ethanak Dziękuje za odpowiedź, przepraszam że piszę dopiero teraz ale wzięła mnie choroba i dopiero teraz jestem w stanie odpisać. To dodatkowe zero na końcu ( widocznie zalegające w danych wejściowych ) to koniec łańcucha, znak nowego wiersza? Bo nie jestem pewien skąd się bierze.

Udostępnij ten post


Link to post
Share on other sites

@JAKPAD zmień ustawienia podczas wysyłania danych to się przekonasz 😉 Najpewniej właśnie ten znaki końca linii wprowadzają u Ciebie takie zamieszanie.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »

×