Если Вы заинтересованы в моих переводах и хотите меня отблагодарить, то кликните всего на одной ссылке в блоке Оплаченная Реклама

пятница, 21 сентября 2012 г.

AnalogInOutSerial

Этот пример показывает, как читать аналоговый входной вывод, затем переносить результат в диапазон от 0 до 255, а затем использовать этот результат для установки длительности импульса модуляции (PWM) в выходной контакт, чтобы установить яркость светодиодов.


Необходимое оборудование

  • Arduino
  • потенциометр
  • светодиод
  • 220 Ом резистор



Цепь

Подключите один вывод из вашего потенциометра на 5V, центральный контакт на аналоговый вывод 0, а последний вывод на землю. Далее подключить светодиод через 220 Ом резистор для ограничения тока в цифровой контакт 9. Длинный пин должен быть подключен к выходу из резистора, короткий на землю.

Схематический


Код

В программе ниже, после объявления двух назначение выводов (аналоговый 0 для потенциометров и цифровых 9 для LED) и двух переменных, sensorValue и outputValue , единственное, что вы делаете, будет в настройках функцию начать последовательную связь.
Далее, в основной цикл код, sensorValue назначается для хранения  аналогового значения, поступающие из потенциометра. Поскольку Arduino имеет analogRead разрешение 0-1023, а analogWrite разрешение только 0-255, это необработанные данные от потенциометра должно быть уменьшено до его использования для затемнения LED.
В целях расширения этого значения, использовать функцию map()

outputValue = map(sensorValue, 0, 1023, 0, 255);
outputValue назначается равной масштабированное значение с потенциометра. map() принимает пять аргументов: значение, которое будет отображаться, диапазон низких и высоких частот исходных данных, а также низких и высоких значений, что данные, которые будут масштабироваться тоже. В этом случае, данные датчиков отображается вниз от своего первоначального диапазона от 0 до 1023 от 0 до 255.
Данные отображаются с датчика затем выводятся на analogOutPin для затемнения или осветления LED в зависимости от значения потенциометра. Наконец, как значение и масштабированное значение датчиков направляются в последовательный порт непрерывным потоком данных.

const int analogInPin = A0;
const int analogOutPin = 9;

int sensorValue = 0;
int outputValue = 0;

void setup() {
  Serial.begin(9600); 
}

void loop() {
  sensorValue = analogRead(analogInPin);
  outputValue = map(sensorValue, 0, 1023, 0, 255);
  analogWrite(analogOutPin, outputValue);           

  Serial.print("sensor = " );                       
  Serial.print(sensorValue);      
  Serial.print("\t output = ");      
  Serial.println(outputValue);   

  delay(2);                     
}

Комментариев нет:

Отправить комментарий