22-06-2020, 09:25
Dzień dobry.
Za pomocą Arduino UNO potrzebuje sterować dwoma mikroserwami. Pracować będą na zmianę, asynchronicznie. Nie jestem programistą ale poczytałem trochę i napisałem kod który na symulatorze działa.
Obawiam się tylko o zmienną unsigned Czas = 500; którą mam zamiar kontrolować za pomocą microstyka.
Działa ale w sposub mało precyzyjny. Jak to można poprawić ?
I 2 pytanie :
Po wykonaniu cyklu przez 1 i 2 mikroserw proces zaczynam od nowa używając
delay(Czas);
CzasPoczatku = millis();}
delay(Czas) zatrzymuje cały proces i w tym czasie nie można regulować częstotliwości za pomocą microstyku ... Jak inaczej mogę ustalić czas pracy drugiego mikrostyku?
Rysunek układu TUTAJ pod linkiem
Za pomocą Arduino UNO potrzebuje sterować dwoma mikroserwami. Pracować będą na zmianę, asynchronicznie. Nie jestem programistą ale poczytałem trochę i napisałem kod który na symulatorze działa.
Obawiam się tylko o zmienną unsigned Czas = 500; którą mam zamiar kontrolować za pomocą microstyka.
Działa ale w sposub mało precyzyjny. Jak to można poprawić ?
I 2 pytanie :
Po wykonaniu cyklu przez 1 i 2 mikroserw proces zaczynam od nowa używając
delay(Czas);
CzasPoczatku = millis();}
delay(Czas) zatrzymuje cały proces i w tym czasie nie można regulować częstotliwości za pomocą microstyku ... Jak inaczej mogę ustalić czas pracy drugiego mikrostyku?
Cytat:int Motor1 = 12;
int Motor2 = 11;
int przycisk1 = 0;
int przycisk2 = 1;
unsigned long CzasPoczatku ;
unsigned Czas = 500;
void setup() {
pinMode(Motor1, OUTPUT);
pinMode(Motor1, OUTPUT);
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
}
void loop() {
if (digitalRead (przycisk1) == LOW) {(Czas = Czas +1);}
if (digitalRead (przycisk2) == LOW) {(Czas = Czas -1);}
if (millis() - CzasPoczatku < Czas)
{
digitalWrite(Motor1, HIGH);
digitalWrite(Motor2, LOW);}
if (millis() - CzasPoczatku >= Czas)
{
digitalWrite(Motor1, LOW);
digitalWrite(Motor2, HIGH);
delay(Czas);
CzasPoczatku = millis();}
}
Rysunek układu TUTAJ pod linkiem