Управлять портом по заданном времени. - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Управлять портом по заданном времени. (Включить выключить порт по расписанию)
Управлять портом по заданном времени.
ivan_fd Дата: Ср, 07.10.2009, 17:38  |                                                                                                                Сообщение # 1
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Привет. Что то не могу придумать как это сделать. Нужно допустим в 8.00 включить нагрузку, а в 19.00
выключить.
Если написать
Code
If vklhour = realhour And vklmin = realmin Then
         High port......
     EndIf     
     If vyklhour = realhour And realmin = cmin Then
         Low port.....
     EndIf

то проблем нету. А если, допустим, я включу питание контроллера, когда время уже прошло, то нагрузка не включится. (Часы на отдельной микросхеме) То есть мне нужно что бы в определенном промежутке времени нагрузка была включена, а в другом выключена.
Как бы это сделать.
Спасибо!


Меня все время преследуют умные мысли...но я быстрее!!!
ЯНДЕКС Дата: 07.10.2009
slavauk Дата: Ср, 07.10.2009, 20:08  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 68
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Может так

If realhour >= vklhour And realhour <= vyklhour and realmin >= vklmin and realmin <= cmin Then
High port......
EndIf
If realhour >= vyklhour And realmin >= cmin Then
Low port.....
EndIf

ivan_fd Дата: Ср, 07.10.2009, 22:52  |                                                                                                                Сообщение # 3
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Спасибо! Почти так.

Code
    If realhour >= vklhour And realhour <= vyklhour and realmin >= vklmin and realmin < vyklmin Then
     High eepled
     EndIf
     If realhour >= vyklhour And realmin >= vyklmin Then
     Low eepled
     EndIf  

Вот сдесь realmin <= cmin Then равно лишнее.


Меня все время преследуют умные мысли...но я быстрее!!!
Dmitry Дата: Чт, 08.10.2009, 23:47  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 161
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Ага. А теперь представим, что время работы с 22.00 до 6 утра, а устройство включили в 00.30 smile
DAlexV Дата: Пт, 09.10.2009, 10:16  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 691
Репутация: 17   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (Dmitry)
Ага. А теперь представим, что время работы с 22.00 до 6 утра, а устройство включили в 00.30

Только хотел это сказать, а уже опередили.
Quote (ivan_fd)
Часы на отдельной микросхеме

На сколько я помню во всех этих микрухах есть будильник, и не один. Почему бы не использовать их ???? Там как раз данная проблема вроде решена sweated


Будьте оригинальны - не повторяйте чужих ошибок !!!!
Пишу только на Рыбе (SwordFish). Другую пищу не предлагать, на шерсть влияет :)
ivan_fd Дата: Пт, 09.10.2009, 10:58  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Да про это я не подумал. В DS1302 вроде нету будильников.
В принципе мне нужно включать нагрузку только днем, но все равно нужно сделать как положено.
Будем думать.


Меня все время преследуют умные мысли...но я быстрее!!!
slavauk Дата: Пт, 09.10.2009, 13:29  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 68
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

DS1302 кроме часов имеют календарь,включая число,месяц и год.
Та-что изменив немного математику данный алгоритм применить всетаки можно.
ivan_fd Дата: Пн, 12.10.2009, 21:41  |                                                                                                                Сообщение # 8
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Это я в курсе, что есть календарь. В принципе можно что то думать.

Добавлено (09.10.2009, 21.46.24)
---------------------------------------------
Да, что то ничего у меня не получается, уже мозги кипят. sweated

Добавлено (12.10.2009, 21.41.34)
---------------------------------------------
Ребята, сдаюсь, помогите хоть какой то идеей, а то ничего не могу придумать.


Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Пт, 09.10.2009, 21:47
Dmitry Дата: Пн, 12.10.2009, 23:28  |                                                                                                                Сообщение # 9
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 161
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Вань! (ничего что на ты?)
Несколько тем назад ты успешно победил динамическую индикацию вкупе с ds18B20.
Причем использовал прерывание на асме. Это вообще-то на порядок сложнее, чем
нынешняя задача.
А сейчас такое очучение, что с этого логина пишет другой человек. Чегой-то ты перемудрил
малость. smile

