Skocz do zawartości

Arduino losowe sterowanie servem


Andrzejbrzez

Pomocna odpowiedź

 modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 100; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(35);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 100; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(35);                       // waits 15ms for the servo to reach the position
  }
  delay(1000);
}

Witam serdecznie

Jestem tu nowy i kompletnie zielony i liczę na Waszą pomoc

Jest to program wgrany z przykładów do serva

Troche zmieniłem kąty i czasy

Oraz ostatnia komende którą wpisałem delay(1000); robi mi przerwy miedzy kolejnymi ruchami serwa

moje proźby o pomoc sa nastepujące

By ostatnia komenda delay chodziła losowo w zakresie czasu 1000 - 3000

By cała pętla powtarzała się losową ilość razy w zakresie 10- 50 ruchów serwa

By po każdej takiej pętli - powiedzmy serwo robi losowo 25 ruchów następowała przerwa zanim program zacznie wykonywać kolejną pętle i tu też losowo czasy od 1 do 6 minut

 

Link do komentarza
Share on other sites

Funkcja random()

W przykładzie wrzucasz wartość zebraną z ADC - służy to zaseedowaniu generatora szumem z kanału ADC, aby przy kolejnym uruchomieniu wartości losowe były inne.

Mając taką funkcję możesz losować jakie chcesz wartości.

Jeżeli jednak szum ma mieć postać funkcyjną polecam lekturę "Perlin Noise" albo "Simplex noise" ale chyba powyższe wystarczy.

 

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

@Andrzejbrzez, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

Sposób generowanie liczb losowych został również omówiony w naszym kursie Arduino. Znajdziesz tam konkretne przykłady, które powinny naprowadzić Cie na rozwiązanie: Kurs Arduino – #10 – wykresy, liczby losowe, warunki cd.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Czy ktoś pomoże napisać mi pare linijek tego kodu ? proszeeee !!!!!!

nie wiem jak to w pętlach napisać prosze o pomoc

4 godziny temu, Gieneq napisał:

Funkcja random()

W przykładzie wrzucasz wartość zebraną z ADC - służy to zaseedowaniu generatora szumem z kanału ADC, aby przy kolejnym uruchomieniu wartości losowe były inne.

Mając taką funkcję możesz losować jakie chcesz wartości.

Jeżeli jednak szum ma mieć postać funkcyjną polecam lekturę "Perlin Noise" albo "Simplex noise" ale chyba powyższe wystarczy.

 

Prosze mi pomóc ujac to jakos w tych petlach ja sobie nie poradze z tym 😞

Link do komentarza
Share on other sites

W artykule, który linkowałem w moim pierwszym poście z tego tematu jest przykład: "Losowe miganie diodą", który robi właśnie to o co pytasz (wprowadza losowe opóźnienia do programu). Czy przeczytałeś artykuł i próbowałeś uruchomić tamten przykład?

Link do komentarza
Share on other sites

tak i 100 innych filmów na youtubie  i wszystko to samo

nie ma nigdzie konkretnych przykładów 

pisałem od poczatku jestem zielony

próbuje ale przy sprawdzaniu programu ciagle jakies błedy mi zaznacza 

kazdy omawia jakies gotowe programy z arduino ale cos zmodyfikowac zrobic cos nowego to juz problem nawet profesor automatyki u którego byłem rozłożył rece bo tylko jakies schematy wyuczone ma 

ogólnie masakra 

no nic ale dziekuje za chceci 

 

Link do komentarza
Share on other sites

@Andrzejbrzez, poniżej jest kod z artykułu, który linkuje:

void setup() {
  pinMode(13, OUTPUT);
  randomSeed(analogRead(0));
}
 
void loop() {
  int czasWlaczona = random(10, 100); //Wartość z zakresu 10 - 99
  int czasWylaczona = random(5, 50); //Wartość z zakresu 5 - 49
  
  czasWlaczona = czasWlaczona * 10; //Wartość z zakresu 100 - 990, skok co 10
  czasWylaczona = czasWylaczona * 10; //Wartość z zakresu 50 - 490, skok co 10
 
  digitalWrite(13, HIGH);
  delay(czasWlaczona);
  digitalWrite(13, LOW);
  delay(czasWylaczona);
}

Czy naprawdę po przeczytaniu artykułu i wykonaniu ćwiczeń nadal nie potrafisz sobie odpowiedzieć na poniższe pytanie?

23 minuty temu, Andrzejbrzez napisał:

delay(1000);

jak zrobić by było losowo miedzy 1000 a 3000 ?

Przecież to jest dokładnie to samo, tylko musisz sobie zmienić zakres. Naprawdę nie rozumiem gdzie w tym miejscu pojawia się u Ciebie problem.

Link do komentarza
Share on other sites

(edytowany)

Bardzo dziekuje za pomoc ale dalej błedy wywala masakra jakas ja sie poddaje ale dziekuje za rady 

w wierszu   randomSeed(analogRead(0));   bład

/* Sweep
 by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.

 modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object}void setup() {
  pinMode(13, OUTPUT);
  randomSeed(analogRead(0));
}

void loop() {
  for (pos = 0; pos <= 100; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(35);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 100; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(35);                       // waits 15ms for the servo to reach the position
  }
  delay(1000);
}

 

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object}void setup() {
  pinMode(13, OUTPUT);
  randomSeed(analogRead(0));
}

void loop() {
  int czasWlaczona = random(10, 100); //Wartość z zakresu 10 - 99
  int czasWylaczona = random(5, 50); //Wartość z zakresu 5 - 49
  
  czasWlaczona = czasWlaczona * 10; //Wartość z zakresu 100 - 990, skok co 10
  czasWylaczona = czasWylaczona * 10; //Wartość z zakresu 50 - 490, skok co 10
 
  digitalWrite(13, HIGH);
  delay(czasWlaczona);
  digitalWrite(13, LOW);
  delay(czasWylaczona);
}
  for (pos = 0; pos <= 100; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(35);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 100; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(35);                       // waits 15ms for the servo to reach the position
  }
  delay(1000);
}

teraz ta linijka

for (pos = 100; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees

nie umiem dla mnie to chinski kurcze chciałem to komus zlecic zapłacic pisałem maile kazdy sie wycofał i to nie pisze tylko o tym forum 😞

poprostu chce cos zbudowac nie wnikajac tygodniami w zagadnienia programistyczne 

chce sie na mechanice skupić  

Nic mi nie mówi to sterowanie diodą w połaczeniu o sterowanie servem gdzie sa podane konty obrotu skoki itd 

Edytowano przez Andrzejbrzez
Link do komentarza
Share on other sites

11 godzin temu, Andrzejbrzez napisał:

nie umiem dla mnie to chinski kurcze chciałem to komus zlecic zapłacic pisałem maile kazdy sie wycofał i to nie pisze tylko o tym forum 😞

poprostu chce cos zbudowac nie wnikajac tygodniami w zagadnienia programistyczne 

Umieść w takim razie zlecenie w dziale z ogłoszeniami o pracy - na pewno ktoś chętny się znajdzie. Link do odpowiedniego działu: https://forbot.pl/forum/kategoria/12-sprzedamkupiezamieniepraca/ Polecam tylko dobrze, konkretnie opisać problem i zadanie do zrealizowania. Zwiększysz wtedy swoje szans na znalezienie chętnego 🙂

Link do komentarza
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ę »
×
×
  • 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.