Вы здесь

Управление портами вывода в Arduino

Рассмотрим порты на примере Arduino Uno:
Ардуино и порты вывода


Arduino имеет 14 портов вывода.
КРАСНЫЕ выводы могут выдавать значения от 0 до 5 Вольт, с шагом 0,02 Вольта. В Arduino используется 8 битный ШИМ, а это значит, что мы можем задавать параметры вывода исходя от 256 градаций, тесть от 0 до 255.
ЗЕЛЁНЫЕ выводы могут выдавать только 0 или 1, то есть 0 или 5 Вольт.
С помощью PWM выводов мы можем изменять яркость светодиода, или управлять сервоприводом. В нашем примере мы подключим светодиод и будем менять его яркость c помощью Serial.

 

const int analogOutPin = 3; // Задаем порт, на котором будем изменять яркость
int Brightness = 0;        // Значение, которому будет равна яркость
void setup()
{
  Serial.begin(9600); // Открываем Serial порт
}
void loop()
{
  if (Serial.available() > 0) // Если значения Serial больше нуля, то..
  {
    Brightness = Serial.parseInt(); // то яркость = числу от 0 до 256, которое мы отослали в Serial
  }
  analogWrite(analogOutPin, Brightness); // Записываем значения яркости в 3 порт
}

 


С помощью ЗЕЛЁНЫХ выводов можно зажигать светодиоды, считывать значения с кнопок или определенных датчиков, например, с датчика движения.
Во второй программе светодиод будет зажигаться при нажатии кнопки.
Не забываем подключить к кнопке землю(GND) через подтягивающий резистор. Такая схема будет давать на первом входе Arduino логическую 1 при нажатой кнопке, и 0 при отжатой.

ардуино светодиод и кнопка
 

const int buttonPin = 1;     // Подключаем кнопку на 1 порт
const int ledPin =  0;      // Подключаем светодиод на 0 порт
int buttonState = 0;  // Переменная значения кнопки
void setup() {
  pinMode(ledPin, OUTPUT); // Настраиваем 0 порт на выход
  pinMode(buttonPin, INPUT); // Настраиваем 1 порт на вход
}
void loop() {

  buttonState = digitalRead(buttonPin); // Присваиваем переменной значение кнопки

  if (buttonState == HIGH) // Если значение кнопки , то зажигаем светодиод
  {
    digitalWrite(ledPin, HIGH);
  }
  else // иначе выход свктодиода равент 0
  {
    digitalWrite(ledPin, LOW);
  }
}