Jump to content

Recommended Posts

Я думал не увеличивать обвязку и тем более программу привязавшись к спидометру

просто думал ввести еще две величины,

заполнил в меню расход по трассе, и расход по городу

и добавилось еще два отображаемых параметра (два по очереди отоброжаемых прогноза)

:unsure: на это наверное уйдет меньше памяти если допустим еще привязаться к спидометру

у меня стоит на спидометре тросик, к чему там привязаться? :huh:

пластиковая шестеренка в коробке --тросик---и магнит создает магнитное поле в котором поднимается стрелка спидометра если я ничего не напутал,да и в спидометр лезть ,нет желания, хотелось обойтись малой кровью без этих усложнений)

поэтому и просил еще немного дописать программу, если это возможно?

одометр - конечно есть, их даже 2 ;)

общий пробег, и тот который сбрасывается, как называется незнаю

но это надо умножать остаток на расход и в голове считать

а тут сразу все на экране маршрутного компьютера

Edited by Жендос

Share this post


Link to post
Share on other sites

Собрал прибор, прошивал мегу8 программатором PoniProg. Заливал прошивку lcd. Вроде все работает на дисплее в первой и второй строчке с лева температура кажет, с права в верхней строчке (0 л) а в нижней строчке напряжение (12.0 в). Вхожу в меню калибровки все работает видно как изменяются цифры при перемещении реостата, вот только при пустом баке показание (680) а при полном баке меньшее, ближе к нулю гдето так (17).

Приступаю к калибровке как оговаривает автор, все делаю точно как сказано не забываю записовать (ОК) до 39 литров. Выхожу из калибровки. (0 л) ни сместа, устанавливаю инерционность (2) ноль ни сместа.

Что делаю не так понять не могу?

При открытие PoniProg-ом прошивки NEX, EEPROM остается пустым.

Загружаю в PoniProg EEPROM и зашиваю. Все работает но показывает литры все на оборот да и с количеством врет.

Файл EEPROM для демо или он нужен в прошиве?

Пытаюсь откалибровать, опять проклятый (0 л).

Где моя ошибка понять не могу.

Share this post


Link to post
Share on other sites

Была такая-же проблема, при уменьшении сопротивления к полному баку- прибор не калибровался, только когда перепаял контакт на датчике(наоборот). Бак пустой- сопротивление мин, бак полный- макс. тогда все откалибровалось. Но у меня другая проблема вылезла. Все окалибровал, на трассе бак "пустел" правильно, четко по литрам, но когда дошло до 20л, зависло, после выкл.-вкл. питания значение замерло на 8л и больше не менялось, даже при отключении датчика :(

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

и всё же проблема с тем фактом, что нельзя одновременно задействовать штатную шкалу и измерения микроконтроллера.

может быть, кто-то меня даже поддержит, есть смысл сделать переключатель, в одном положении с датчика уровня идёт на ОУ, в другом положении стандартно, как в конструкции машины. можно ли сделать отдельные версии прошивки так, чтобы

1) если показания больше 45 литров - чтобы они (показания литров) прятались, ведь всё равно никакой информации не несут

2) то же самое, но включая показания нуля литров. (то есть если ноль литров, то показания скрываются)

так было бы логичнее. а то чушь показывает порой. а тут и конструкция машины не затрагивается и смотреть показания можно).

и у всех прыгают показания АЦП при ВКЛЮЧЕНИИ АВАРИЙКИ?

Share this post


Link to post
Share on other sites
Выхожу из калибровки. (0 л) ни сместа, устанавливаю инерционность (2) ноль ни сместа.

похоже, что нет записи в еепром. войдите в меню калибровки датчика, кнопками +/- погоняйте литраж от 0 до 39л. значение в скобках (в нижней строке слева) есть данные, которые записанны в еепром для каждого калиброванного значения. проверьте правильность калибровки.

Файл EEPROM для демо или он нужен в прошиве?

файл lcd.нех - полный дамп памяти (программа + еепром). не знаю причины, но иногда возникают ошибки (особенности понипрога, микропроцессора): приходится зашивать еепром ОТДЕЛЬНО от нех файла. поэтому я его и выложил.

но когда дошло до 20л, зависло, после выкл.-вкл. питания значение замерло на 8л и больше не менялось, даже при отключении датчика

интересно... померьте напряжение с выхода LM-ки при изменении сопротивления датчика.

Share this post


Link to post
Share on other sites
                     

Литиевые батарейки Fanso в беспроводных датчиках пожарно-охранной сигнализации

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

Подробнее...

так какое всетаки конечное решение, примет автор

на тему "прогоз остатка по городу и трассе"?

Share this post


Link to post
Share on other sites

автор, можно ли попросить версию с маленьким мягким знаком и дробной температурой?

Share this post


Link to post
Share on other sites

Автору. Уважаемый Юрий проблема с калибровкой.

Если перевернуть реостат поплавок в баке ВАЗ21063 то тогда сопротивление будет при пустом баке возрастать от (0) пустого до (330 ом) полного и прибор начинает работать правильно но проблема с точной калибровкой.

А нельзя чтобы в штатный датчик бензобака не переделовать, нечего там не переворачивать и перепаявать.

Чтобы можно было бы калибровать от 330 к 0.

Может ктото решил такую проблему или знает как ее решить.

Share this post


Link to post
Share on other sites

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

или в чём-то трудность?

вот как бы если делал я, то, как понимаю, при калибровке в энергонезависимую память пишется значение АПЦ с сопряжённым с ним количеством литров. а при считывании показаний, ищется ближайшее значение АЦП из энергонезависимой памяти, и выводится на дисплей сопряжённое с ним значение количества литров. по идее не должно быть сильной разницы, в какую сторону меняются показания АЦП при росте топлива (??)

Edited by Блуд

Share this post


Link to post
Share on other sites

Я вообще не понимаю почему автор схемы не предусмотрел калибровочный режим, как особый режим схемы...

Я, например, всегда в таких случаях предусматриваю вход в такой режим удержанием одной из кнопок при включении питания. А после этого функциональность всех органов управления и индикации становится иной. Тогда обычным потенциометром на входе АЦП контроллера и ОДНОЙ (максимум двух) кнопки можно производить калибровку бензобака (и вообще всего чего угодно, например датчика скорости при смене колес).

Процедура. Наливаем в ПУСТОЙ бензобак 1 литр топлива из мерного стакана. Выставляем потенциометром показание дисплея "1", кнопкой заносим позицию во флеш данных, доливаем еще один литр - повторяем действие. Можно делать не по литру, а по пять, а потом при работе интерполировать точки, только нужно понять, что при произвольной форме баков разных машин нарастет ошибка.

Для тех, кто желает определять уровень топлива точнее 1 литра. Это глупость. В топливной системе автомобиля и на дне бака есть неснижаемый остаток, а так же при изменении температуры объем топлива заметно меняется. Поэтому рыть в поисках миллилитров задача бессмысленная. Особенно в условиях теоретичности предсказаний пути на остатке топлива в МК - никто не может знать режима движения в дальнейшем и скорее всего он будет отличаться от предыдущего режима... При заправке конечно полезная фича, однако аппелировать к АЗС по поводу недолива на основании такого метода измерений наивно... Да и стоимость топлива нынче рыночная, т.е. важнее не уплаченная сумма, а качество этого топлива, а с этим и есть засада... А недолив нынче редок и опасен для АЗС...

Share this post


Link to post
Share on other sites
Я вообще не понимаю почему автор схемы не предусмотрел калибровочный режим, как особый режим схемы...

Наливаем в ПУСТОЙ бензобак 1 литр топлива из мерного стакана. Выставляем кнопками +/- показание дисплея "1", кнопкой заносим позицию во флеш данных, доливаем еще один литр - повторяем действие.

именно по такому алгоритму работает калибровка в этом устройстве.

ЭТО написано в описании к схеме.

Чтобы можно было бы калибровать от 330 к 0.

разницы в калибровке (от 330 к 0, или 0 к 330) никакой нет. данные значения АЦП записываются в массив энергонезависимой памяти.

имеет место алгоритм проверки в программе.

можно ввести еще один пункт настройки ( "0" при пустом / "0" при полном баке).

при калибровке в энергонезависимую память пишется значение АПЦ с сопряжённым с ним количеством литров. а при считывании показаний, ищется ближайшее значение АЦП из энергонезависимой памяти, и выводится на дисплей сопряжённое с ним значение количества литров

именно так и работает.

Edited by Юрец

Share this post


Link to post
Share on other sites

Автору.

Пробовал калибровать от 330ом в сторону уменьшения к 0ом, ничего не получается программа не понимает такого калибра и 0 л ни с места.

Но если откалибровать в обратном порядке тоесть от 0ом к 330ом тогда все в норме.

Как все же сделать? Чтобы программно можно было бы калибровать при начальном сопротивление 330ом.

Share this post


Link to post
Share on other sites
Но если откалибровать в обратном порядке тоесть от 0ом к 330ом тогда все в норме.

Как все же сделать? Чтобы программно можно было бы калибровать при начальном сопротивление 330ом.

в протеусе работает (откалибровать в обратном порядке).

в железе - пока не имею возможности. заказал индикатор в chipdip. как придет - проверю, в чем грабли. подождите.

Share this post


Link to post
Share on other sites

У меня такая-же проблема. "Пробовал калибровать от 330ом в сторону уменьшения к 0ом, ничего не получается программа не понимает такого калибра и 0 л ни с места."

Выше писал, что бак застыл на 8 литрах. Померил напряжение с оу, все меняется, также меняются литры от 0 до 8, на 8 замирает, хотя в калибровке значения идут дальше(в соответствии с записью).

Бак застыл на 8 литрах- произошло на трассе, приборчик сбросился на 8 литров и сбросились настройки подсветки, т.е. днем загорелась на полную.

У меня старнный глюк при прошивке мк. После каждой перепрошивки точки в меню и мягкий знак то отображаются в черном квадрате, то вообще произвольные значки. И регулировка подсветки становится на уровень 254, пока не уменьшишь значение до 5- яркость не начинает менятся, а от 5 до 0 все четко. Пользуюсь ponyprog- ом.

Share this post


Link to post
Share on other sites
Автору.

Пробовал калибровать от 330ом в сторону уменьшения к 0ом, ничего не получается программа не понимает такого калибра и 0 л ни с места.

Но если откалибровать в обратном порядке тоесть от 0ом к 330ом тогда все в норме.

Как все же сделать? Чтобы программно можно было бы калибровать при начальном сопротивление 330ом.

to STRELEC,motori,Блуд

вот измененная прошивка. изменения:

калибровка такая- "0" литров при максимальном сопротивлении датчика уровня топлива (330ом).

симулировал в протеусе. нашел проблему. исправил.

далее (как придет индикатор) введу доп. пункт меню (0 при пустом / 0 при полном баке).

пробуйте!

lcd3.rar

Edited by Юрец

Share this post


Link to post
Share on other sites

Автору.

Опробовал прошиву lcd3, с ней полная засада :blink: теперь температура без десятых и инерционность только в минус а в плюс не переходит сигнал нажатия кнопки есть. (-1; -2; -3; и т.д.) куда исчезло ( 1; 2; 3 и т.д.)

Соответственно вся калибровка без инерционности бесполезна. :angry:

Share this post


Link to post
Share on other sites
теперь температура без десятых и инерционность только в минус а в плюс не переходит сигнал нажатия кнопки есть

я же указывал, что работаю только в протеусе - в нем все нормально. нужно проверять в железе. подождите.

p.s. да, эта прошивка с температурой без десятых.

Share this post


Link to post
Share on other sites

:blink: Автор так и не дал исчерпывающий ответ по прогнозу трасса/город

это все без наездов, просто уже 2 раза мои посты просто проигнорировали?

Share this post


