• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino + silnik krokowy 28BYJ-48 pytania do szkicu
#1
Witam, 
Jestem amatorem jeśli chodzi o programowanie, i bardzo prosiłbym was o pomoc 
Może zacznę od tego o co mi chodzi. 

Potrzebuje napisać szkic który podczas podania stanu wysokiego silnik zrobi kilka obrotów po czym się zatrzyma przy czym stan wysoki cały czas jest podawany. 

A następnie jeśli stan zmieni się na niski zrobi tyle samo obrotów w 2 stronę. 
i program się wyłączy w oczekiwaniu na zmiane stanu wtedy zareaguje 

Ma to być podnoszenie osłony wiatraka, jak wiatrak się włączy osłona się podnosi jak wyłączy to się zamyka. 
Czy ktoś z was ma dużo cierpliwości i chciałby pomoc ? 

O ile jestem w stanie napisać prostsza cześć to nie mam pojęcia za bardzo jak zrobić aby pętla wykonywała się tylko raz w zależności od stanu wiatraka oraz reagowała tylko wtedy jeśli stan się zmieni oraz najtrudniejsze jeśli zabraknie prądu i system się zresetuje ma pamiętać ostatni stan jaki był i jesli się zmienił to otworzyć lub zamknąć osłonę a jeśli jest ten sam to nie robić nic( nie chce aby np silnik podnosił już podniesiona osłonę)


Jeszcze raz podkreślę ze bardzo słabo się znam na programowaniu pewnie sporo namieszałem ktoś da mi wskazówkę ? 


Kod:
#include <CheapStepper.h>
#include <EEPROM.h>

int przeslona = 3;
int napiecie = 4;
int niskie = 5;
uint8_t EEPROMaddress = 130 ;
CheapStepper stepper (8, 9, 10, 11);

void setup()
{
  pinMode(przeslona, INPUT);
  pinMode(napiecie, OUTPUT);
  Serial.begin(9600);
  Serial.println("Ready to start moving!");
  stepper.setRpm(12);
}

void loop()
{
  przeslona = EEPROM.read(EEPROMaddress); // odczyt zapisu z EEPROM
  digitalWrite( napiecie, HIGH); // wyjscie na pinie 5v dla testu
  digitalWrite( niskie, LOW); // wyjscie na pinie 0v dla testu

  if (digitalRead(przeslona))
  {
    przeslona = napiecie;
    EEPROM.write(EEPROMaddress, przeslona) ;
  }
  else if(digitalRead(przeslona))
  {
    przeslona = niskie;
    EEPROM.write(EEPROMaddress, przeslona) ;
  }

  if (digitalRead(przeslona) != LOW)
  {
    stepper.moveDegreesCW (180);
    delay(1000);
  }
  else
  {
    stepper.moveDegreesCCW (180);
    delay(1000);
  }
}
 
Odpowiedź
  


Wiadomości w tym wątku
Arduino + silnik krokowy 28BYJ-48 pytania do szkicu - przez kamilk1092 - 07-08-2018, 08:17

Skocz do:


Przeglądający: 1 gości