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

воскресенье, 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;
    }
    }

    четверг, 29 сентября 2011 г.

    Button


    Button

    Кнопки и переключатели соединяют две точки цепи при нажатии на них. Этот пример включает встроенный светодиод на контакте 13, когда вы нажимаете на кнопку.

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


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

  • Цепь

    Подключите три провода к плате Arduino. Первые два, красный и черный, подключение к двух длинных вертикальных рядов на стороне плате для предоставления доступа к 5 вольт питания и землей. Третий провод идет от цифрового контакт 2 одна нога кнопки. В том же нога кнопки подключается с помощью выпадающего резистор (здесь 10 кОм ) на землю. Другая нога от кнопки подключается к 5 вольт питания.

    Когда кнопка открыта (unpressed) нет никакой связи между этими двумя ногами кнопки, так что вывод подключен к земле (через выпадающее резистор), и мы читаем LOW. При нажатии на кнопку закрытия (нажата), это делает связь между его двумя ногами, подключением вывода до 5 вольт, так что мы читаем HIGH.

    Вы также можете проволоки эта схема в обратном направлении, с подтягивающий резистор соответствии вход HIGH, LOW и будет, когда нажата кнопка. Если так, то поведение эскиз будет пересмотрено, с светодиодной нормально и выключение при нажатии кнопки.

    Если вы отключите цифровой ввода / вывода по всему, индикатор может мигать беспорядочно. Это потому, что вход «плавающей» - то есть, он будет случайным образом возвращать либо высоким или низким. Именно поэтому вам нужно подтягивающий или выпадающее резистор в цепь.

    Схема


    Код

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

    int buttonState = 0;

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

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

      if (buttonState == HIGH) {
        digitalWrite(ledPin, HIGH);
      }
      else {
        digitalWrite(ledPin, LOW);
      }
    }

    среда, 28 сентября 2011 г.

    Blink Without Delay


    Blink Without Delay

    Иногда вам нужно делать две вещи одновременно. Например, вы можете мигать светодиодом (или некоторые другие требовательные к процессорному времени функции) пока считывается нажатие кнопки или другие данные. В этом случае, вы не можете использовать delay () , или вам придется  остановить все остальные программы, а индикатор моргнул. Программа может пропустить нажатие кнопки, если она происходит во время delay (). Этот скетч показывает, как мигать индикатором без использования delay () . Он следит когда Arduino переключил светодиод последний раз. Затем каждый раз через loop () , он проверяет, достаточно ли прошло времени. Если достаточно, он переключает индикатор (включен или выключен).

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



  • плата Arduino
  • светодиод

  • Цепь

    Чтобы построить схему, возьмите светодиод и подключите его длинную, положительную ногу (т. н. анод) к контакту 13. Подцепите  отрицательную ногу (т. н. анод) на землю. Затем подключите вашу плату Arduino на ваш компьютер, запустите программу Arduino и введите код.

    Схема


    Код

    Код ниже использует millis (), функцию, которая возвращает количество миллисекунд, прошедших со старта текущей программы на плате Arduino для мигания светодиода.
    const int ledPin =  13;

    int ledState = LOW;
    long previousMillis = 0;

    long interval = 1000;

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

    void loop()
    {
      unsigned long currentMillis = millis();

      if(currentMillis - previousMillis > interval) {
        previousMillis = currentMillis;

        if (ledState == LOW)
          ledState = HIGH;
        else
          ledState = LOW;

        digitalWrite(ledPin, ledState);
      }
    }