Link to post
Share on other sites
ответ по прогнозу трасса/город

это все без наездов, просто уже 2 раза мои посты просто проигнорировали?

извиняюсь...

думал, как это можно реализовать. все-таки придется привязываться к

1.тахометру (импульсы на катушку, для проверки запущенного двигателя).

2. спидометра (для контроля хотя-бы уровня скорости 60км/ч и более).

3. угол наклона дроссельной заслонки вторичной камеры .

третий пункт самый сложный в плане расчетов. можно ездить в экономичном режиме (плавный разгон; педаль газа не "резко топтать"), так и в "скоростном".

как это все завязать в одну кучу - пока не знаю. даже если в железе что-то и получится, то придется делать кучу экспериментов в реальных условиях.

p.s. как узнать частоту с датчика скорости при 60км/ч? (предложения типа "прицепить частотомер" не принимаются.). кстати, датчики ведь разные ?

p.p.s. добавить доп. меню и вывод остатка километража на количестве топлива в баке - несложно. если устроит только это, то изменения в программу внесу тогда, когда пришлют жк. индикатор (свой разбил по неаккуратности). привык проверять все в железе, а сейчас приходится симулировать в протеусе. (ввиду неопытности работы с протеусом пока не все получается так, как хотелось).

Edited by Юрец

Share this post


Link to post
Share on other sites

STRELEC:

Опробовал прошиву lcd3, с ней полная засада

изменил только строки контроля уровня топлива. инерционность не трогал...

Edited by Юрец

Share this post


Link to post
Share on other sites

:rolleyes: Спасибо за пояснение, наберусь терпения и буду ждать конкретных решений.

Девайс очень интересен, и уже в железе собран.

Share this post


Link to post
Share on other sites

Может у кого-то есть печатка в спринт-лайоуте? Или расскажите как напечатать плату через PCAD вювер.

Share this post


Link to post
Share on other sites
p.s. как узнать частоту с датчика скорости при 60км/ч? (предложения типа "прицепить частотомер" не принимаются.). кстати, датчики ведь разные ?

А какой автомобиль? Инфу, как правило, легко нагуглить.... Вообще-то имея этот девайс на борту (миникомп), определить частоту следования импульсов не проблема - достаточно написать тестовую прошивку в пару строчек, которая эту частоту измеряет и выводит. Работы на полчаса, зато потом этот вопрос полностью отпадет...

Share this post


Link to post
Share on other sites

Вот плата в 5 спринте, только резисторы и конденсаторы там smd?

выведены пятачки для ISP програмирования, там мало что подписано,

при желании разберетесь, если нет то выложу где больше пояснений

(В файле, после скачивания

нужно расширение тхт изменить на lay, иначе мне не удается его сюда залить :angry: )

Автору, меня 100% устроит вариант, без завязывания с лишними датчиками,

у меня их просто нет, тахометра нет, спидометр на тросике,

вобщем если можно то сделайте вариант, с дополнительными менюшками

за все время у меня вырабатался свой стил езды,

и я бы ввел средний расход по городу и трассе и наслаждался бы предполагаемым остатком :rolleyes:

555.txt

Share this post


Link to post
Share on other sites
определить частоту следования импульсов не проблема - достаточно написать тестовую прошивку в пару строчек, которая эту частоту измеряет и выводит. Работы на полчаса, зато потом этот вопрос полностью отпадет...

Приветствую!

интересное предложение. можно ввести это измерение (калибровку частоты датчика скорости в основную прошивку девайса).

есть варианты? (пример или кусок кода).

p.s. TIMER_0 уже использован. привязывать нужно к TIMER_1.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Вячеслав_НС
      помогите разобраться с кодом .(послать значение по шине TWI на ЦАП PCF8591) не работает в протеусе ...
      #define F_CPU 8000000UL 
      #include <stdlib.h>
      #include <avr/io.h>
      #include <util/delay.h>
      //*** ИНИЦИАЛИЗАЦИЯ ШИНЫ TWI ***/
      void TWI_Init(void)
      {
          // Установка тактовой частоты F_scl  = 100 кГц
          TWBR =32;
          TWSR &= (~((1<<TWPS1)|(1<<TWPS0)));
          TWCR |= (1 << TWEN);            // Разрешение работы TWI-модуля
      }

      /*** ЗАПУСК TWI ***/
      void TWI_Start(void)
      {
          TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
          while(!(TWCR & (1<<TWINT)));
          TWDR = 1001000; // передача адреса модуля PCF8591 в шину TWI
          TWCR=(1<<TWINT)|(1<<TWEN);
          while(!(TWCR & (1<<TWINT)));
      }
      /*** ОСТАНОВКА TWI ***/
      void TWI_Stop(void)
      {
          TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
          while(TWCR & (1<<TWSTO));        // Ожидание завершения передачи условия СТОП
      }
      /***ПЕРЕДАЧА ДАННЫХ В TWI***/
      void TWI_WriteByte(uint8_t data)
      {
          TWDR = data;                    // Загрузка данных в TWDR
          TWCR=(1<<TWINT)|(1<<TWEN);
          while(!(TWCR & (1 << TWINT)));    // Ожидание завершения передачи данных
      }
      /*** ПЕРЕДАТЬ ЗНАЧЕНИЕ В PCF8591 ***/
      void PCF8591_get(void)
      {
          TWI_Start();                // Запуск TWI
          TWI_WriteByte(0x40);        //включаем цап
          TWI_WriteByte(100);            // запись в ЦАП значения 100
          TWI_Stop();                    // Остановить TWI
      }            
          int main(void)
      {
          TWI_Init();    
          while (1)
      {
              PCF8591_get;
             _delay_ms(50);
        }
      }
    • By Вячеслав_НС
      Здравствуйте ! подскажите , какую лучше библиотеку использовать (и где ее взять) для управления i2c atmega8 в atmel studio 7  .  задача - управлять atmega8 по i2c ,  цап  PCF8591T .
      понимаю , в интернете много примеров и библиотек , но хотелось бы пример максимально простой и точно рабочий . т.к. пока что все мои попытки не привели к успеху ... то Atmel Studio 7 при компиляции ругается на несуществующий файл ( к примеру - "stream.h") при использовании библиотеки i2c , то еще какие то грабли .
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • By Adinetsrock
      Помогите опознать транзистор. Выпаял из бортового компьютера Surf.  Маркировка E144A    K38X

    • By BosveL
      Есть оптическая мышь. Её считывающий элемент устроен так, что когда мышка в покое, на светодиод (который подсвечивает этот элемент) подается напряжение 1.35 V и 4 mA. Но когда мышку двигаешь, светодиод загорается сильнее и напряжение на нём составляет уже 1.8 V и 24 mA. Необходимо сделать так, чтобы на ардуино приходила логическая единица, означающая, что мышку двигают. Я думаю это сделать с помощью мосфета, только не могу никак подобрать его. Он должен открываться при указанном напряжении (когда мышь двигается) и посылать через повышающий преобразователь 3.3 вольта (т.е. лог. единицу). Если это можно сделать не с помощью мосфета, подскажите пожалуйста свои мысли и идеи.
      ___
      Это будет маска для сна, которая замечает движение глаз в быстрой фазе сна и зажигает светодиоды (на самой маске). Ставил PIR датчик движения, он не хочет работать так близко, срабатывает в 1 из 5 случаев. А вот мышка подходит идеально. Заменил её светодиод на инфракрасный, теперь она работает в невидимом для человеческого глаза диапазоне. Кстати говоря этот ИК светодиод питается отдельно от мышки (с ней он работать не хочет). и теперь контакты, где был родной светодиод (красный) поступает указанные выше значения. Вот с этих контактов хочу взять логическую единицу.  Весь проект написан на ардуино, наработки скетча имеются. Я новичок, поэтому не могу подобрать мосфет. Искал в инете, понял как это работает, но не могу разобраться как его подобрать. Заранее спасибо за помощь.
×
×
  • Create New...