Skocz do zawartości

Program do sterownika bts7960


Siwy442

Pomocna odpowiedź

#include <elapsedMillis.h>
elapsedMillis timeElapsed;
 
int RPWM = 10; 
int LPWM = 11; 
int downPin = 12; 
int upPin = 13;
int autoPin = 8;
int manPin = 9;
 
int sensorPin = A0;
int potPin = A2;
int potVal;
int sensorVal;
int Buffer = 10;
int Speed = 100;
 
int maxAnalogReading;
int minAnalogReading;
 
void setup() {
  pinMode(RPWM, OUTPUT);
  pinMode(LPWM, OUTPUT);
  pinMode(downPin, INPUT_PULLUP);
  pinMode(upPin, INPUT_PULLUP);
  pinMode(autoPin, INPUT_PULLUP);
  pinMode(manPin, INPUT_PULLUP);   
   pinMode(sensorPin, INPUT);
  pinMode(potPin, INPUT);
  Serial.begin(9600);
  maxAnalogReading = moveToLimit(1); // otwieracie monitor portu szeregowego i odczytujecie wartoscii poprzez sterowanie potenjometrem, w jakim zakresie ma działać was siłownik, usuwacie movetolimit(1) i zmieniacie np na 937
  minAnalogReading = moveToLimit(-1) ; // otwieracie monitor portu szeregowego i odczytujecie wartoscii poprzez sterowanie potenjometrem, w jakim zakresie ma działać was siłownik, usuwacie movetolimit(-1) i zmieniacie np na 242
}
 
void loop() { 
  if(digitalRead(manPin)==LOW)
  {
  if(digitalRead(upPin)==LOW){ //wysuwaj jesli guzik jest wcisniety
    analogWrite(RPWM, 0);
    analogWrite(LPWM, 255);
  } 
 
  else if(digitalRead(downPin)==LOW){ //wsuwaj jesli guzik jest wcisniety
    analogWrite(RPWM, 255);
    analogWrite(LPWM, 0);
  } 
 
  else{ //jesli guzik nie jest wcisniety stoj
    analogWrite(RPWM, 0); 
    analogWrite(LPWM, 0);
  }
  }
 
  else if(digitalRead(autoPin)==LOW)
  {
    potVal = map(analogRead(potPin), 0, 1023, 242, 937);
  sensorVal = analogRead(sensorPin);
  if(potVal > (sensorVal+Buffer)){               //Dodatkowy bufor, zapobiegajacy wibracja silnika z powodu zaklocen danych wejscia
    driveActuator(1, 100);
  }
  else if(potVal < (sensorVal-Buffer)){             
    driveActuator(-1, 100);
  }
  else{
    driveActuator(0, 100);
  }
  Serial.print("Potentiometer Reading: "); //po ustaleniu zakresy pracy na potencjometrze można usunąć ten kod od tej linijki do delay(10)
  Serial.print(potVal);
  Serial.print("\tActuator reading: ");
  Serial.println(sensorVal);
  delay(10);
  }
 
  else{ //jesli zaden przycisk trybu nie jest przelaczony, stoj
    analogWrite(RPWM, 0); 
    analogWrite(LPWM, 0);
  }
}
 
int moveToLimit(int Direction){  //po ustaleniu zakresy pracy na potencjometrze można usunąć ten kod od tej linijki do return currreading i znak } który znajduje się w linijce pod spodem
  int prevReading=0;
  int currReading=0;
  do{
    prevReading = currReading;
    driveActuator(Direction, Speed);
    timeElapsed = 0;
    while(timeElapsed < 200){ delay(1);}           //keep moving until analog reading remains the same for 200ms
    currReading = analogRead(sensorPin);
  }while(prevReading != currReading);
  return currReading;
}
 
void driveActuator(int Direction, int Speed){
  switch(Direction){
    case 1:       //wysuwanie
      analogWrite(RPWM, 100);
      analogWrite(LPWM, 0);
      break;
 
    case 0:       //stop
      analogWrite(RPWM, 0);
      analogWrite(LPWM, 0);
      break;
 
    case -1:      //wsuwanie
      analogWrite(RPWM, 0);
      analogWrite(LPWM, 100);
      break;
  }
}

Witam potrzebuje pomocy, pomógłby mi ktoś wstawić do tego programu dwie krańcówki do sterowania silnikiem lub chociaż jakoś naprowdzić ?

Edytowano przez Siwy442
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.