Re: aaannndowe początki z enderem
: 16 sie 2020, 12:08
Dupki zamontowane. Dupki znaczy tyły do lampek czyli właściwie przody, bo lampki świeca do tyłu.
Kod: Zaznacz cały
#include <Servo.h> //Binlioteka serwa
Servo serwomechanizm; //Odwołanie do serwa
volatile word a; //prędkość
volatile word q; //czas miedzy impulsami
unsigned long time; //czas w którym był impuls
byte pozycja = 0; //Aktualna pozycja serwa 0-180
void setup() {
pinMode(2, INPUT_PULLUP); //Kontaktron podłączony do pinu 3
attachInterrupt(digitalPinToInterrupt (2), licz, FALLING);
serwomechanizm.attach(10); //Serwomechanizm podłączony do pinu 10
serwomechanizm.write(4); //Idzie na pozycję zero (przełożenie serwo-wskazówka na trybkach 2:1)
delay(500);
serwomechanizm.write(136); //Koniec skali
delay(500);
serwomechanizm.write(64); //Połowa skali
delay(500);
serwomechanizm.write(4); //Pozycja zero
delay(500);
//Serial.begin(9600); // configure serial for debug
}
void loop() {
if(millis()-time<1200)
a=1144/q; //obwód koła 1,256m; 4 magnesy na kole co 0,314m daje 3148 impulsy na 1km; impulsy/(1km/h) 3148/3,600=0,87444Hz; impuls co 1144ms/(1km/h)
else
a=0;
//pozycja = map(a,0,12,4,136);
pozycja=(a*10+4);
if (pozycja >= 136) {serwomechanizm.write(136);}
if (pozycja <= 4) {serwomechanizm.write(4);}
serwomechanizm.write(pozycja);
//if (a>1 && a<70) {Serial.println (a);}
}
//Funkcja odpowiedzialna za liczenie czasu miedzy impulsami
void licz()
{
q=millis()-time;
time=millis();
}