Descriere produs
Encoder Infrarosu tip U. Datorita dispunerii inteligente a emitatorului si a receptorului IR poate fi folosit cu usurinta pentru masurarea vitezei, a numarului de rotatii etc
Detalii tehnice
| Tensiune de lucru |
5V |
| Circuit |
LM393 |
| Comunicare |
impuls |
| Dimensiuni |
32mm*11mm h-20mm |
Cod exemplu:
#define SENSOR_PIN 2
#define DIR_PIN 4
#define PWM_PIN 5
#define PPR 40 //20 * 2 (on change)
volatile long encCount = 0;
long lastEncCount = 0;
bool currentDir = true;
int currentPwm = 0;
double currentRPM = 0;
long pm = 0;
void setup()
{
Serial.begin(115200);
pinMode(DIR_PIN, OUTPUT);
pinMode(PWM_PIN, OUTPUT);
pinMode(SENSOR_PIN, INPUT_PULLUP);
attachInterrupt(0, enc_isr, CHANGE);
analogWrite(PWM_PIN, 0);
}
void enc_isr()
{
if(currentDir) encCount++;
else encCount--;
}
void loop()
{
long tnow = millis();
if(tnow - pm >= 250)
{
pm = tnow;
currentRPM = double(encCount - lastEncCount);
lastEncCount = encCount;
currentRPM = currentRPM * 4.0 * 60.0;
currentRPM = currentRPM / double(PPR);
Serial.println(currentRPM);
}
if(Serial.available())
{
char c = Serial.read();
if(c == '+')
currentPwm += 10;
else if(c == '-')
currentPwm -= 10;
else if(c == '0')
currentPwm = 0;
if(currentPwm > 255) currentPwm = 255;
if(currentPwm < -255) currentPwm = -255;
}
digitalWrite(DIR_PIN, currentPwm >= 0);
analogWrite(PWM_PIN, abs(currentPwm));
}