Инфоурок Другое КонспектыУрок робототехники №5 "Кнопки и входы в Ардуино"

Урок робототехники №5 "Кнопки и входы в Ардуино"

Скачать материал

6 урок Ардуино

 

Кнопка
В следующем скетче будет использоваться кнопка с нормально разомкнутыми контактами, без фиксации.Это значит, что пока кнопка не нажата, ток через неё не идёт, а после отпускания, кнопка возвращается в исходное положение. 
В схеме, помимо кнопки используется резистор. В данном случае он не ограничивает ток, а "подтягивает" кнопку к 0в (GND). Т.е. пока кнопка не нажата на выводе Ardunio, к которому она подключена, будет низкий уровень. Резистор, используемый в схеме 10 кОм.

//определяем нажатие кнопки

int buttonPin = 7;

void setup(){

  pinMode(buttonPin, INPUT);//инициализируем пин на вход

  Serial.begin(9600);//инициализируем последовательный порт

}

void loop(){

  if (digitalRead(buttonPin)==HIGH){//если кнопка нажата

    Serial.println("pressed"); // выводим надпись "pressed"

  } else {

    Serial.println("unpressed");// иначе "unpressed"

  }

}

В этом скетче несколько новых команд.
digitalRead(pinNumber)-эта команда принимает значение High (высокий уровень) и low (низкий уровень), того вывода, который мы проверяем. Предварительно в setup() этот вывод надо настроить на вход.
pinMode (buttonPin, INPUT); //где buttonPin это номер вывода, куда подсоединяется кнопка.
Последовательный порт позволяет отправлять Ardunio сообщения на компьютер, в то время, как сам контроллер выполняет программу. Это полезно для отладки программы, отправки сообщений на другие устройства или приложения. Чтобы включить передачу данных через последовательный порт (другое название UART или USART), надо инициализировать его в setup()
Serial.begin() имеет всего один аргумент-это скорость передачи данных между Ardunio и компьютером. скетче используется команда 
Serial.print() для вывода сообщения на экран в Ardunio IDE (Tools >> Serial Monitor).
If/else- конструкция позволяют контролировать ход выполнения программы, объеденив несколько проверок в одном месте.If(если) digitalRead возвращает значение HIGH, то на мониторе выводится слово "нажата". Else(иначе) на мониторе выводится слово " отжата" . Теперь можно попробовать включать и выключать светодиод по нажатию кнопки.

//button press detection with LED output

int buttonPin = 7;

int ledPin = 8;

void setup(){

  pinMode(buttonPin, INPUT);//this time we will set button pin as INPUT

  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);

}

void loop(){

  if (digitalRead(buttonPin)==HIGH){

    digitalWrite(ledPin,HIGH);

    Serial.println("pressed");

  } else {

    digitalWrite(ledPin,LOW);

    Serial.println("unpressed");

  }

}

 

Аналоговый вход.
analogRead (pinNumber) analogRead позволяет считать данные с одного из аналоговых выводов Ardunio и выводит значение в диапазоне от 0 (0В) до 1023 (5В). Если напряжение на аналоговом входе будет равно 2.5В, то будет напечатано 2.5 / 5 * 1023 = 512
analogRead имеет только один аргумент- Это номер аналогового входа (А0-А5). В следующем скетче приводится код считывания напряжения с потенциометра. Для этого подключите переменный резистор, крайними выводами на пины 5V и GND, а средний вывод на вход А0.

Запустите следующий код и посмотрите в serial monitor, как меняются значения в зависимости от поворота ручки резистора.

//analog input

 

int potPin = A0;//к этому пину подсоединяется центральный вывод потенциометра

 

void setup(){

  //аналоговый пин по умолчанию включен на вход, поэтому инициализация не нужна

  Serial.begin(9600);

}

 

void loop(){

  int potVal = analogRead(potPin);//potVal is a number between 0 and 1023

  Serial.println(potVal);

}

Следующий скетч объединяет скетч нажатия кнопки и скетч управления яркостью светодиода. Светодиод будет включаться от кнопки, и управлять яркостью свечения будет потенциометр.

//button press detection with LED output and variable intensity

int buttonPin = 7;

int ledPin = 9;

int potPin = A0;

void setup(){

  pinMode(buttonPin, INPUT);

  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);

}

void loop(){

  if (digitalRead(buttonPin)==HIGH){//if button pressed

    int analogVal = analogRead(potPin);

    int scaledVal  = map(analogVal, 0, 1023, 0, 255);

    analogWrite(ledPin, scaledVal);//turn on led with intensity set by pot

    Serial.println("pressed");

  } else {

    digitalWrite(ledPin, LOW);//turn off if button is not pressed

    Serial.println("unpressed");

  }

}

 

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Урок робототехники №5 "Кнопки и входы в Ардуино""

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Портной

Получите профессию

Менеджер по туризму

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 672 543 материала в базе

Скачать материал

Вам будут интересны эти курсы:

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

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 07.02.2016 1215
    • DOCX 20.9 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Матушкин Алексей Юрьевич. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Матушкин Алексей Юрьевич
    Матушкин Алексей Юрьевич
    • На сайте: 8 лет и 2 месяца
    • Подписчики: 0
    • Всего просмотров: 15236
    • Всего материалов: 5

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой