Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <VirtualWire.h>
- #include <avr/sleep.h>
- #include <avr/interrupt.h>
- #include <avr/power.h>
- #include <avr/io.h>
- /*
- rf_sender
- This sketch will send the code for toggling a specific light.
- Connect rf module on pin 13 (19 on Atmega). Switch on pin 2 (4).
- Some power saving fu thanx to Nick Gammon - www.gammon.com.au
- Note that this remote is extremely vulnerable to a replay attack
- */
- const int buttonPin = 2;
- const int ledPin = 3;
- int buttonState = 0;
- void setup()
- {
- //DDRD &= B00000011; // set Arduino pins 2 to 7 as inputs, leaves 0 & 1 (RX & TX) as is
- //DDRB = B00000000; // set pins 8 to 13 as inputs
- //PORTD |= B11111100; // enable pullups on pins 2 to 7, leave pins 0 and 1 alone
- //PORTB |= B11111111; // enable pullups on pins 8 to 13
- // Initialize the IO and ISR
- vw_set_tx_pin(13);
- vw_setup(2000); // Bits per sec
- pinMode(buttonPin, INPUT);
- pinMode(ledPin, OUTPUT);
- // disable ADC
- //ADCSRA = 0;
- }
- void pinInterrupt(void)
- {
- detachInterrupt(0);
- }
- void sleepNow(void)
- {
- attachInterrupt(0, toggleMe, RISING);
- delay(200);
- set_sleep_mode (SLEEP_MODE_PWR_DOWN);
- sleep_enable();
- sleep_mode(); //or sleep_mode()
- sleep_disable();
- }
- void send (char *message)
- {
- vw_send((uint8_t *)message, strlen(message));
- vw_wait_tx(); // Wait until the whole message is gone
- }
- void toggleMe(void)
- {
- send("L01");
- digitalWrite(ledPin, HIGH);
- delay(100);
- digitalWrite(ledPin, LOW);
- delay(200);
- digitalWrite(ledPin, HIGH);
- delay(200);
- digitalWrite(ledPin, LOW);
- delay(200);
- digitalWrite(ledPin, HIGH);
- delay(100);
- digitalWrite(ledPin, LOW);
- }
- void loop()
- {
- sleepNow();
- //buttonState = digitalRead(buttonPin);
- //if (buttonState == HIGH) {
- toggleMe();
- //}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement