Эксперимент № 14. ИК пульт дистанционного управления

/**
 * (C) jarduino.ru
 * 
 * Эксперимент № 14. ИК пульт дистанционного управления
 *
 * Эксперименты с ардуино.
 * Управление arduino с помощью ИК пульта ДУ
 */
#include <IRremote.h> // подключаем библиотеку для ИК приемника

// Константы программы
const int irPin = A0; // аналоговый порт для ИК приемника
const int ledPin = 13; // порт для светодиода

// Глобальные переменные
bool ledState = false;

IRrecv irRec(irPin); // Инициализируем объект ИК приемника
decode_results irData; // переменная для получения данных от ИК приемника

void setup()
{
	Serial.begin(9600); // Иницилизация последовательного порта, для вывода отладочной информации

	irRec.enableIRIn(); // запускаем прием инфракрасного сигнала

	pinMode(ledPin, OUTPUT);
}


void loop()
{
	if (irRec.decode(&amp;irData)) // Получение данных с ИК приемник
	{
		// Данные пришли - анализируем, выполняем команды с пульта:
		Serial.println(irData.value); // выводим полученные данные на порт

		if (irData.value == 16738455) // соответветствует цифре 1 на пульте
		{
			ledState = !ledState; // переключить состояние светодиода
			digitalWrite(ledPin, ledState); // обновить состояние светодиода
		}

		irRec.resume(); // принимаем следующий сигнал на ИК приемнике
	}

	delay(100); // небольшая пауза, 0,1 сек.
}

Скетч. Эксперимент №13. Сенсор вибраций

/**
 * (C) jarduino.ru
 * Эксперимент № 13. Сенсор вибраций. Title switch sensor. 
 *
 * Эксперименты с ардуино.
 */

const int tiltPin = 5;
const int ledPin = 8;

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

void loop()
{
	if (analogRead(tiltPin) > 512) // Если напряжение на пине сенсора больше чем 512 единиц(т.е. 2,5V) ...
	{
		digitalWrite(ledPin, LOW); // включить светодиод
	}
	else // Иначе ...
	{
		digitalWrite(ledPin, HIGH); // вылючить светодиод
	}
}

Скетч. Эксперимент №12. Датчик температуры LM35

/**
 * Эксперимент № 12. Датчик температуры LM35
 * Простейший цифровой термометр.

 * Изучение ардуино через опыты.
 */

void setup()
{
	Serial.begin(9600); // Инициализация последовательно порта
}

void loop()
{
	const int val = analogRead(0); // Прочесть текущее значение температуры
	const int dat = (125 * val) >> 8; // Перевести полученное значение в градусы

	// Вывести температуру в последовательный порт:
	Serial.print("Tep:");
	Serial.print(dat);
	Serial.println("C");

	delay(500); // Задержка в 0,5 секунды
}

Скетч. Эксперимент № 11. Датчик огня. Пожарная сигнализация.

/**
 * Эксперимент № 11. Датчик огня
 * Изучение ардуино через опыты.
 *
 * Пожарная сигнализация на базе ардуино и датчика огня
 */

const int pinFlame = 0; // Аналоговый пин для подключения датчика огня
const int pinBuzzer = 9; // Цифровой пин для подключенния зуммера

void setup()
{
	Serial.begin(9600); // Инициализировать последовательный порт

	// Инициализировать порты ввода-вывода:
	pinMode(pinBuzzer, OUTPUT);
	pinMode(pinFlame, INPUT);
}

void loop()
{
	const int flameVal = analogRead(pinFlame); // Считать показания с датчика огня

	Serial.println(flameVal); // Вывести проказания в последовательный порт

	if (flameVal >= 600) // Пусть 600 - это критический уровень показаний с датчика огня
	{
		// Подать сигнал при достижении критического уровня
		digitalWrite(pinBuzzer, HIGH);
	}
	else
	{
		// Отключить сигнал при падении уровня ниже критического
		digitalWrite(pinBuzzer, LOW);
	}

	delay(500);
}

Скетч. Опыт №10. Фоторезистор

/**
 * Эксперимент № 10. Фоторезистор.
 * Изучение ардуино через опыты.
 * 
 * Управление подсветкой в зависимости от освещенности, с помощью фоторезистора.
 */
const int pinPot = 0; // Аналоговый пин, к которому подключен фоторизстор
const int pinLed = 11; // Цифровой пин с ШИМ, к которому подключен светодиод

void setup()
{
	pinMode(pinLed,OUTPUT);
	Serial.begin(9600);
}

void loop()
{
	const int val = analogRead(pinPot); // Считываем значение с порта фоторзистора

	Serial.println(val); // Выводим значение в последовательный порт

	analogWrite(pinLed, val / 4); // Устанавливаем яркость светодиод в соответствии с полученным значением от фоторезистора

	delay(10); // Небольшая пауза, в 0,1 сек.
}

Скетч. Эксперимент № 9. RGB светодиод

/**
 * (C) jarduino.ru 2019
 * Изучение ардуино через опыты.
 *
 * Эксперимент № 9. Полноцветный светодиод.
 */

// Глобальные переменные
// Привязка контактов к портам платы:
int pinRed = 11; // пин для красного контакта
int pinBlue = 10; //  пин для синего контакта
int pinGreen = 9; //  пин для зеленого контакта


void setup()
{
	pinMode(pinRed, OUTPUT);
	pinMode(pinBlue, OUTPUT);
	pinMode(pinGreen, OUTPUT);

	Serial.begin(9600);
}

void loop()
{
	int val;

	for (val = 255; val > 0; val--)
	{
		analogWrite(pinRed, val);
		analogWrite(pinBlue, 255 - val);
		analogWrite(pinGreen, 128 - val);

		delay(1);
	}

	for (val = 0; val < 255; val++)
	{
		analogWrite(pinRed, val);
		analogWrite(pinBlue, 255 - val);
		analogWrite(pinGreen, 128 - val);
		delay(1);
	}

	Serial.println(val, DEC);
}


Скетч. Эксперимент №8. Пассивный зуммер

/**
 * (C) jarduino.ru 2019
 * Изучение ардуино через опыты.
 *
 * Эксперимент №8. Пассивный зуммер
 * Извлекаем звуки различной высоты.
 */

int pibBuzzer = 8; // пин для подключения зуммера

void setup()
{
	pinMode(pibBuzzer, OUTPUT); // включаем пин зуммера на вывод
}

void loop()
{
	byte i;

	// воспроизвести звук
	for (i = 0; i < 100; i++)
	{
		digitalWrite(pibBuzzer, HIGH); // включить звук
		delay(1); // задержка в 1 мсек.
		digitalWrite(pibBuzzer, LOW); // выключить звук
		delay(1); // задержка в 1 мсек.
	}

	// Частота звука зависит от продолжительности задержки при включении и выклюении питания зуммера
	// аналогичный цикл, но с частотой в 2 раза меньше:
	for (i = 0; i < 50; i++)
	{
		digitalWrite(pibBuzzer, HIGH);
		delay(2);
		digitalWrite(pibBuzzer, LOW);
		delay(2);
	}
}

Скетч. Эксперимент №7. Активный зуммер

/**
 * (C) jarduino.ru 2019
 * Изучение ардуино через опыты.
 *
 * Эксперимент №7. Активный зуммер
 */

int pinBuzzer = 8; // Пин для подключения зуммера.

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

void loop()
{
	digitalWrite(pinBuzzer, HIGH); // Подать на пин зуммера напряжение, вклюить зуммер.
}

Скетч. Светодиод, управляемый кнопкой.

/**
 * (C) jarduino.ru 2019
 * Изучение ардуино через опыты.
 *
 * Эксперимент №6. Светодиод, управляемый кнопкой.
 * Светодиод горит, если кнопка нажата.
 */

int pinLed = 11; // Порт для подключения светодиода
int pinBtn = 7; // Порт для подключения кнопки

void setup()
{
	pinMode(pinLed, OUTPUT); // Порт светодиода включить на вывод
	pinMode(pinBtn, INPUT); // Порт кнопки включить на ввод
}

void loop()
{
	int btnVal; // переменная для чтения занчения с кнопки
	btnVal = digitalRead(pinBtn); // считать значение с пина кнопки

	if (btnVal == LOW) // Проверить, нажата ли кнопка
	{
		digitalWrite(pinLed, LOW); // Кнопка не нажата - выключить светодиод
	}
	else
	{
		digitalWrite(pinLed, HIGH); // Кнопка нажата - включить светодиод
	}
}