Цепляем цифровой датчик температуры к Ардуино Удобство цифрового датчика в том, что его показания не зависят от изменения напряжения питания и прочих параметров, не требует калибровки, прост в реализации и повторяем.
Подключаем датчик DS18B20 к Carduino Nano (Arduino Nano V3, Freeduino) по приведенной ниже схеме
Bit-Bang программатор или как Ардуина прошивается «Сердцем» Bit-Bang программатора является микросхема FD232RL (та самая, которая связывает через USB, Arduino с компьютером). Микроконтроллер ATmega никакого участия в процессе программирования не принимает, на его место мы ставим чистый и не прошитый котроллер, который будем пробовать запрограммировать.
Прерывание — это сообщение Ардуине, что нужно выполнить вашу подпрограмму!
Для этого используются 2е функции
Вкл. обработку прерываний attachInterrupt(interrupt, function, mode)
Выкл. прерывание detachInterrupt(interrupt)
Начнем с обработки прерывания: attachInterrupt(interrupt, function, mode) — Функция указывает какую функцию вызывать при Прерывании.
Параметры: interrupt — Arduino имеют два внешних прерывания с номерами 0 и 1, находятся они на 2 и 3 цифровом входе (digital pin) соответственно. Этот параметр отвечает именно за выбор какой из пинов выбрать для прерывания.
function — указываем функцию которая будет вызываться про прерывании. Функция должна быть без параметров и не возвращать ни каких данных.
mode — Определяет 4 вида прерывания: LOW вызов, когда на порту низкий уровень напряжения CHANGE вызывается при изменении значения на входе RISING вызов при изменении уровня напряжения с низкого (LOW) на высокое(HIGH) FALLING вызов при изменении уровня напряжения с высокого (HIGH) на низкое (LOW)
/* Запускаем серво-машинку по прерыванию */
int ServoPin = 3; //управляющий выход для сервы
int in_4 = 4; // вход для первой кнопки
int in_5 = 5; // вход для второй кнопки
int step = 100; //среднее положение сервы
volatile int state = LOW;
void setup()
{
pinMode(ServoPin, OUTPUT);
pinMode(in_4, INPUT);
pinMode(in_5, INPUT);
attachInterrupt(0, gostep, CHANGE); // привязываем 0-е прерывание к функции gostep
}
void loop()
{
}
void gostep()
{
if(step > 700){step = 700;}
if(step < 600){step = 600;}
digitalWrite(ServoPin, HIGH);
delayMicroseconds(step);
digitalWrite(ServoPin, LOW);
delayMicroseconds(20000-step);
step -= 10;
state = !state; // меняем значение на противоположное
}
Здесь я рассказываю, как управлять сервомотором при помощи компьютера, использующего arduino и Arduino Diecimilia. Не обманывайтесь, здесь почти нет моего кода, я всего лишь собрал для вас информацию.
В этом примере сборки используется программная библиотека сервомотора.
Мерием растояние ультразвуком - Ping Ping — сверхзвуковой дальномер parallaxe. Он может измерять расстояние до объектов, расположенных близко к сенсору до 3м. При работе он испускает сверхзвуковой сигнал, а затем улавливает отраженный от объекта звук (эхо). Печатная плата Arduino посылает короткий импульс, чтобы начать сканирование, затем улавливает импульс на том же самом штырьковом (pin) выводе. Продолжительность этого второго импульса равна времени, потраченному ультразвуком на преодоление пути до объекта и обратно. И при использовании значения скорости звука, данные о полученном сигнале могут быть преобразованы в расстояние.
Метод проектирования схемы:
5V pin вывод PING соединяем с 5V pin на Arduino, соответственно соединяем GDN выводы и SIG(сигнальный) вывод PING соединяем с цифровым pin 7 на Arduino.
Что за особый язык программирования используется для Arduino?
Хочется прояснить ситуацию с так называемым «языком программирования Arduino», который «основан на Wiring». Подобные сочетания слов часто встречаются на страничках, посвященных Arduino. На официальном сайте так и пишут: "...is programmed using the Arduino programming language (based on Wiring)". По факту нет никакого особого языка программирования, и фактически программы пишутся на C/C++, а компилируются и собираются с помощью широко известного avr-gcc.
Использование микрочипа 25LC080 серии eeprom с Arduino
Вот моя работа над регистрирующим устройством для Wii геймпада.
Мне понадобилось устройство для считывания значений с акселерометра геймпада wii. На руках у меня был был микрочип 25LC080 eeprom, вполне подходящий для того, чтобы реализовать нужное мне устрйство на моем Arduino.
Memsic 2125 акселерометр (3D датчик) Memsic 2125 (спецификация: ) — это двуосный акселорометр, способный к измерению ускорения до от -2 до +2 g. У него простой цифровой интерфейс: два штырьковых вывода (один для каждой оси), испускающих импульсы, продолжительность которых соответствует ускорению осей.