IR Obstacle Sensor


guten tag,

ich studiere ingenieurwesen im bereich industriemesstechnik und befasse mich derzeit mit platinencomputern.
zudem bastle ich sehr gerne motorrädern und kopple alles ein wenig.

ich möchte einen drehzahlmesser modulieren mit hilfe eines ir sensors und einem propeller. hieran klebe ich alufolie.

die drehzahlen sind vermutlich bis 5000rpm möglich. der bereich ist aber erstmal nebensächlich.

bisher habe ich einen zähler implementiert, der mit jedem impuls hochzählt.

meine frage euch.
wie kann ich es besten einbringen, dass immer nur weitergezählt wird, wenn es eine unterbrechung gab? er nicht weiterzählt, wenn bspw. 15000rpm bei rum kommen würden und somit nur noch ein durchgehender impuls erzielt wird.

leider habe ich die letzten tage nichts passendes gefunden.

ich bin noch nicht lange dabei. generell beim probieren. programmiere ich wahrscheinlich noch sehr umständlich. vielleicht habt ihr tipps, wie ich den part kürzer schreiben kann, bei dem leds angesteuert werden.

code: [select]

int n = 500;            // n anzahl der impulse
int z;                // z input des sensors 0 oder 1

void setup() {
serial.begin(9600);
pinmode(a0, input);
}

void loop() {{

int previousmillis = millis();
  z = digitalread(a0); // low or high
  if ( z != high){    // obstacle!
    n++;
  }

  if ( n > 500){
    digitalwrite(a1, high);
      if ( n > 1500){
    digitalwrite(a2, high);    // leds
      if ( n > 2500){
    digitalwrite(a3, high);
      if ( n > 3500){
    digitalwrite(a4, high);
      if ( n > 4500){
    digitalwrite(a5, high);
  }}}}}


  int currentmillis = millis();
  int limit = currentmillis - previousmillis;
{

  serial.print("");
  serial.println(n);


int overallmillis = currentmillis - previousmillis;
serial.println(overallmillis);

ich weis nicht ob ich deine frage richtig verstanden habe, aber versuch es mal so
code: [select]

int n = 500;            // n anzahl der impulse
bool z, zalt;                // z input des sensors 0 oder 1

void setup() {
serial.begin(9600);
pinmode(a0, input);
}

void loop() {

uint32_t previousmillis = millis();
  z = digitalread(a0); // low or high
  if ( !z && z !=zalt){    // obstacle!
    n++;
    z = zalt;
  }

  if ( n > 500){
    digitalwrite(a1, high);
      if ( n > 1500){
    digitalwrite(a2, high);    // leds
      if ( n > 2500){
    digitalwrite(a3, high);
      if ( n > 3500){
    digitalwrite(a4, high);
      if ( n > 4500){
    digitalwrite(a5, high);
  }}}}}


  uint32_t currentmillis = millis();
  uint32_t limit = currentmillis - previousmillis;
{

  serial.print("");
  serial.println(n);


uint32_t overallmillis = currentmillis - previousmillis;
serial.println(overallmillis);
}}


Arduino Forum > International > Deutsch (Moderator: uwefed) > IR Obstacle Sensor


arduino

Comments

Popular posts from this blog

Error compiling for board Arduino/Genuino Uno.

Installation database is corrupt

esp8266 (nodemcu 0.9) client.write très lent ???