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

пятница, 21 сентября 2012 г.

AnalogInOutSerial

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


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

  • Arduino
  • потенциометр
  • светодиод
  • 220 Ом резистор



Цепь

Подключите один вывод из вашего потенциометра на 5V, центральный контакт на аналоговый вывод 0, а последний вывод на землю. Далее подключить светодиод через 220 Ом резистор для ограничения тока в цифровой контакт 9. Длинный пин должен быть подключен к выходу из резистора, короткий на землю.

Схематический


Код

В программе ниже, после объявления двух назначение выводов (аналоговый 0 для потенциометров и цифровых 9 для LED) и двух переменных, sensorValue и outputValue , единственное, что вы делаете, будет в настройках функцию начать последовательную связь.
Далее, в основной цикл код, sensorValue назначается для хранения  аналогового значения, поступающие из потенциометра. Поскольку Arduino имеет analogRead разрешение 0-1023, а analogWrite разрешение только 0-255, это необработанные данные от потенциометра должно быть уменьшено до его использования для затемнения LED.
В целях расширения этого значения, использовать функцию map()

outputValue = map(sensorValue, 0, 1023, 0, 255);
outputValue назначается равной масштабированное значение с потенциометра. map() принимает пять аргументов: значение, которое будет отображаться, диапазон низких и высоких частот исходных данных, а также низких и высоких значений, что данные, которые будут масштабироваться тоже. В этом случае, данные датчиков отображается вниз от своего первоначального диапазона от 0 до 1023 от 0 до 255.
Данные отображаются с датчика затем выводятся на analogOutPin для затемнения или осветления LED в зависимости от значения потенциометра. Наконец, как значение и масштабированное значение датчиков направляются в последовательный порт непрерывным потоком данных.

const int analogInPin = A0;
const int analogOutPin = 9;

int sensorValue = 0;
int outputValue = 0;

void setup() {
  Serial.begin(9600); 
}

void loop() {
  sensorValue = analogRead(analogInPin);
  outputValue = map(sensorValue, 0, 1023, 0, 255);
  analogWrite(analogOutPin, outputValue);           

  Serial.print("sensor = " );                       
  Serial.print(sensorValue);      
  Serial.print("\t output = ");      
  Serial.println(outputValue);   

  delay(2);                     
}

Tone4

Этот пример показывает, как использовать tone() команду, чтобы играть разные ноты на несколько выходов.
tone() команда работает, взяв на себя одну из внутренних таймеров Atmega, в установив ее на частоту, которую вы хотите, и с помощью таймера к импульсным выходным контактом. Так как это только с помощью одного таймера, вы можете играть только одну ноту одновременно. Вы можете, однако, играют заметки о нескольких контактов последовательно. Чтобы сделать это, вам нужно выключения таймера на один контакт, прежде чем переходить к следующей.


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

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

  • Цепь


    Схематический


    Код

    В  коде ниже играет тона на каждый из динамиков в последовательности, после отключения предыдущего динамика. Обратите внимание, что продолжительность каждого тона равна задержке, которая следует за ним.
    void setup() {

    }

    void loop() {
       noTone(11);   
      tone(6, 440, 200);
      delay(200);

      noTone(6);
      tone(7, 494, 500);
      delay(500);
      
      noTone(7);  
      tone(11, 523, 300);
      delay(300);

    }

    суббота, 15 сентября 2012 г.

    Робот-бармен на базе Arduino Mega


    Робот-бармен — отличное дополонение для бара или весёлой дружеской вечеринки.
    Этот робот собран из акрила (при помощи лазерной резки) и представляет собой несколько «этажей».
    В верхнем «слое» находятся перевернутое бутылки с ингредиентами для коктейлей. Каждая ёмкость емеет свой канал с клапаном, который позволяет налить жидкость в стакан, который двигается внизу, вокруг центра машины. После прохождения «круга» стакан возвращается к открытой части и пользователь может взять свой напиток.
    В основе электронной начинки робота, лежит Arduino Mega с Android ADK и планшеный компьютер с ОС Андроид. 
    В качестве источника питания используется компьютерный блок питания ATX.
    В качестве движителя используется обычный мотор-редуктор, управляемый через H-мост, а положение вала контролируется датчиками Холла (магниты находятся под позицией каждого ингредиента).
    Клапаны на соплах управляются соленоидами, для контроля которых используется те же H-мосты.

    Конструкция робота-бармена в Solidworks:


    Ссылки:
    andrewparra.net/bender/

    Взято с http://robocraft.ru

    Simple Keyboard

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


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

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

  • Цепь

    Подключите один выход динамика к цифровому выводу 8 через резистор 100 Ом, а его другой выход на землю.
    Подключите ваши датчики параллельно на 5В. Подключите каждый датчик в аналоговые контакты 0-2, используя 10KОм резисторы между выходами датчиков.

    Схема

    Код

    const int threshold = 10;

    int notes[] = {
      NOTE_A4, NOTE_B4,NOTE_C3 };

    void setup() {

    }

    void loop() {
      for (int thisSensor = 0; thisSensor < 3; thisSensor++) {
        int sensorReading = analogRead(thisSensor);

        if (sensorReading > threshold) {
          tone(8, notes[thisSensor], 20);
        } 
      }
    }