Skocz do zawartości

Kurs Arduino - #8 - Sterowanie silnikami DC, pętla for


Komentator

Pomocna odpowiedź

(edytowany)

Cześć wszystkim! 🙂

Zadania.
Zadanie 8.1
 

void setup() {
  pinMode(6, OUTPUT); // Sygnał PWM silnika 1
  digitalWrite(6, HIGH); // Ustawiamy (na stałe) stan wysoki na pinie 6

  pinMode(5, OUTPUT); // Sygnał PWM silnika 2
  digitalWrite(5, HIGH); // Ustawiamy na stałe stan wysoki na pinie 5

  pinMode(7, OUTPUT); // Sygnały sterujące kierunkiem obrotów silnika nr 1
  pinMode(8, OUTPUT);

  pinMode(5, OUTPUT); // Sygnały sterujące kierunkiem obrotów silnika nr 2
  pinMode(4, OUTPUT);
}

void loop() {
  digitalWrite(7, LOW); // Silnik nr 1 - w przód
  digitalWrite(8, HIGH);

  digitalWrite(5, LOW); // Sinlin nr 2 - w przód
  digitalWrite(4, HIGH);
  delay(3000);

  digitalWrite(7, HIGH); // Silnik nr 2 - obroty w prawo
  digitalWrite(8, LOW);

  digitalWrite(5, LOW); // Silnik nr 2 - obroty w lewo
  digitalWrite(4, HIGH);
  delay(3000);

  digitalWrite(7, HIGH); // Silnik nr 1 - w tył
  digitalWrite(8, LOW);

  digitalWrite(5, HIGH); // Silnik nr 2 - w tył
  digitalWrite(4, LOW);
  delay(3000);

}

Zadanie 8.2 dla pętli While:

int ledBlink = 0;

void setup() {
  Serial.begin(9600);
  pinMode(8, OUTPUT);

  digitalWrite(8, LOW);
}

void loop() {
  
  while(ledBlink < 5){
    digitalWrite(8, HIGH);
    delay(1000);
    digitalWrite(8, LOW);
    delay(1000);
    ledBlink++;
  }

}

Miałem także dla FOR, ale chyba nadpisałem projekt programu pętlą while.

Zadanie 8.3

String userInput;
int userToInt = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("Podaj liczbe z zakresu 0-9");

}

void loop() {
  while(Serial.available() == 0){}

  userInput = Serial.readStringUntil('\n');
  if(userInput.toInt() >= 0 && userInput.toInt() <= 9){
    userToInt = userInput.toInt();
    for(userToInt; userToInt != 0; userToInt--){
      Serial.print("*");
    }
  }else{
    Serial.println("Podaj liczbe z zakresu 0-9");
  }

}

 

Zadanie 8.4

int motorSpeed = 0;

void setup() {
  pinMode(6, OUTPUT); // Sygnał silnika PWM nr 1

  pinMode(7, OUTPUT); // Sygnały sterujące kierunkiem obrotów silnika nr 1
  pinMode(8, OUTPUT);

  digitalWrite(7, LOW); // Silnik nr 1 - obroty w lewo
  digitalWrite(8, HIGH);
}

void loop() {
  for (motorSpeed; motorSpeed <= 255; motorSpeed++){
    analogWrite(6, motorSpeed); // Spokojne rozpędzanie silnika
    delay(25);
  }

  for (motorSpeed; motorSpeed >= 0; motorSpeed--){
    analogWrite(6, motorSpeed);
    delay(25);
  }

}

 

Edytowano przez FTNewbie
  • Lubię! 1
Link do komentarza
Share on other sites

String data = ""; //Data send by UART
int value = 0; //Data changed to int
int i = 0; //Data for operation within for loop

void setup() {
  Serial.begin(9600); //UART communication start
}

void loop() {
  if(Serial.available() > 0) { //Whether Arduino get data
    data = Serial.readStringUntil('\n'); //If yes, read them to the end of line and save 
    value = data.toInt(); //Change data to int
    if(value <= 9) { //Function to designate of max value  
      for(int i = 0; i < value; i++) { //Function to count stars number 
        Serial.print("*"); //Stars display 
      }
    }  
    Serial.print("\n"); //Line end
  }
}

 

Link do komentarza
Share on other sites

Zadanie 8.4

void setup() {
  pinMode(6, OUTPUT); // PWM signal motor 1

  pinMode(7, OUTPUT); // Control signal of direction turn at motor 1
  pinMode(8, OUTPUT);

  digitalWrite(7, LOW); // Motor 1 - left turnover direction
  digitalWrite(8, HIGH);
}

void loop() {
  for(int i = 0; i <= 255; i++) {
    analogWrite(6, i); // Motor acceleration
    delay(25);
  }
  for(int i = 255; i >= 0; i--) { 
    analogWrite(6, i); // Motor slowdown 
    delay(25);
  }
}
Link do komentarza
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!

Gość
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...

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.