Skocz do zawartości

Pomocna odpowiedź

Napisano (edytowany)

cześć,

potrzebuje pomocy z programem do sterowania rębaka no stress. Większość kodu zrobiłem lecz coś nie działa program i nie mam pomysłu co jest nie tak.
program ten ma za zadanie po wykryciu 3000 obrotów RPM włączyć przekaźnik sterowania silnikiem do przodu, lecz gdy obroty spadną do 1000 ma on włączyć na 0,5s przekaźnik silnika do tyłu i go zatrzymać. Po osiągnięciu obrotów 3000 ma on od nowa uruchomić silnik do przodu.

pin awaria - wyłącznik bezpieczeństwa(wyłącza oba silniki)

zmienna walek - włączanie wyłączanie silnika do przodu

prowizorycznie RPM zmieniam wartością zmiennej

 


//#define czujnik 2 // - w projekcie obrotomierz jest jako RPM
//#define walek 6 //(OPCJONALNIE) czy jest wlaczony walek
#define awaria 5 // wyłącza posów 
#define cewkaPrzod 3 // przekaznik wlaczajacy posow w przod
#define cewkaTyl 4 // przekaznik wlaczajacy posow w tyl

int RPM = 3001;
int a = 0;
bool walek;

void setup(){  
 //pinMode(czujnik, INPUT_PULLUP);
 //pinMode(walek, INPUT_PULLUP); // wlaczyc jesli jest czujnik wałka
  pinMode(awaria, INPUT_PULLUP);  
  pinMode(cewkaPrzod, OUTPUT);
  pinMode(cewkaTyl, OUTPUT); 
 
}
  void loop(){
walek = false;
    
if(walek == true){
  digitalWrite(cewkaPrzod, HIGH);
}
if(walek == false){
  digitalWrite(cewkaPrzod, LOW);
}
  walek = false;
digitalWrite(cewkaTyl, LOW);
//digitalWrite(cewkaPrzod, LOW);


while(digitalRead(awaria) == HIGH){       
  if(a == 0 && RPM < 1000) {
    walek = false;
  
    digitalWrite(cewkaTyl, HIGH);
    delay(500);
    digitalWrite(cewkaTyl, LOW);
    a = a + 1;
  }
   
  if(RPM > 3000){
    walek = true;
    a = 0;
  
  }  
 } 
}

 

Edytowano przez Piotrix198
12 godzin temu, Piotrix198 napisał:

Większość kodu zrobiłem lecz coś nie działa program

@Piotrix198 witam na forum 🙂 Co dokładnie nie działa? Tzn. jaki jest efekt, a czego się spodziewałeś w danej sytuacji?

@Treker jeśli nadałem zmiennej wartość RPM = 3001,  zgodnie z 

if(RPM > 3000){
    walek = true;
    a = 0;

na pinie nie było sygnału dodatniego.

Na tą chwile troche zmienilem kod lecz nie wiem jak sprawdzic czy on działa tzn. jeśli zmieniam zmienną " b " w void setup to ta nie zmienia się.
Oto zmieniony kod
 

//#define czujnik 2 // - w projekcie obrotomierz jest jako RPM
//#define walek 6 //(OPCJONALNIE) czy jest wlaczony walek
 // wyłącza posów 
#define cewkaPrzod 3 // przekaznik wlaczajacy posow w przod
#define cewkaTyl 4 // przekaznik wlaczajacy posow w tyl
#define awaria 5
//#define przycisk 7

int RPM = 2000;
int a = 0;
int b = 2; // sprawdza czy obroty(np. 2000) są podczas spadku z 3000 czy po wzroście od 1000


void setup(){  
 //pinMode(czujnik, INPUT_PULLUP);
 //pinMode(walek, INPUT_PULLUP); // wlaczyc jesli jest czujnik wałka
  pinMode(awaria, INPUT_PULLUP);  
  pinMode(cewkaPrzod, OUTPUT);
  pinMode(cewkaTyl, OUTPUT); 
  pinMode(przycisk, INPUT_PULLUP);
  
  
}
 void loop(){
 
  

  
  
  digitalWrite(cewkaPrzod, LOW);
  digitalWrite(cewkaTyl, LOW);

  while(HIGH) {
    
    if(RPM > 999){
      if(RPM < 3001){
        if(b == 2){
        digitalWrite(cewkaPrzod, HIGH);
        digitalWrite(cewkaTyl, LOW);
        a = 0;
      } else if(b == 1){
        digitalWrite(cewkaPrzod, LOW);
        digitalWrite(cewkaTyl, LOW);
        a = 0;
      }
      else if(RPM > 3000);
      digitalWrite(cewkaPrzod, HIGH);
      digitalWrite(cewkaTyl, LOW);
      b = 2;      
    }
    else if(a == 0){
      if(RPM < 1000){
      digitalWrite(cewkaPrzod, LOW);
      digitalWrite(cewkaTyl, HIGH);
      delay(500);
      digitalWrite(cewkaTyl, LOW);
      a = a + 1;
      b = 1;
      
    }
  }  
 }
}
}

 

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

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