Переменный резистор можно представить себе, как два последовательно соединённых резистора — т.н.
но у потенциометра можно соответствующим образом менять их сопротивление.
Таким образом, детали с переменным сопротивлением можно подключать к ардуине по той же простой схеме, что и .
Например, фоторезистор.
— полупроводниковый прибор, изменяющий величину своего сопротивления при облучении светом.
принципиальная схема:
Остаётся только подправить скетч
/*
* Photoresistor
* тестовый скетч для работы с фоторезистором
*/
int photoPin = 0; // фоторезистор подключен 0-му аналоговому входу
int ledPin = 9; // светодиод подключается к digital pin 9
int val = 0; // переменная для хранения значения входного напряжения
void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(photoPin); // считываем значение с фоторезистора
Serial.println(val);
val = val/4; // конвертируем из 0-1023 к 0-255
analogWrite(ledPin,val); // устанавливаем значение
delay(200);
}
Уровень напряжения, зависящий от освещённости фоторезистора, считывается на аналоговом порту Analog Input 0 и записывается в COM-порт.
Далее соответствующая величина устанавливается на -порту digital pin 9, к которому подключен светодиод.
Получается, что яркость свечения светодиода будет зависеть от освещённости фоторезистора :)
Уважаемый выдал мне для опытов фоторезисторы RPP131 — от старого проигрывателя пластинок :)
В темноте (если закрыть окошечко пальцем :) – сопротивление составляет около 300k, а при освещении – 20k.
Теперь усложним задачу :)
Берём второй фоторезистор и теперь попробуем подключить второй канал данных об освещённости.
Выход от второго фоторезистора заведём на Analog Input 1.
Принципиальная схема:
Вот так просто – мы получим простейшее зрение для робота :)
Пора это дело запрограммировать :)
Очевидный вариант – определять какой фоторезистор засвечен больше :)
/*
* Photoresistor duo :)
* работаем с двумя фоторезисторами
* определяем - какой из них засвечен сильнее и зажигаем соответствующий светодиод
* если освещённость одинаковая - зажигаем оба.
*/
int photoPin1 = 0; // первый фоторезистор подключен 0-му аналоговому входу
int photoPin2 = 1; // второй фоторезистор
int ledPin1 = 12; // первый светодиод подключается к digital pin 9
int ledPin2 = 13; // первый светодиод подключается к digital pin 10
int val1 = 0; // переменные для хранения значения входного напряжения
int val2 = 0; //
void setup()
{
Serial.begin(9600);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
}
void loop()
{
val1 = analogRead(photoPin1); // считываем значение с фоторезисторов
val2 = analogRead(photoPin2);
Serial.print("values: "); // выводим их в COM-порт
Serial.print(val1);
Serial.print(" : ");
Serial.println(val2);
val1 = val1/4; // конвертируем из 0-1023 к 0-255
val2 = val2/4; //
if(val1==val2) // если равны - зажигаем оба светодиода
{
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
Serial.println("forward");
}
else
{
if(val1>val2) // если освещённость одного больше - зажигаем
{ // соответствующий светодиод, а второй гасим
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
Serial.println("left");
}
else
{
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin1, LOW);
Serial.println("right");
}
}
delay(200);
}
Раз уж фоторезистор мы подключать умеем – то не должно возникнуть особенных трудностей и с
для лучшей чувствительности рекомендуется подключение, называемое резисторный мост.
Например, у меня отыскался старый советский терморезистор :) Однако, в отличие, от фоторезистора – этот пример не так нагляден :)
Комментарии (0)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.