BH1750 light meter на 16f84a с экраном :)
|
|
defaultNick |
Дата: Ср, 05.08.2015, 22:25 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
27
Замечания:
±
На сайте с 06.06.2010
Статус:
Offline
|
Вообщем меряет сенсор люксы 0-65535 если кому надо, вот говнокод. извините за такой код. цель не стояла сделать красиво, памяти полно
INCLUDE "bs2defs.bas" DEFINE OSC 4 'HS 8 or 4 define LCD_DREG PORTB 'LCD DATA PORT DEFINE LCD_DBIT 0 'Starting data bit 0 or 4 DEFINE LCD_RSREG PORTB 'register select port (pin 4 of lcd) DEFINE LCD_RSBIT 5 'rgister select bit DEFINE LCD_EREG PORTB 'enable port (pin 6 of lcd) DEFINE LCD_EBIT 6 'enable bit DEFINE LCD_BITS 4 ' 4 OR 8. 4: d4,d5,d6,d7 jf lcd DEFINE LCD_LINES 2 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 a var word : x var byte : lux var word pause 10 : lux = 0
Lcdout $fe, 1 : lcdout "Lux" lcdout $fe, $c0 : lcdout "Meter"
pause 2000 mainloop: lux = 0 I2CWrite porta.0, porta.1, %01000110, [%00100000], bogus1 'Sziklai Pause 130 I2CRead porta.0, porta.1, %01000110, [a.byte1, a.byte0], bogus2 if a.bit0 = 1 then lux = lux + 1 if a.bit1 = 1 then lux = lux + 2 if a.bit2 = 1 then lux = lux + 4 if a.bit3 = 1 then lux = lux + 8 if a.bit4 = 1 then lux = lux + 16 if a.bit5 = 1 then lux = lux + 32 if a.bit6 = 1 then lux = lux + 64 if a.bit7 = 1 then lux = lux + 128 if a.bit8 = 1 then lux = lux + 256 if a.bit9 = 1 then lux = lux + 512 if a.bit10 = 1 then lux = lux + 1024 if a.bit11 = 1 then lux = lux + 2048 if a.bit12 = 1 then lux = lux + 4096 if a.bit13 = 1 then lux = lux + 8192 if a.bit14 = 1 then lux = lux + 16384 if a.bit15 = 1 then lux = lux + 32768 LCDOut $fe, 1 : lcdout dec lux
GoTo mainloop
bogus1: LCDOut $fe,1, "Error W" Pause 1000 End bogus2: LCDOut $fe,1, "Error R" Pause 1000 End
|
|
|
|
ADMIN |
Дата: Чт, 06.08.2015, 08:06 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
А какая тогда стояла цель? Хотелось бы хоть каких-то пояснений к данному набору буковок и циферок... Фотографий, описаний чего-либо. А так - какой смысл?
|
|
|
|
defaultNick |
Дата: Чт, 06.08.2015, 17:06 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
27
Замечания:
±
На сайте с 06.06.2010
Статус:
Offline
|
цель - чтоб влезало в этот пик и работало. оптимизация не нужна а что тут объяснять? а.0 и а.1 к сенсору. на экране показывает значение в люксах от 0 до 65535. вот и всё
сенсор распространённый, но простого кода не нашёл. они все используют готовую библиотеку для общения с ним. люкс-метер, так сказать.
|
|
|
|
ADMIN |
Дата: Чт, 06.08.2015, 19:06 | Сообщение # 4 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Я к тому, что ни названия датчика, ни комментариев.... Мне вот непонятно, о чем и к чему этот топик. Если в железе есть, можно оформить статью в каталоге. Только покрасивей. С фотками и комментами. Не затеряется.
|
|
|
|
defaultNick |
Дата: Ср, 28.10.2015, 03:19 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
27
Замечания:
±
На сайте с 06.06.2010
Статус:
Offline
|
тут всё понятно же. в названии темы датчик: BH1750 вот схема
единственное что: у меня lcd экран 1х16, но строчки поделены на 1х8 + 1х8 там немного поменять, чтоб или одна нормальная линия 1х16 была или 2х16. но это мелочи.
Сообщение отредактировал
defaultNick - Ср, 28.10.2015, 03:23
|
|
|
|
MiXaS |
Дата: Ср, 28.10.2015, 20:38 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Спасибо, даже не знал, что такой сенсор есть. Надо будет купить и проверить его на точность. На работе есть поверенный прибор
|
|
|
|
Matrix252005 |
Дата: Чт, 29.10.2015, 08:31 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Приятного времени суток!!!
defaultNick, не пойму этого:
Цитата defaultNick ( ) if a.bit0 = 1 then lux = lux + 1 if a.bit1 = 1 then lux = lux + 2 .... if a.bit14 = 1 then lux = lux + 16384 if a.bit15 = 1 then lux = lux + 32768 На сколько я понимаю, bit15 = 1 это и есть 32768... И зачем эти все манипуляции??? Не проще сделать так:
lux = a
Или я чет не понял???
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|