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

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

    вторник, 27 сентября 2011 г.

    Fade

    Fade

    Демонстрирует использование функции analogWrite ()  для включения и выключения светодиода. analogWrite использует широтно-импульсную модуляцию (ШИМ) , включая и выключая цифровой выход очень быстро, чтобы создать эффект затухания.

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


  • плата Arduino
  • макетная плата
  • светодиод
  • резистор 220 Ом

  • Цепь

    Подключите анод (длинная, положительная нога) вашего светодиода на цифровой выход 9 на Arduino через 220 Ом. Подключите катод (короткая, отрицательная нога) непосредственно к земле.

    Схема


    Код

    После объявления контакта 9, чтобы был вашим ledPin , нечего делать в функции setup()кода. В функции AnalogWrite (), которая будет использоваться в основном цикле вашего кода требуется два аргумента: один говорит функции какой выход использовать, и один указывает значение ШИМ для записи.
    Для того, чтобы менять состояние светодиода с выключенного на включенный, постепенно изменяйте  значение ШИМ от 0 (полностью выключен) до 255 (включен), а затем обратно до 0 для завершения цикла. В скетче ниже, значение ШИМ устанавливается с помощью переменной brightness. Каждый цикл brightness увеличивается на значение переменной fadeAmount .
    Если brightness достигает среднего значения  (0 или 255), то fadeAmount меняется свое значение на противоположное. Другими словами, если fadeAmount равно 5, то  он устанавливается в -5.

    analogWrite () может изменить значение ШИМ очень быстро, поэтому задержка в конце скетча позволяет нам заметить это изменение. Попробуйте изменить значение задержки и посмотреть, как он меняет программу.
    int brightness = 0;
    int fadeAmount = 5;

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

    void loop()  {
      analogWrite(9, brightness);  

      brightness = brightness + fadeAmount;

      if (brightness == 0 || brightness == 255) {
        fadeAmount = -fadeAmount ;
      }
      delay(30);                          
    }