Вот мое решение аналогичной задачи, именно с освещением. Но я проверяю только часы, мне минуты не нужны.
С минутами будет чуть больше условий. И без всяких дат. smile

Code

'OsvOn     - час включения
'OsvOff    -  час выключения
'hour   - текущий час

SetOsv:   if OsvOff >= OsvOn then
                 if (OsvOn <= hour) and (OsvOff > hour) then
                   high OSV
                 else
                   Low OSV
                 endif
               else
                 if (hour >= OsvOn) or (hour < OsvOff) then
                   High OSV
                 else
                   Low OSV
                 endif
               endif  

а на микрочипе тебя чичас порвут за такой вопрос happy

ivan_fd Дата: Вт, 13.10.2009, 11:45  |                                                                                                                Сообщение # 10
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Спасибо, счас посмотрим. Может и перемудрил, что то меня зациклило. Решал задачи и посложнее,
правда на Делфи, так как программирую не нем, а здесь ну не знаю.
А на микрочипе, пока что не порвали.

Добавлено (13.10.2009, 11.45.42)
---------------------------------------------
Dmitry, А ты знаешь (с твоего позволения тоже на ты biggrin ) почти точно так же как и ты
писал, только еще и с минутами начал мудрить, и ............
P.S: Приходишь после работы, голова дымит, и тут еще это, ну это я так ...... smile


Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Вт, 13.10.2009, 12:07
Dmitry Дата: Вт, 13.10.2009, 22:36  |                                                                                                                Сообщение # 11
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 161
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Quote (ivan_fd)
правда на Делфи, так как программирую нa нем,

Привет, коллега smile
ivan_fd Дата: Ср, 14.10.2009, 15:02  |                                                                                                                Сообщение # 12
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (Dmitry)
Привет, коллега smile

Привет! smile


Меня все время преследуют умные мысли...но я быстрее!!!
rdx75 Дата: Чт, 15.10.2009, 01:16  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Новенький
Сообщений: 8
Репутация: 0   ±
Замечания:   ±
На сайте с 29.08.2009

Статус: Offline

Мой вариант проги:
'если текущее время больше-ровно времени включения будильника, то включить светодиод.
'если текущее время больше времени выключения будильника - выключить светодиод
hour 'текущее врвемя - соответственно часы
min ' минуты
sec 'и секунды
hour_on 'время настройки будильника - часы
min_on 'минуты
sec_on 'и секунды когда он должен включиться
hour_off 'время настройки будильника - часы
min_off 'минуты
sec_off 'и секунды когда он должен выключиться

if ((hour > hour_on) or (hour = hour_on and min > min_on) or (hour = hour_on and min = min_on and sec >= sec_on)) and ((hour < hour_off) or (hour = hour_off and min < min_off) or (hour = hour_off and min = min_off and sec < sec_off))
led = 1
...
elseif
led = 0
endif

Сообщение отредактировал rdx75 - Сб, 17.10.2009, 00:43
ivan_fd Дата: Чт, 15.10.2009, 12:36  |                                                                                                                Сообщение # 14
Группа: Модераторы
Ранг:  Специалист
Сообщений: 882
Репутация: 47   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Quote (rdx75)
if (hour > hour_on) or (hour = hour_on and min > min_on) or (hour = hour_on and min = min_on and sec >= sec_on then)
led = 1
...
endif

Это понятно, ваш вариант, такой же как и в 3 сообщении.


Меня все время преследуют умные мысли...но я быстрее!!!
rdx75 Дата: Сб, 17.10.2009, 00:41  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Новенький
Сообщений: 8
Репутация: 0   ±
Замечания:   ±
На сайте с 29.08.2009

Статус: Offline

Quote (ivan_fd)

Это понятно, ваш вариант, такой же как и в 3 сообщении.

Дополнил код, см. 13 сообщение

Сообщение отредактировал rdx75 - Сб, 17.10.2009, 00:42
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Управлять портом по заданном времени. (Включить выключить порт по расписанию)
Страница 1 из 212»
Поиск: