Вы вошли на сайт, как Гость
Регистрация

Светофор, управляемый напряжениями

Программные примеры для микроконтроллеров AVR - AVRStudio
(Светофор, управляемый напряжениями разного уровня на аналоговом входе микроконтроллера)

К выводам порта D подключены три светодиода с цветным покрытием. Выводу 0 соответствует зеленый свет, выводу 1 — желтый, а выводу 2 — красный. Управление сигналами этого "светофора" осуществляется по уровню напряжения на аналоговом входе (пусть это будет вывод 3 порта А). При напряжении до 1 В на этом входе должен загораться зеленый свет, при напряжении 1..2 В — желтый, а при напряжении свыше 2 В — красный. Значение преобразования сохраняется в регистровой паре ADCL:ADCH, которой в WinAVR соответствует константа ADCW. Разрешение АЦП — 10 бит, а предельное значение напряжения на аналоговом входе составляет 5 В. Таким образом, для срабатывания зеленого света значение ADCW должно быть меньше, чем 1 • (210 - 1) / 5 = 1023 / 5. Аналогичным образом вычисляются и пороговые величины для красного (больше 2046 / 5) и желтого (1023 / 5 .. .2046 / 5) света.

Примечание: при компиляции проекта требуется добавить в проект следующие библиотеки: "avr/io.h", "avr/interrupt.h", "signal.h".


INTERRUPT(SIG_ADC)
{
  unsigned int ADCdata;
  ADCdata = ADCW;
  if (ADCdata > (2046 / 5)) PORTD = 3;
  else if (ADCdata < (1023 / 5)) PORTD = 6;
       else PORTD = 5;
  ADCSR = ADCSR | 0x40;        
}

int main (void)
{
  DDRD = 7;
  ADMUX = 3;
  ADCSR = 0xCE;
  sei();
  while(1) ;
}

Файлы проекта можно скачать здесь: