Skocz do zawartości

Wszystko do robota na jednej płytce - FORBOT Robot Shield


Pomocna odpowiedź

html_mig_img
Po starcie naszego kursu budowy robotów wiele osób pytało o moduł, którego używamy podczas budowy robotów. Za pomocą jednej płytki można podłączyć do Arduino m.in. silniki, serwo, czujniki, zdalne sterowanie oraz znacznie więcej!Płytka trafiła właśnie do sprzedaży! Zachęcam do zapoznania się z peryferiami, które znajdują się na shieldzie oraz z udostępnionym schematem.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Osuch, jakie konkretnie Arduino masz na myśli 🙂? Shield był projektowany tak, aby pasować do wszystkich płytek, ale na rynku jest w tej chwili dużo różnych wynalazków/klonów, więc ciężko na 100% zagwarantować kompatybilność. W każdym razie od momentu premiery tego shielda nie mieliśmy żadnej reklamacji, która mówiłaby o tym, że płytka nie działa z jakimś Arduino.

Link do komentarza
Share on other sites

Mam jeden mały problem. Buduje robota na podstawie kursu. Po zrobieniu części konstrukcyjnej chciałem jak najszybciej zobaczyć czy układ działa. Wgrałem program do sterowania robotem przez pilota( nadpisałem przyciski i dodałem Buzzera). Po włączeniu robot nie chciał jeździć, natomiast buzzer działał. Dodam jeszcze, że podczas ręcznego kręcenia kołami zapala się czerwona lampka Mot . Dodam również, że użyłem kodu z kursu budowy robotow na forbocie.

 

 

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

Wiec tak poskładałem pojazd jak w instrukcji. podłaczyłem kable do kostek w shieldzie. a następnie wgrałem program, który steruje robotem, zeby sprawdzić czy działa skopiowałem go z forbota. Buzzer działa a silniczki nie działają. 

Program:

#include <RC5.h>

#define L_PWM 5
#define L_DIR 4
#define R_PWM 6
#define R_DIR 9
#define PWM_MAX 165

#define BUZZER 10
#define LED 13
#define TSOP_PIN 3

RC5 rc5(TSOP_PIN); //Informacja o podłączeniu odbiornika TSOP
byte address; 
byte command;
byte toggle;

void setup() {
  //Konfiguracja pinow od mostka H
  pinMode(L_DIR, OUTPUT);
  pinMode(R_DIR, OUTPUT);
  pinMode(L_PWM, OUTPUT);
  pinMode(R_PWM, OUTPUT);

  //Konfiguracja pozostalych elementow
  pinMode(BUZZER, OUTPUT);
  digitalWrite(BUZZER, 0); //Wylaczenie buzzera  
  pinMode(LED, OUTPUT); 
  digitalWrite(LED, 0); //Wylaczenie diody

  Serial.begin(9600);
}

void loop() {
 if (rc5.read(&toggle, &address, &command)){
     switch(command) {
      case 2: //Do przodu
        leftMotor(40);
        rightMotor(40);
      break;

      case 8: //Do tyłu
        leftMotor(-40);
        rightMotor(-40);
      break;

      case 5: //STOP
        stopMotors();
      break;

      case 4: //Obrót w lewo
        leftMotor(-30);
        rightMotor(30);
      break;   
      
      case 6: //Obrót w prawo
        leftMotor(30);
        rightMotor(-30);
      break;       
      
      case 12:
        digitalWrite(BUZZER, 1);
        delay(500);
        digitalWrite(BUZZER, 0);
      break;
    }
  }
}

void leftMotor(int V) {
  if (V > 0) { //Jesli predkosc jest wieksza od 0 (dodatnia)
    V = map(V, 0, 100, 0, PWM_MAX);
    digitalWrite(L_DIR, 0); //Kierunek: do przodu
    analogWrite(L_PWM, V); //Ustawienie predkosci 
  } else {
    V = abs(V); //Funkcja abs() zwroci wartosc V  bez znaku
    V = map(V, 0, 100, 0, PWM_MAX);
    digitalWrite(L_DIR, 1); //Kierunek: do tyłu
    analogWrite(L_PWM, V); //Ustawienie predkosci    
  }
}

void rightMotor(int V) {
  if (V > 0) { //Jesli predkosc jest wieksza od 0 (dodatnia)
    V = map(V, 0, 100, 0, PWM_MAX);
    digitalWrite(R_DIR, 0); //Kierunek: do przodu
    analogWrite(R_PWM, V); //Ustawienie predkosci 
  } else {
    V = abs(V); //Funkcja abs() zwroci wartosc V  bez znaku
    V = map(V, 0, 100, 0, PWM_MAX);
    digitalWrite(R_DIR, 1); //Kierunek: do tyłu
    analogWrite(R_PWM, V); //Ustawienie predkosci    
  }
}

void stopMotors() {
  analogWrite(L_PWM, 0); //Wylaczenie silnika lewego
  analogWrite(R_PWM, 0); //Wylaczenie silnika prawego
}

 

Edytowano przez Gieneq
Zachęcam do używania bloku kodu
Link do komentarza
Share on other sites

@qwertyuiop a może zrób taki test: ogranicz kod do działającego minimum - tylko ruch silniczka, bez RC5:

#define L_PWM 5
#define L_DIR 4
#define R_PWM 6
#define R_DIR 9
#define PWM_MAX 165

#define BUZZER 10
#define LED 13
#define TSOP_PIN 3

RC5 rc5(TSOP_PIN); //Informacja o podłączeniu odbiornika TSOP
byte address; 
byte command;
byte toggle;

void setup() {
  //Konfiguracja pinow od mostka H
  pinMode(L_DIR, OUTPUT);
  pinMode(R_DIR, OUTPUT);
  pinMode(L_PWM, OUTPUT);
  pinMode(R_PWM, OUTPUT);

  //Konfiguracja pozostalych elementow
  pinMode(BUZZER, OUTPUT);
  digitalWrite(BUZZER, 0); //Wylaczenie buzzera  
  pinMode(LED, OUTPUT); 
  digitalWrite(LED, 0); //Wylaczenie diody

  leftMotor(100);
}

void loop() {
}

void leftMotor(int V) {
  if (V > 0) { //Jesli predkosc jest wieksza od 0 (dodatnia)
    V = map(V, 0, 100, 0, PWM_MAX);
    digitalWrite(L_DIR, 0); //Kierunek: do przodu
    analogWrite(L_PWM, V); //Ustawienie predkosci 
  } else {
    V = abs(V); //Funkcja abs() zwroci wartosc V  bez znaku
    V = map(V, 0, 100, 0, PWM_MAX);
    digitalWrite(L_DIR, 1); //Kierunek: do tyłu
    analogWrite(L_PWM, V); //Ustawienie predkosci    
  }
}

I czy silnik się kręci?

Link do komentarza
Share on other sites

Jeżeli zapala się przy kręceniu to raczej normalna sytuacja, ale czemu nie świeci tak po prostu? Nie masz przypadkiem rozłączonej zworki? Bo tam powinien dopływać prąd z baterii.

image.thumb.png.f78af2b06bb008abff86e1eecdc41a2e.png

 

Edytowano przez Gieneq
  • Lubię! 1
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!

Anonim
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.