Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.05.2012, 12:03   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Управление выключателем света любым пультом от бытовой техники

Нажмите на изображение для увеличения
Название: pultom-du.png
Просмотров: 295551
Размер:	123.5 Кб
ID:	406

Схема выключателя
Нажмите на изображение для увеличения
Название: NANO_IR_SWITCH.png
Просмотров: 71859
Размер:	8.7 Кб
ID:	375


Используемые компоненты
Arduino Nano V.7 - 1шт.
Relay Module - 1шт.
ИК приемник TSOP - 1шт. приемник можно использовать любой работающий на частоте 38 кГц
Излучатель звука - 1шт.
Макетная плата - 1шт.

Нажмите на изображение для увеличения
Название: pdu_ir.jpg
Просмотров: 71612
Размер:	24.8 Кб
ID:	374


Видео демонстрирующее работу выключателя


Код для Arduino Nano V.7
PHP код:
#include <IRremote.h>  
#include <avr/delay.h>
#include <EEPROM.h>
#define button 7
#define speaker 11
#define lamp 6

IRrecv irrecv(2);  //вход для ик приемника
decode_results results;  
unsigned long ir_command;
uint8_t swtcountstate 0;  //статус лампочки
   
void setup()  
{  
  
pinMode(speakerOUTPUT);//громкоговоритель
  
pinMode(buttonINPUT);//вход для кнопки
  
digitalWrite(button,HIGH);//включить подтяжку
  
pinMode(lampOUTPUT);//лампочка
  
irrecv.enableIRIn(); // включить приемник  
}  
   
void loop() 
{  
 
swt=digitalRead(button);
 
count=0
 while(
swt==0)
   {
    if(
count>30)
     { 
       
beep(100,400);
       for(
unsigned long i=0i<2000000i++)
       {
         if (
irrecv.decode(&results))  
          {  
            
SaveEEPROM(results.value);  
            
irrecv.resume();           
            break;            
          }
        } 
       
beep(30,900);  
       break; 
      }
    
count++;  
    
swt=digitalRead(button);  
    
_delay_ms(100); 
   }
  
 
ir_command=LoadEEPROM();
    if (
irrecv.decode(&results))
    {    
      if(
ir_command==results.value
        {
          
state=~state
          
digitalWrite(lampstate);
          
beep(10,300); 
          
_delay_ms(700); 
        }            
     
irrecv.resume();            //очистить входящий буфер 
    
} else  if(count>1)        //если было нажатие кнопки выключателя
             

               
state=~state//инвертируем статус
               
digitalWrite(lampstate); 
               
beep(10,500);
               
_delay_ms(100);
             }        
}

void SaveEEPROM(unsigned long ir_code)
{
  
EEPROM.write(0ir_code 0xFF);
  
EEPROM.write(1, (ir_code 0xFF00) >> 8);
  
EEPROM.write(2, (ir_code 0xFF0000) >> 16);
  
EEPROM.write(3, (ir_code 0xFF000000) >> 24);
}

unsigned long LoadEEPROM() 
{
  
byte val EEPROM.read(3); 
  
unsigned long ir_code=val;
      
val EEPROM.read(2);
                
ir_code= (ir_code << 8) | val;
      
val EEPROM.read(1);
                
ir_code= (ir_code << 8) | val;
      
val EEPROM.read(0);
                
ir_code= (ir_code << 8) | val;
  return 
ir_code;
}

void beep(byte durword frq)
{
  
dur=(1000/frq)*dur;
  for(
byte i=0i<duri++)
  {
   
digitalWrite(speakerHIGH); 
   
_delay_us(frq); 
   
digitalWrite(speakerLOW);
   
_delay_us(frq);
  } 

Admin вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:10. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика