10. pulsenteller

basiscode pulsenteller:
 

/* bv icm DC motor type SKU 383054 www.dx.commet 5 draden:
zwart gnd,
rood, 9-24 V,
groen pin 2 // in dit geval de ingang,
blauw aan gnd (motor aan), spanning boven 1,2V motor uit.
geel los linksom, geel aan gnd rechtsom. (potmeter gebruiken, omslagpunt = ca 1,2V)
*/
 
 

int encoder_in = 2;  

unsigned int pulsesperturn = 660;  // aantal pulsen per omwenteling instellen

unsigned int revolutions = 0;

volatile unsigned int pulses = 0; //begin aantal pulsen met 0

void count() // tel het aantal pulsen

{
pulses++;
}

void setup() {
  pinMode(encoder_in, INPUT);
  attachInterrupt(0, count, RISING);
  Serial.begin(9600);
}

void loop() {
  revolutions = pulses / pulsesperturn;  // aantal omwentelingen wordt bepaald door het aantal pulsen te delen door het aantal pulsen/omwenteling.
 
  Serial.print("aantal omwentelingen:");
  Serial.println(revolutions);  // weergave van het aantal omwentelingen
  delay(100);
}
 
 
 
 
icm SKU 383054 DC motor van dx.com
zwart gnd,
rood, 9-24 V,
groen pin 2,
blauw gnd,
geel los linksom, geel eventueel via potmeter links-rechtsom bestuurbaar
 
of icm opto coupler / encoder.
 
 
 
 
 
 
 
 -----
Pulsenteller, kan ook worden gebruikt als contactloze schakelaar:

const int buttonPin = 2;

int buttonState;

int lastButtonState = LOW;

long lastDebounceTime = 0;

long debounceDelay = 50;

int counter = 0;

int ledpin=13;

 

void setup() {

Serial.begin(9600);

pinMode(buttonPin, INPUT);

pinMode(ledpin,OUTPUT);

}

 

void loop() {

boolean pressed = debounce();

if (pressed == true) {

counter++;

Serial.print("aantal pulsen");

Serial.print (":");

Serial.println(counter);

if (counter==5)

 

{

digitalWrite(ledpin,HIGH);

}

 

if (counter<5|| counter>5)

{ digitalWrite (ledpin,LOW);

}

}

}

 

boolean debounce() {

boolean retVal = false;

int reading = digitalRead(buttonPin);

if (reading != lastButtonState) {

lastDebounceTime = millis();

}

if ((millis() - lastDebounceTime) > debounceDelay) {

if (reading != buttonState) {

buttonState = reading;

if (buttonState == HIGH) {

retVal = true;

}

}

}

lastButtonState = reading;

return retVal;

}

 

 

 
 
--------------------
 
 
 Pulsenteller II
 
 
// The pin the encoder is connected
int encoder_in = 2;

// The number of pulses per revolution
// depends on your index disc!!
unsigned int pulsesperturn = 36;

// The total number of revolutions
unsigned int revolutions = 0;

// Initialize the counter
volatile unsigned int pulses = 0;

void count() {
  // This function is called by the interrupt
  pulses++;
}

void setup() {
  pinMode(encoder_in, INPUT);
  attachInterrupt(0, count, RISING);
}

void loop() {
  revolutions = pulses / pulsesperturn;
  // Here you can output the revolutions, e. g. once a second
  //
  //
  delay(1000);
}