19-02-2021, 23:05
A sory nie doczytałem... Skoro znasz pozycje wystarczy przerzut ADC do PWM tylko musisz określić punkt początkowy i punkt końcowy hamowania...
ADC= readanalog(pin); // odczyt pozycji
if(ostatni_ADC - ADC >0 ){ // pozycja UP
poprzedni_ADC= ADC; // przypisz teraźniejszą wartość ADC
ADC=constrain(ADC, punkt początkowyUP, punkt koncowyUP); // ograniczaj odczyt do zadanych
pwm = map(ADC, punkt_początkowyUP, punkt_koncowyUP, 255,0);
analogWrite(cewka,pwm);
}else{
if(ostatni_ADC -ADC <0 ){ // pozycj DOWN
poprzedni_ADC= ADC; // przypisz teraźniejszą wartość ADC
ADC=constrain(ADC, punkt początkowyDOWN, punkt koncowyDOWN); // ograniczaj odczyt do zadanych
pwm = map(ADC, punkt_początkowyDOWN, punkt_koncowyDOWN, 255,0);
analogWrite(cewka,pwm);
}else{
poprzedni_ADC= ADC; // przypisz teraźniejszą wartość ADC
// tu można wyłączyć zawór bo siłownik stoi w miejscu......
}
}
ADC= readanalog(pin); // odczyt pozycji
if(ostatni_ADC - ADC >0 ){ // pozycja UP
poprzedni_ADC= ADC; // przypisz teraźniejszą wartość ADC
ADC=constrain(ADC, punkt początkowyUP, punkt koncowyUP); // ograniczaj odczyt do zadanych
pwm = map(ADC, punkt_początkowyUP, punkt_koncowyUP, 255,0);
analogWrite(cewka,pwm);
}else{
if(ostatni_ADC -ADC <0 ){ // pozycj DOWN
poprzedni_ADC= ADC; // przypisz teraźniejszą wartość ADC
ADC=constrain(ADC, punkt początkowyDOWN, punkt koncowyDOWN); // ograniczaj odczyt do zadanych
pwm = map(ADC, punkt_początkowyDOWN, punkt_koncowyDOWN, 255,0);
analogWrite(cewka,pwm);
}else{
poprzedni_ADC= ADC; // przypisz teraźniejszą wartość ADC
// tu można wyłączyć zawór bo siłownik stoi w miejscu......
}
}
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.