Перейти к содержимому


Фотография

Урок №17. Комплексное подключение. Часть пятая


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 22 Ноябрь 2014 - 12:44

  Продолжаем усложнять нашу программу. Подключим датчик звуковых колебаний. Теперь желтый светодиод будет включаться и от команды с пульта и от датчика звуковых колебаний. Добавим в программу строки, которые будут обрабатывать сигналы с датчика звука. Установим датчик звука на макетную плату, подадим питание на датчик с помощью монтажных проводов. Вывод «OUT» датчика подключим к выводу 5 платы Arduino.

//Кнопка «2» имеет код 16718055
//Кнопка «3» имеет код 16743045
//Кнопка «4» имеет код 16716015
#include <IRremote.h>
int LED = 4; // определяем порт для светодиода
int MOTOR = 6; // определяем порт для драйвера вентилятора
int SENSOR= 7; // определяем порт для датчика приближения
int SENSORSound =5 ;   // OUT от датчика звука  на  5-ый вывод
int SENSORStatus = 0; // первоначальный статус переменной SENSOR
int SENSORSoundStatus = 0; // первоначальный статус переменной SENSORSound
int RECV_PIN = 11; // назначаем 11-ый вывод для подключения фотоприемника
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()  
{
  pinMode(LED, OUTPUT); //определяем вывод на светодиод как "выход"
  pinMode(MOTOR, OUTPUT); //определяем вывод на драйвер как "выход"
  pinMode (SENSOR , INPUT); // вывод для подключения датчика приближения //настраиваем как //"вход"
pinMode (SENSORSound , INPUT);   // вывод для подключения датчика звука настраиваем //как //"вход"
  digitalWrite(MOTOR,HIGH);  // выключаем вентилятор  при старте программы
  irrecv.enableIRIn(); // функция начала приема
}
void loop() 
{
  if (irrecv.decode(&results))
 { // если сигнал принят
    if (results.value ==  16724175) // если принятый код равен коду клавиши «1»
      digitalWrite(LED,HIGH);   // то включаем светодиод    
    if (results.value == 16718055)  // если принятый код равен равен коду клавиши «2»
      digitalWrite(LED,LOW);  // выключаем светодиод
    if (results.value == 16743045)  // если принятый код равен равен коду клавиши «3»
      digitalWrite(MOTOR,LOW);  // включаем вентилятор
    if (results.value ==  16716015)  // если принятый код равен коду клавиши «4»
      digitalWrite(MOTOR,HIGH);   // то выключаем вентилятор   
    irrecv.resume(); // ждем прием следующего сигнала
  }
  SENSORStatus = digitalRead(SENSOR);  //  обновляем //статус //переменной СЕНСОР
  if (SENSORStatus  == HIGH) // если сработал датчик
    digitalWrite(MOTOR,LOW);  // включаем вентилятор
  SENSORSoundStatus = digitalRead (SENSORSound);  //считываем уровень на входе 5 и //ждем //хлопка
  if(SENSORSoundStatus ==0){   //если хлопок обнаружен- ноль на выходе датчика звука
  digitalWrite(LED,HIGH);   // то включаем светодиод    
}
}

  Записываем программу в плату Arduino. Отключим USB шнур от платы Arduino и подключим блок батарей. проверяем реакцию вентилятора на нажатие клавиш пульта и на датчик приближения и датчика звуковых колебаний. В качестве домашнего задания вы можете придумать другие типы исполнительных устройств и датчиков.
  Вы могли заметить, что в текстах программ были использованы одинаковые имена переменных, но написаны они были заглавными и прописными буквами. Например, int SENSORSound и  int sensorSound. Это вовсе не ошибка. Так можно писать. Но при одинаковом написании имени это  разные переменные. То есть, SENSORSound и sensorSound это два совершенно разных имени.






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных