Skocz do zawartości

borpio

Użytkownicy
  • Zawartość

    5
  • Rejestracja

  • Ostatnio

Reputacja

2 Neutralna

O borpio

  • Ranga
    2/10
  1. Witam, dzięki za odpowiedź =). Dodałem małą płytkę stykowa i zamocowalem ją 2 trytytkami na koszu od baterii wygląda to nienajgorzej. Podłączyłem linijkę identycznie jak w kursie 2 z arduino z C i dwoma R do shieldu i wszystko działa, linijce dałem kod wariant 2 czerwono niebieski. Przejrzałem co prawda przykłady z biblioteki ale na razie odpuscilem ten temat (knight ridera ;). Niestety na te chwile nie kupiłem hot glue. Próbowałem kropelka i poxipol ale nic z tego. Więc nie wiem czy czujnik odległości dodam. Czy jeśli bym jednak chciał go dodać i podłączyć serwo czy obecne zasilanie to wytrzyma? Nie odejmujac linijki mam na myśli. Z jednej strony mocno zależy mi na projekcie ale nie wiem czy dam radę mądrze zmienić kod z odcinka o czujniku aby się to nie gryzlo z sterowaniem przez telefon w sensie ja sobie a robót sobie =)) bo taki uzyskalem efekt ale co prawda przy źle przymocowanym czujniku odległości.
  2. Dzięki za szybką odpowiedź . W przypadku cyfrowo sterowanych diod RGB mam do wykorzystania na płytce sterownika dwa wolne piny D12 i D13 oraz masę np. przy wyprowadzeniach ADC?. Czy linijka diod programowalnych WS2812 też wchodzi w grę?, aby ją podłączyć konieczne było by (chyba) umieszczenie małej płytki stykowej np. na koszyku z bateriami żeby podłączyć do niej rezystory i kondensator ?. Dobrze kombinuje? bo wariant z "wiszeniem rezystorów i kondensatorów w powietrzu" ze względów estetycznych nie wchodzi w grę. Linijkę chyba bym umieścił z przodu i chciałbym uzyskać efekt jak w serialu knight rider :D. Pozdrawiam Piotr
  3. Witam ponownie, do projektu robota dodałem moduł bluetooth HC-05 i podłączyłem go przez UART (zdjęcie w załączniku), oraz zainstalowałem na smartfon aplikacje do sterowania 'Blue control V2.0' (zdjęcie w załączniku). Działa to dobrze i oprogramowane są przyciski: strzałka w górę: jazda (niby :D) do przodu, środkowy przycisk stop, strzałka w dół: jazda do tyłu strzałki w lewo i w prawo: obrót w lewo i w prawo. Serwo zamocowałem najpierw na recepturkę, ale przypadkowo znalazłem odpowiednie wkręty (recepturka została na zdjęciu...). Następnie dodałem czujnik odległości, z tymże wersja zamocowania na gumki u mnie się nie sprawdza, czujnik po chwili jazdy i paru wykryciach przeszkody skierowuje się w dół więc cały czas wykrywa przeszkodę (siebie). Dzisiaj próbowałem go przykleić kropelką bo nie mam wspomnianego w kursie hot glue, niestety ta opcja też wypadła podobnie jak z gumką za mało jest miejsca na "styk" (tylko ten brzeg kółka z 2 stron) myślę że może wypełnię to koło jakimś małym kółkiem i przykleję je, a potem czujnik, jak to też wyjdzie słabo to kupie hot glue. Jeśli chodzi o kod to oprócz kodu z kursu z ostatniego odcinka dodałem kod związany z komunikacją bluetooth i przyciskami z aplikacji. Zastanawiam się i proszę o pomoc co mógłbym tu jeszcze dodać fajnego i żeby mi wystarczyło na to zasilania??? (może dodać koszyk na baterie) może oświetlenie??? (posiadam części z kursu elektroniki: poziom 1 i 2 Arduino: 1 i 2 i techniki cyfrowej). Na koniec zamieszczam kod: #define L_PWM 5 #define L_DIR 4 #define R_PWM 6 #define R_DIR 9 #define PWM_MAX 165 #define BUZZER 10 #define trigPin 7 #define echoPin 8 #include <Servo.h> Servo serwo; #define SERWO_PIN 11 void setup() { //konfiguracja pinów od mostka H pinMode(L_DIR, OUTPUT); pinMode(R_DIR, OUTPUT); pinMode(L_PWM, OUTPUT); pinMode(R_PWM, OUTPUT); //buzzer pinMode(BUZZER, OUTPUT); digitalWrite(BUZZER, 0); //wyłączenie buzzera //czujnik odleglosci pinMode(trigPin, OUTPUT); //trig jako wyjście pinMode(echoPin, INPUT); //echo jako wejście serwo.attach(SERWO_PIN); //serwo do pinu 11 serwo.write(90); //serwo na pozycje 90 (bo zakres 0-180) Serial.begin(9600); } void loop() { if (Serial.available() > 0) { char data = Serial.read(); //odczyt danych z modułu hc-05 switch (data) { case 'U': //do przodu leftMotor(95); rightMotor(95); delay(2000); break; case 'D': //do tyłu leftMotor(-95); rightMotor(-95); delay(2000); break; case 'C': //stop leftMotor(0); rightMotor(0); break; case 'L': //obrót w lewo leftMotor(-95); rightMotor(95); break; case 'R': //obrót w prawo leftMotor(95); rightMotor(-95); break; } } //czy wykryto przeszkode w zakresie 0-40 cm if (zmierzOdleglosc() > 40) { leftMotor(40); //jeśli nie to jedź prosto rightMotor(40); } else { //jeśli przeszkoda stopMotors(); //zatrzymaj robota serwo.write(20); //skręć czujnikiem w prawo delay(800); //poczekaj 800 ms dla ustabilizowania konstrukcji //sprawdź, czy po prawej stronie jest przeszkoda if (zmierzOdleglosc() > 40) { //jeśli jest pusto leftMotor(40); rightMotor(-40); delay(400); //obracaj w prawo przez 400 ms } else { //jeśli po prawej jest przeszkoda serwo.write(160); //obróć czujnik w lewo delay(800); //poczekaj 800 ms dla ustabilizowania konstrukcji //sprawdź, czy po lewej stronie jest przeszkoda if (zmierzOdleglosc() > 40) { //jeśli jest pusto leftMotor(-40); rightMotor(40); delay(400); //obracaj w lewo przez 400 ms } else { //jeśli z przodu, z lewej i prawej jest przeszkoda digitalWrite(BUZZER, 1); delay(500); digitalWrite(BUZZER, 0); //daj sygnał buzzerem } } //po sprawdzeniu przeszkód po bokach //ustaw czujnik prosto serwo.write(90); } //opoznienie 100ms ponieważ nie ma potrzeby sprawdzać przeszkód częściej delay(100); } int zmierzOdleglosc() { 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 leftMotor(int V) { if (V > 0) { //jeśli prędkość jest większa od 0 (dodatnia) V = map(V, 0, 100, 0, PWM_MAX); digitalWrite(L_DIR, 0); //kierunek do przodu analogWrite(L_PWM, V); //ustawienie prędkości } else { V = abs(V); //funkcja abs() zwróci wartość V bez znaku V = map(V, 0, 100, 0, PWM_MAX); digitalWrite(L_DIR, 1); //kierunek: do tyłu analogWrite(L_PWM, V); //ustawienie prędkości } } void rightMotor(int V) { if (V > 0) { //jeśli predkość jest większa od 0 (dodatnia) V = map(V, 0, 130, 0, PWM_MAX); //130 bo prawy silnik słabszy digitalWrite(R_DIR, 0); //kierunek: do przodu analogWrite(R_PWM, V); //ustawienie predkości } else { V = abs(V); //funkcja abs() zwróci wartość V bez znaku V = map(V, 0, 130, 0, PWM_MAX); //130 bo prawy silnik słabszy digitalWrite(R_DIR, 1); //kierunek: do tyłu analogWrite(R_PWM, V); //ustawienie prędkości } } void stopMotors() { analogWrite(L_PWM, 0); //wyłączenie lewego silnika analogWrite(R_PWM, 0); //wyłączenie prawego silnika }
  4. Dziękuje za szybką odpowiedź. Mam pytanie czy takie podłączenie wykorzystując UART jak na poniższym schemacie będzie poprawne do komunikacji i sterowania robotem?. Czy może trzeba wykorzystać wyprowadzenia oznaczone w żółtej ramce (5V, GND i np. D13 D12)?. A może obie opcje będą złe :)?. Z góry dziękuje za odpowiedź.
  5. Witam, mam następujący problem i bardzo proszę o poradę. Mianowicie chciałem podłączyć do robota z "kursu robotów" moduł bluetooth aby móc sterować robotem za pomocą smartfona. W tym celu zamówiłem moduł bluetooth HC-05, ale dzisiaj zamiast tego dostałem z tego co wygooglowałem prawdopodobnie moduł "PL2303" (link poniżej) : https://www.instructables.com/id/USB-to-TTL-Converter-PL2303HX/ Zdjęcia realne modułu. Moje pytanie brzmi czy jestem w stanie go podłączyć do robota z kursu? i sterować robotem przez smartfon ???. Chciałem wykonać podobny projekt jak ten: https://circuitdigest.com/microcontroller-projects/g-sensor-controlled-robot-car-arduino Czy jest to wykonalne?. Z góry dziękuje za pomoc i pozdrawiam.
×
×
  • Utwórz nowe...