ATTINY85 RF433 DOOR SENSOR CODE HELP

Arduino specifieke Software
Berichten: 9
Geregistreerd: 07 Nov 2020, 06:27

ATTINY85 RF433 DOOR SENSOR CODE HELP

Berichtdoor degiel1982 » 07 Feb 2021, 22:28

Hoi allen,

Ik ben een DIY raam sensor aan het maken en heb een beetje hulp nodig met de code.
de sensor is een mc-38 magnetic sensor.
Ik krijg het niet voor elkaar dat hij wakker word als ik de deur dicht doe.




Code: Alles selecteren
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <RCSwitch.h>
const int sensor = 3;
RCSwitch mySwitch = RCSwitch();

void sleep() {
    GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
    PCMSK |= _BV(PCINT3);                   // Use PB3 as interrupt pin
    ADCSRA &= ~_BV(ADEN);                   // ADC off
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // replaces above statement
    sleep_enable();                         // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
    sei();                                  // Enable interrupts
    sleep_cpu();                            // sleep
    cli();                                  // Disable interrupts
    PCMSK &= ~_BV(PCINT3);                  // Turn off PB3 as interrupt pin
    sleep_disable();                        // Clear SE bit
    ADCSRA |= _BV(ADEN);                    // ADC on
    sei();                                  // Enable interrupts
}

ISR(PCINT0_vect) {

}


void initADC()
{
  ADMUX = (1 << ADLAR) | (0 << REFS1) | (0 << REFS0) | (0 << MUX3) | (0 << MUX2) | (1 << MUX1) | (0 << MUX0);     

  ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (0 << ADPS0);
}

void setup() {
initADC();
pinMode(sensor, INPUT_PULLUP);
mySwitch.enableTransmit(1);
mySwitch.setProtocol(1);
mySwitch.setPulseLength(401);
mySwitch.setRepeatTransmit(5);
}

void loop() {
    ADCSRA |= (1 << ADSC);       
    while (ADCSRA & (1 << ADSC) );

    if (ADCH > 180)
    {
      int state;
      state = digitalRead(sensor);
        if (state == HIGH){
          mySwitch.send(10107000, 24); //On
          delay(2000);
          sleep();
        }
        else{
          mySwitch.send(10108000, 24); //Off
          delay(2000);
          sleep();
        }
    }
    else {
    mySwitch.send(10109000, 24); //low battery code
    delay(2000);
    sleep();
    }

}

Advertisement

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: ATTINY85 RF433 DOOR SENSOR CODE HELP

Berichtdoor ctunes » 20 Jun 2021, 22:32

Haal eerst de delays er eens uit.

Daarnaast:
delay(2000) en dan sleep()?

Jij hebt duidelijk geen idee waar je mee bezig bent.

Wat je nodig hebt is reageren op een interrupt.
Laatst gewijzigd door ctunes op 20 Jun 2021, 22:48, in totaal 2 keer gewijzigd.

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: ATTINY85 RF433 DOOR SENSOR CODE HELP

Berichtdoor ctunes » 20 Jun 2021, 22:37

En heb je bovendien zelf enig idee wat deze code bewerkstelligt?
Code: Alles selecteren
void initADC()
{
  ADMUX = (1 << ADLAR) | (0 << REFS1) | (0 << REFS0) | (0 << MUX3) | (0 << MUX2) | (1 << MUX1) | (0 << MUX0);     

  ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (0 << ADPS0);
}


Zo ja, wat is je probleem dan?
Laatst gewijzigd door ctunes op 20 Jun 2021, 22:49, in totaal 2 keer gewijzigd.

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: ATTINY85 RF433 DOOR SENSOR CODE HELP

Berichtdoor ctunes » 20 Jun 2021, 22:43

Je programma is makkelijk werkend te krijgen in de huidige vorm overigens.

Door van "int state" "static int state" te maken.

Maar heb ik je dan daarmee geholpen te begrijpen waar je mee bezig bent?

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: ATTINY85 RF433 DOOR SENSOR CODE HELP

Berichtdoor ctunes » 20 Jun 2021, 22:49

Code: Alles selecteren
ISR(PCINT0_vect) {

}


Wat doet dat?

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: ATTINY85 RF433 DOOR SENSOR CODE HELP

Berichtdoor ctunes » 20 Jun 2021, 23:02

Code: Alles selecteren
if (condition)
    {dostuff}
else
    {otherstuff}
if (condition)
     {dostuff}
    else
    {otherstuff}
otherwise
   {do different stuff}




Weet je zeker dat jouw programma logisch klopt?

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten