Sensor de efecto Hall ATTiny85 con i2c

0

Estoy tratando de hacer un sensor de efecto Hall con capacidades i2c usando un sensor de efecto Hall de cierre US1881 y un ATTiny85.

Estoy usando la biblioteca Arduino TinyWireS para la comunicación i2c y la biblioteca avr / interrupt.h para las interrupciones del sensor de efecto Hall. La salida del sensor de efecto hall es analógica. Necesito el valor de RPM para escribir en un registro para poder ser leído por el maestro i2c. El imán que estamos utilizando tiene 8 imanes en una revolución completa.

Estoy muy confundido sobre cómo lograr que todo funcione de manera conjunta. ¡Por favor ayuda! He publicado el código que he escrito hasta ahora.

    // Code for the ATtiny85
    #include <TinyWireS.h>
    #include <avr/interrupt.h>

    #define I2C_SLAVE_ADDRESS 0x4 // Address of the slave
    #define LED_PIN 4
    #define US1881 3

   //address of register 16  
   int i=0;
   volatile bool state = false;
   volatile byte eighth_revolutions;
   unsigned int rpm;
   unsigned long prevtime;

   void setup()
   {
      TinyWireS.begin(I2C_SLAVE_ADDRESS); // join i2c network
      TinyWireS.onRequest(requestEvent);

      ADCSRA &= ~_BV(ADEN);
      GIMSK |= (1 << PCIE);
      PCMSK |= (1 << US1881);
      sei();
      pinMode(US1881, INPUT);
      pinMode(LED_PIN, OUTPUT);
      eighth_revolutions = 0;
      rpm = 0;
      prevtime = 0; 
   }

   void loop()
    {
      TinyWireS_stop_check();  // This needs to be here
      if (eighth_revoultions >=8)
    {
      rpm=30*1000/(millis()-prevtime)*eighth_revolutions;
      prevtime=millis();
      revolutions=0;
    }
    }

   // Gets called when the ATtiny receives an i2c request
   void requestEvent()
   {
     TinyWireS.send(i);
     i++;  
   }
    
pregunta user170506

0 respuestas

Lea otras preguntas en las etiquetas