ATTINY85 RF433 DOOR SENSOR CODE HELP
6 berichten
• Pagina 1 van 1
- degiel1982
- Berichten: 9
- Geregistreerd: 07 Nov 2020, 06:27
ATTINY85 RF433 DOOR SENSOR CODE HELP
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.
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
Re: ATTINY85 RF433 DOOR SENSOR CODE HELP
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.
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.
Re: ATTINY85 RF433 DOOR SENSOR CODE HELP
En heb je bovendien zelf enig idee wat deze code bewerkstelligt?
Zo ja, wat is je probleem dan?
- 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.
Re: ATTINY85 RF433 DOOR SENSOR CODE HELP
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?
Door van "int state" "static int state" te maken.
Maar heb ik je dan daarmee geholpen te begrijpen waar je mee bezig bent?
Re: ATTINY85 RF433 DOOR SENSOR CODE HELP
- 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?
6 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: ucojovitaxane en 20 gasten