Skocz do zawartości

tiger333

Użytkownicy
  • Zawartość

    7
  • Rejestracja

  • Ostatnio

Wszystko napisane przez tiger333

  1. Witam, Mam zamiar stworzyć robota psa. Narazie jest to wszystko w fazie projektów. Ale zastanawiam się nad dwoma sprawami. Robota chce zrobić za pomocą arduino oraz odpowiedniej ilości serwomechanizmu do chodzenia. Robot sterowany na podczerwień. 1. Czy da się zrobić programowo możliwość chodzenia po schodach czy musiałbym dołożyć jakieś czujniki ? 2. Myślałem też nad szczekaniem, czy jest taka możliwość poprzez dołożenie buzzera czy musiałbym to inaczej rozwiązać?
  2. Hmm, zastanowię się nad tym lecz jeśli chodzi o budowę funkcji kierowałem się kursem budowy robota z tej strony.
  3. Robot jest z zestawu Lixbot Racer, wersja czterokołowa. Tak czujnik działa poprawnie sprawdzone wszystko osobno. Zasilane z dwóch akumulatorów Typu 18650
  4. Witam, mam mały problem z moim robotem, otóż kończą mi się już pomysły co mam nie tak. Według poniższego kodu robot powinien do czasu napotkania przeszkody. Przy napotkaniu przeszkody serwo ma skręcić w prawo i czujnik ma sprawdzić czy jest "czysto", jeśli tak to skręca w prawo, jeśli nie, to serwo ma obrócić się w lewo i tak jak wcześniej sprawdza przeszkodę. Jeśli po obu stronach jest przeszkoda to ma jechać przez sekundę do tyłu. Problem w tym, że jak go włączę to jedzie przód/ tył czasem serwo się obróci. Dodam, że jak próbowałem bez serwa i czujnika mając program do samej jazdy na różne strony to działał poprawnie. Poniżej wstawiam cały kod: #include <Servo.h> //biblioteka serwomechanizmu Servo servo; // definicja nazwy serwomechanizmu int predkosc=150; // piny ustalone dla silnikow zgodnie z podlaczeniem int ENA=3; int IN1=6; int IN2=7; int IN3=8; int IN4=9; int ENB=11; #define servoPin 10 #define trigPin 2 //ustawienie pinow czujnika odleglosci #define echoPin 4 void setup() { servo.attach(servoPin); servo.write(30); pinMode(trigPin,OUTPUT); // ustawienie wyjsc czujnika odleglosci pinMode(echoPin,INPUT); pinMode(ENA,OUTPUT); // konfiguracja wyjsc silnikow pinMode(ENB,OUTPUT); pinMode(IN1,OUTPUT); //lewy silnik pinMode(IN2,OUTPUT); //lewy silnik pinMode(IN3,OUTPUT); //prawy silnik pinMode(IN4,OUTPUT); //prawy silnik } void loop() { if(zmierzOdleglosc()>20){ //jesli nie ma przeszkody jedz przod przod(); }else{ // wykryto przeszkode stop hamowanie(); servo.write(0); // sprawdz przeszkode po prawej delay(800); } if(zmierzOdleglosc()>20){ //jesli nie ma przeszkody jedz prawo prawo(); delay(400); }else{ //przeszkoda obroc czujnik w lewo servo.write(60); delay(800); } if(zmierzOdleglosc()>20){ // jesli nie ma przeszkody jedz lewo lewo(); delay(400); }else{ // jesli jest preszkoda jedz tyl 1s i wyprostuj servo tyl(); delay(1000); servo.write(30); } delay(100); } int zmierzOdleglosc(){ // pomiar odleglosci w cm long czas,dystans; digitalWrite(trigPin,LOW); delayMicroseconds(2); digitalWrite(trigPin,HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW); czas=pulseIn(echoPin,HIGH); dystans=czas/58; return dystans; } void przod(){ analogWrite(ENA, predkosc); // deklaracja predkosci do przodu analogWrite(ENB, predkosc); digitalWrite(IN1,LOW); //deklaracja jazdy do przodu digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); } void tyl(){ analogWrite(ENA, predkosc); // deklaracja predkosci do tylu analogWrite(ENB, predkosc); digitalWrite(IN1,HIGH); //deklaracja jazdy do tylu digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); } void lewo(){ analogWrite(ENA, predkosc); // deklaracja predkosci w lewo analogWrite(ENB, predkosc); digitalWrite(IN1,HIGH); //deklaracja jazdy na lewo digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); } void prawo(){ analogWrite(ENA, predkosc); // deklaracja predkosci w prawo analogWrite(ENB, predkosc); digitalWrite(IN1,LOW); //deklaracja jazdy na prawo digitalWrite(IN2,HIGH); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); } void hamowanie(){ analogWrite(ENA, predkosc); // deklaracja predkosci hamowania analogWrite(ENB, predkosc); digitalWrite(IN1,HIGH); //deklaracja hamowania digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,HIGH); }
  5. Wiem wiem problem dla mnie jest znalezienie sposobu na odliczenie ustawionego czasu i pokazaniu tego na wyświetlaczu
  6. Witam, jestem tu nowy uczę się dopiero Arduino, ale wpadłem na pomysł by zrobić projekt minutnika, który będzie odmierzał ustawiony czas, pokazując na wyświetlaczu 2X16. Sterowanie odbywa się za pomocą 3 przycisków. Pierwszy zeruje pomiar, drugi go ustawia, a trzeci startuje odliczenie. Udało mi się ustawiać czas, ale problem jest z jego odliczeniem, znalazłem coś takiego jak biblioteka timers, ale nie wiem czy to pomoże. Chciałbym, aby odmierzenie było widoczne na wyświetlaczu. Oto kod, który dotychczas stworzyłem. Próbowałem analogicznie do tego zrobić odliczanie, ale niestety nie działa. #include <LiquidCrystal.h> LiquidCrystal lcd(2,3,4,5,6,7); byte sekundy=0; byte minuty=0; byte godziny=0; bool statusMinutnika=0; void setup() { lcd.begin(16,2); pinMode(8, INPUT_PULLUP); // ustawienie pinów pinMode(9, INPUT_PULLUP); pinMode(10, INPUT_PULLUP); lcd.setCursor(0,1); lcd.print("00:00:00"); } void loop() { lcd.setCursor(0,0); lcd.print("Pomiar"); if (digitalRead(9)==LOW){ // zeruje pomiar sekundy=0; minuty=0; godziny=0; lcd.setCursor(0,1); lcd.print("00:00:00"); statusMinutnika=0; } if (digitalRead(8)==LOW){ // wciśnięcie przycisku do ustawienia czasu sekundy = sekundy + 1; if (sekundy == 60){ // zmienia 60 sekund na kolejna minute minuty = minuty + 1; sekundy = 0; if (minuty == 60){ // zmienia 60 minut na kolejna godzine godziny = godziny + 1; minuty = 0; if (godziny < 10){ // ustawia kursor w odpowiednie miejsce dla godzin lcd.setCursor(1,1); } else { lcd.setCursor(0,1); } lcd.print(godziny); lcd.setCursor(3,1); lcd.print("00"); // zeruje minuty na wyswietlaczu po przekroczeniu 59 } if (minuty < 10){ // ustawia kursor w odpowiednie miejsce dla minut lcd.setCursor(4,1); } else { lcd.setCursor(3,1); } lcd.print(minuty); lcd.setCursor(6,1); lcd.print("00"); // zeruje sekundy na wyswietlaczu po przekroceniu 59 } if (sekundy < 10){ // ustawia kursor w odpowiednie miejsce dla sekund lcd.setCursor(7,1); } else { lcd.setCursor(6,1); } lcd.print(sekundy); delay(100); zapamietanyCzas=digitalRead(8); } } }
  7. Hej, Jestem tu nowy uczę się z tego kursu. Postanowiłem zrobić też własny projekt. Na podstawie zadania o stoperze jestem w trakcie tworzenia programu pod nazwą minutnik. Czas ustawiam z przycisku i to mam ogarnięte. Natomiast mam problem z odliczeniem ustawionego czasu. Uruchomienie odliczania czasu ma być z przycisku. Niestety moje próby z pętlą for, if nie wychodzi. Znalazłem coś takiego jak biblioteka Timers lecz jeszcze nie miałem czasu jej sprawdzić. Czy to może pomóc? Pomiar również ma być widoczny na wyświetlaczu 2x 16.
×
×
  • Utwórz nowe...