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

воскресенье, 11 декабря 2011 г.

Pitch follower


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

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



  • плата Arduino
  • маленький динамик 8 Ом
  • 1 фотоэлемент
  • резистор 4,7 КОм
  • резистор 100 Ом
  • перемычки
  • макетная плата

  • Цепь



    Подключите одну клемму вашего динамика к цифровому контакту 9 через резистор 100 Ом, а другую клемму на землю. Запитайте фоторезистор с помощью 5В и подключите на аналоговый порт 0 с добавлением резистора 4,7 КОм на землю.

    Схема


    Код

    Код для этого примера очень простой. Просто возьмите значение с  аналогового входа и отобразите его значения для диапазона звуков. Люди могут слышать с 20 - 20000 Гц, а 100 - 1000 как правило, работает очень хорошо для этого скетча

    Вы должны будете получить фактический диапазон аналогового входа для отображения. В схеме показано, аналоговое значение входного варьировались от примерно 400 до примерно 1000. Изменение значения в команде map() , чтобы соответствовать диапазон для вашего датчика.
    Эскиз выглядит следующим образом:
    void setup() {
      Serial.begin(9600);
    }

    void loop() {
      int sensorReading = analogRead(A0);
      Serial.println(sensorReading);
      int thisPitch = map(sensorReading, 400, 1000, 100, 1000);

      tone(9, thisPitch, 10);
    }

    суббота, 10 декабря 2011 г.

    Tone

    Этот пример показывает, как использовать команду tone() для генерирования (проигрывания) музыкальных нот. Он играет маленькую мелодию, которую вы, возможно, прежде слышали.

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



  • плата Arduino
  • маленький динамик 8 Ом
  • резистор 100 Ом
  • перемычки

  • Цепь



    Подключите одну клемму вашего динамика к цифровому контакту 8 через 100 Ом. Подключите другую клемму на землю.

    Схема




    Код

    Button State Change


    Как только у вас кнопка заработает, вы захотите сделать какие-либо действия, основанные на том, сколько раз нажата кнопка. Чтобы сделать это, вы должны знать, когда кнопка меняет состояние с выключенного на включенное, и посчитать, сколько раз это изменение состояния происходит. Это называется состояние обнаружения изменений.

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


  • плата Arduino
  • тактовая кнопка или переключатель
  • резистор 10 кОм
  • макетная плата
  • перемычки

  • Цепь


    Схема



    Скетч постоянно читает состояние кнопки. Затем он сравнивает состояние кнопки с предыдущем состоянием через цикл. Если текущее состояние кнопки, отличается от последнего состояния кнопки и текущее состояние кнопки включено, то кнопка изменилась с выключено на включено. Скетч затем увеличивает счетчик кнопки.
    Скетч также проверяет значение счетчика кнопки, и если оно кратно четырем, то включает светодиод на контакте 13. В противном случае, он выключает его.

    Код

    const int  buttonPin = 2;
    const int ledPin = 13;

    int buttonPushCounter = 0;
    int buttonState = 0;
    int lastButtonState = 0;

    void setup() {
      pinMode(buttonPin, INPUT);
      pinMode(ledPin, OUTPUT);
      Serial.begin(9600);
    }


    void loop() {
      buttonState = digitalRead(buttonPin);

      if (buttonState != lastButtonState) {
        if (buttonState == HIGH) {
          buttonPushCounter++;
          Serial.println("on");
          Serial.print("number of button pushes:  ");
          Serial.println(buttonPushCounter);
        } 
        else {
          Serial.println("off"); 
        }
      }
      lastButtonState = buttonState;

      if (buttonPushCounter % 4 == 0) {
        digitalWrite(ledPin, HIGH);
      } else {
       digitalWrite(ledPin, LOW);
      }
      
    }

    Debounce

    Этот пример демонстрирует использование кнопки как переключателя: каждый раз, когда вы нажимаете кнопку, светодиод (или любая другая нагрузка) включается (если он выключен) или выключается (если включен). Он также фильтрует (антидребезг) входные данные, что означает проверку дважды в короткий промежуток времени, чтобы убедиться, что кнопка определенно нажата. Без debouncing, нажав кнопку один раз, программа может посчитать, как несколько нажатий. Использует millis(), чтобы отслеживать время, когда кнопка нажата.

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


  • плата Arduino
  • тактовая кнопка или переключатель
  • резистор 10 кОм
  • макетная плата
  • перемычки

  • Цепь

    Схема

    Код

    const int buttonPin = 2;
    const int ledPin =  13;

    int ledState = HIGH;
    int buttonState;
    int lastButtonState = LOW;

    long lastDebounceTime = 0;
    long debounceDelay = 50;

    void setup() {
      pinMode(buttonPin, INPUT);
      pinMode(ledPin, OUTPUT);
    }

    void loop() {
      int reading = digitalRead(buttonPin);

      if (reading != lastButtonState) {
        lastDebounceTime = millis();
      } 
      
      if ((millis() - lastDebounceTime) > debounceDelay) {
        buttonState = reading;
      }
      
      digitalWrite(ledPin, buttonState);

      lastButtonState = reading;
    }
    }