реклама на сайте
подробности

 
 
> Умный дом.
ps1x
сообщение Mar 25 2006, 21:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Прошу знающих посоветовать с чего начать. Делать буду для себя.
Идеи такие:
В комнате, корридоре и на кухне в стенах утоплены панели управления каждая представляет из себя:
- дисплей ЖК 16х2
- кнопки управления стрелка вверх, вниз, выбор и назад, т.е. всего 4 кнопки.
- датчик температуры для каждой панели
- управляющая микросхемка (атмега8 или 16 наверное)
- датчик ИК для приема комманд с пульта ДУ
А также есть исполнительные устройства, например в выключателе освещения, которые слушают, что им говорят панели и выполняют команды (например выключить свет).

Вопросы:
Какие мк использовать? (для панелей наверное что нибудь из серии мега а для исполнительных - тини)
Как организовать между мк одноранговую сеть? (желательно удобную для прокладки в стенах)
Как узнать какую систему комманд использует пульт? (от тв-тюнера маленький плоский, на одной таблетке-батарейке)

Сообщение отредактировал ps1x - Mar 25 2006, 21:55
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ps1x
сообщение Mar 26 2006, 21:01
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



В общем правильны вариант оказался:
Код
        char *mainm[7]={"  Time","  Date","  Preferences","  Devices","  Info","  Time",">>"};
        lcd_puts(mainm[cur]);

- работает полностью в полном обьеме cheers.gif

Вот недоделаное меню:
Код
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.5 Standard
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com

Project :
Version :
Date    : 26.03.2006
Author  : ps1x                            
Company : ccc                            
Comments:


Chip type           : ATmega8
Program type        : Application
Clock frequency     : 1,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/
#asm
   .equ __lcd_port=0x18;PORTB
#endasm
#include <mega8.h>
#include <stdio.h>
#include <STRING.h>
#include <lcd.h>
#include <delay.h>

unsigned char kod,m;//kod- код нажатой кнопки, м - флаг в каком меню находимся
char *mainm[7]={"  Time","  Date","  Preferences","  Devices","  Info","  Time",">>"};//пункты главного меню
int cur,temp;//сur-текущий пункт меню, temp - температура (на будущее)
unsigned int hour,min,sec;//переменные для показа часов (на будущее)


void showmm(int cur) //функция показа главного меню, в зависимости от значения активного пункта
{
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts(mainm[cur]);//выводим текущ. пункт меню
        lcd_gotoxy(0,0);    
        lcd_puts(mainm[6]);//выводим символ ">>" для обозначения активного пункта.
        lcd_gotoxy(0,1);
        lcd_puts(mainm[cur+1]);//следующий пункт

}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
switch (kod) { //в зависимости от нажатой кнопки

    case 'u'://если кнопка вверх
        if (cur==0){cur=5;}//ограничене для закольцовывания меню ))
        cur--;//уменьшение указателя
    switch (m) {//если активно главное меню
    case 'm':
        showmm(cur);//отображение гл. мен.
    break;
    }
    break;
    case 'd'://кнопка вниз
        if (cur==4){cur=-1;}//ограничение
        cur++;
        showmm(cur);
    break;
    case 's'://нажатие кнопки селект
        switch(cur){
        case 3:
        lcd_clear();
        lcd_putsf("Выполняем этот пункт!");//если активен пункт 3 то выполняем этот код
        };
    break;
    case 'c':

    break;
    case 'z':
        
    break;

    };
kod='z';
}

// Declare your global variables here



void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
TCCR0=0x04;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")
lcd_init(16);
while (1) //опрашиваем клавиатуру
      {
if (PIND.0==1)
{kod='u';delay_ms(250);}

if (PIND.1==1)
{kod='d';delay_ms(250);}

if (PIND.2==1)
{kod='s';delay_ms(250);}

if (PIND.3==1)
{kod='c';delay_ms(250);}


      };
}


как вам такая реализация???

p.s. КОД НЕЗАКОНЧЕН!

Как заставить ISIS показывать русские буквы?
И будет ли реальное устройство их показывать (имеется в виду что дисплей АНГ/РУС) если компилировать в CVAVR?

Сообщение отредактировал ps1x - Mar 26 2006, 21:12
Go to the top of the page
 
+Quote Post
TamTam
сообщение Mar 27 2006, 12:35
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Цитата(ps1x @ Mar 27 2006, 00:01) *
В общем правильны вариант оказался:
Код
        char *mainm[7]={"  Time","  Date","  Preferences","  Devices","  Info","  Time",">>"};
        lcd_puts(mainm[cur]);

- работает полностью в полном обьеме cheers.gif

Вот недоделаное меню:
Код
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.5 Standard
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com

Project :
Version :
Date    : 26.03.2006
Author  : ps1x                            
Company : ccc                            
Comments:


Chip type           : ATmega8
Program type        : Application
Clock frequency     : 1,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/
#asm
   .equ __lcd_port=0x18;PORTB
#endasm
#include <mega8.h>
#include <stdio.h>
#include <STRING.h>
#include <lcd.h>
#include <delay.h>

unsigned char kod,m;//kod- код нажатой кнопки, м - флаг в каком меню находимся
char *mainm[7]={"  Time","  Date","  Preferences","  Devices","  Info","  Time",">>"};//пункты главного меню
int cur,temp;//сur-текущий пункт меню, temp - температура (на будущее)
unsigned int hour,min,sec;//переменные для показа часов (на будущее)


void showmm(int cur) //функция показа главного меню, в зависимости от значения активного пункта
{
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts(mainm[cur]);//выводим текущ. пункт меню
        lcd_gotoxy(0,0);    
        lcd_puts(mainm[6]);//выводим символ ">>" для обозначения активного пункта.
        lcd_gotoxy(0,1);
        lcd_puts(mainm[cur+1]);//следующий пункт

}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
switch (kod) { //в зависимости от нажатой кнопки

    case 'u'://если кнопка вверх
        if (cur==0){cur=5;}//ограничене для закольцовывания меню ))
        cur--;//уменьшение указателя
    switch (m) {//если активно главное меню
    case 'm':
        showmm(cur);//отображение гл. мен.
    break;
    }
    break;
    case 'd'://кнопка вниз
        if (cur==4){cur=-1;}//ограничение
        cur++;
        showmm(cur);
    break;
    case 's'://нажатие кнопки селект
        switch(cur){
        case 3:
        lcd_clear();
        lcd_putsf("Выполняем этот пункт!");//если активен пункт 3 то выполняем этот код
        };
    break;
    case 'c':

    break;
    case 'z':
        
    break;

    };
kod='z';
}

// Declare your global variables here



void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
TCCR0=0x04;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")
lcd_init(16);
while (1) //опрашиваем клавиатуру
      {
if (PIND.0==1)
{kod='u';delay_ms(250);}

if (PIND.1==1)
{kod='d';delay_ms(250);}

if (PIND.2==1)
{kod='s';delay_ms(250);}

if (PIND.3==1)
{kod='c';delay_ms(250);}


      };
}


как вам такая реализация???

p.s. КОД НЕЗАКОНЧЕН!

Как заставить ISIS показывать русские буквы?
И будет ли реальное устройство их показывать (имеется в виду что дисплей АНГ/РУС) если компилировать в CVAVR?


А можно на скриншот ISIS посмотреть ???
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ps1x   Умный дом.   Mar 25 2006, 21:46
- - vet   В ATtiny25/45/85 есть встроенный датчик температур...   Mar 25 2006, 23:18
- - ps1x   ЦитатаВ ATtiny25/45/85 есть встроенный датчик темп...   Mar 26 2006, 00:32
- - =AK=   Хорошее описание некоторых популярных ИК протоколо...   Mar 26 2006, 05:43
- - impuls-v   А связь по электропровлдке тебя не устроит и стены...   Mar 26 2006, 10:04
- - ps1x   Большое спасибо за подробное разъяснение протоколо...   Mar 26 2006, 10:20
|- - =AK=   Цитата(ps1x @ Mar 26 2006, 19:50) И еще к...   Mar 26 2006, 11:34
- - ps1x   и еще как будет физически реализована панель управ...   Mar 26 2006, 11:28
- - ps1x   Тоесть, насколько я понял, все подключены к одному...   Mar 26 2006, 11:39
- - ps1x   Есть ли у кого нибудь ссылка на понятный для неокр...   Mar 26 2006, 15:27
- - ps1x   Почему код: Цитатаunsigned char kod; char disp1[16...   Mar 26 2006, 16:37
|- - Petka   Цитата(ps1x @ Mar 26 2006, 19:37) выдает ...   Mar 26 2006, 16:49
- - ps1x   Цитатаunsigned char kod; char disp1[16]; unsigned ...   Mar 26 2006, 17:07
- - zltigo   Цитата(ps1x @ Mar 26 2006, 19:07) При дво...   Mar 26 2006, 18:16
- - ps1x   Код char *disp1; disp1="Не работает"; - т...   Mar 26 2006, 18:39
- - vet   flash char *disp1; disp1="Не работает";   Mar 26 2006, 20:01
- - zltigo   Цитата(ps1x @ Mar 26 2006, 20:39) 1) char...   Mar 26 2006, 20:30
|- - bezobraznic   Цитата(ps1x @ Mar 27 2006, 00:01) Как зас...   Mar 26 2006, 21:35
- - ps1x   Как я понял, ИСИС с русским не дружит... ) Тем не ...   Mar 26 2006, 22:27
|- - Balaganov   Цитата(ps1x @ Mar 27 2006, 00:27) Как я п...   Mar 27 2006, 17:54
- - ps1x   ОБНАРУЖЕНЫ СЛЕДУЮЩИЕ ОШИБКИ Произошла ошибка при з...   Mar 27 2006, 14:10
- - ps1x   Не смог я всетаки со своим меню разобраться, посем...   Mar 27 2006, 17:54
|- - Laptop   Цитата(ps1x @ Mar 27 2006, 20:54) Не смог...   Mar 27 2006, 18:41
|- - ps1x   Цитата(Laptop @ Mar 27 2006, 22:41) Цитат...   Mar 27 2006, 18:54
|- - Laptop   Цитата(ps1x @ Mar 27 2006, 21:54) Дык а е...   Mar 27 2006, 19:23
- - _artem_   Для начала вот это достаточно будет .: http://rap...   Mar 27 2006, 18:26
- - ps1x   Cпасибо! ценная информация!   Mar 27 2006, 18:31
- - ps1x   Ну, отображаться будут две строки меню (на дисплее...   Mar 27 2006, 21:45
|- - Laptop   Цитата(ps1x @ Mar 28 2006, 00:45) Ну, ото...   Mar 28 2006, 17:11
- - ps1x   Ну что, неужели не у кого нет идей или своих нара...   Mar 28 2006, 11:44
- - zltigo   Цитата(ps1x @ Mar 28 2006, 13:44) Ну что,...   Mar 28 2006, 13:24
- - ps1x   Просто перешел от главной темы, к частностям, т.е....   Mar 28 2006, 13:52
- - zltigo   Цитата(ps1x @ Mar 28 2006, 15:52) удобно ...   Mar 28 2006, 14:57
- - BVU   Вообще-то подобный комплекс (умный дом) основанный...   Mar 29 2006, 06:02
|- - kolobok0   Цитата(BVU @ Mar 29 2006, 10:02) Вообще-т...   Mar 29 2006, 10:39
- - ps1x   Думаю я для себя буду делать на rs232 - проще и де...   Mar 29 2006, 10:56
|- - kolobok0   Цитата(ps1x @ Mar 29 2006, 14:56) Думаю я...   Mar 29 2006, 11:03
|- - viael   Цитата(ps1x @ Mar 29 2006, 11:56) Думаю я...   Dec 2 2006, 11:13
- - ps1x   подключения- максимум метров 6. 1 wire имеется вви...   Mar 29 2006, 11:06
|- - kolobok0   Цитата(ps1x @ Mar 29 2006, 15:06) подключ...   Mar 29 2006, 11:08
- - beer_warrior   rs232 я бы не рекомендовал. Ограничение на расстоя...   Mar 29 2006, 11:27
|- - kolobok0   Цитата(beer_warrior @ Mar 29 2006, 15:27)...   Mar 29 2006, 11:43
- - beer_warrior   Цитатанемного поколдовать над протоколом...и штук ...   Mar 29 2006, 14:34
- - александр_в   Хотелось-бы поговорить об функциях умного дома, а ...   Mar 29 2006, 20:05
|- - kolobok0   Цитата(александр_в @ Mar 30 2006, 00:05) ...   Mar 30 2006, 11:44
|- - defunct   Цитата(kolobok0 @ Mar 30 2006, 13:44) Цит...   Mar 31 2006, 00:59
|- - Dog Pawlowa   Цитата(defunct @ Mar 31 2006, 00:59) Я бы...   Dec 1 2006, 16:51
- - александр_в   Частично уже реализовано. Голосовое управление оче...   Mar 31 2006, 14:13
|- - defunct   Цитата(александр_в @ Mar 31 2006, 16:13) ...   Mar 31 2006, 14:27
- - Himik_2   А такой вариант не подойдёт ? У меня собрано: цент...   Dec 1 2006, 15:13
- - SasaVitebsk   Смотрел я давече по euronews как за данную идею в ...   Dec 1 2006, 17:14
|- - Dog Pawlowa   Цитата(SasaVitebsk @ Dec 1 2006, 17:14) Н...   Dec 1 2006, 17:55
- - demaven   Покувыркались мы недавно с передачей по сети 220. ...   Dec 2 2006, 13:37
- - Mack   есть ли у кого-то опыт подключения самых разных да...   Dec 20 2006, 13:12
|- - o-henry   Цитата(Mack @ Dec 20 2006, 12:12) есть ли...   Dec 20 2006, 15:11
||- - Dog Pawlowa   Цитата(o-henry @ Dec 20 2006, 15:11)...   Dec 20 2006, 16:57
|- - kolobok0   Цитата(Mack @ Dec 20 2006, 13:12) есть ли...   Dec 26 2006, 15:45
- - Snowmen   Здравствуйте! Я давно читаю этот форум. И оче...   Dec 22 2006, 21:02
|- - asf   Цитата(Snowmen @ Dec 22 2006, 21:02) Здра...   Dec 22 2006, 21:51
|- - Dog Pawlowa   Цитата(Snowmen @ Dec 22 2006, 21:02) сраз...   Dec 23 2006, 12:34
|- - Snowmen   Цитата(Dog Pawlowa @ Dec 23 2006, 11:34) ...   Dec 25 2006, 01:14
|- - Dog Pawlowa   Цитата(Snowmen @ Dec 25 2006, 01:14) Для ...   Dec 25 2006, 10:45
- - Snowmen   to ASF Признаю титанический труд. И очень интерес...   Dec 22 2006, 22:56
- - Snowmen   To Dog Pawlowa Скажите пожалуйста какой внутренни...   Dec 25 2006, 15:16
|- - Dog Pawlowa   Цитата(Snowmen @ Dec 25 2006, 15:16) To D...   Dec 26 2006, 11:32
- - proba   Вам уже советовали LIN. I2C с длинными линиями себ...   Dec 25 2006, 16:10
- - Snowmen   Вот все больше убеждаюсь что почему то у многих пр...   Dec 25 2006, 18:46
- - MaxVovk   Сам недавно столкнулся и был приятно удивлен. Все ...   Dec 27 2006, 00:50
- - atmel45   Идеологии промышленности несколько отличаются от з...   Jun 4 2009, 07:53
- - Serega Doc   У меня возник вопрос как нужно реализовывать управ...   Sep 7 2009, 15:04
- - Rst7   Цитатакак реализовать маршрутизацию пакета при мал...   Sep 7 2009, 15:19
|- - xelax   Цитата(Rst7 @ Sep 7 2009, 19:19) Идея с к...   Sep 7 2009, 15:40
- - Rst7   ЦитатаЭто откуда такая инфа??? Пардон, я некорре...   Sep 7 2009, 16:18
- - Serega Doc   Цитата... но, лично у меня, душа к такому решению ...   Sep 7 2009, 17:16
- - Rst7   ЦитатаИ еще вопрос периемо передатчик который я пр...   Sep 8 2009, 05:14


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 14:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01484 секунд с 7
ELECTRONIX ©2004-2016