0. Начало
1. Цифровой ввод — кнопка
2. Аналоговый вывод — Fading
3. Аналоговый ввод – потенциометр
4. Аналоговый ввод – осциллограф
5. Генерация звука – пьезоизлучатель.
6. Фоторезистор
Переменный резистор можно представить себе, как два последовательно соединённых резистора — т.н. делитель напряжения
но у потенциометра можно соответствующим образом менять их сопротивление.
Таким образом, детали с переменным сопротивлением можно подключать к ардуине по той же простой схеме, что и потенциометр.
Например, фоторезистор.
Фоторезистор — полупроводниковый прибор, изменяющий величину своего сопротивления при облучении светом.
принципиальная схема:
Остаётся только подправить скетч Dimmer_pot
/* * 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-порт.
Далее соответствующая величина устанавливается на PWM-порту digital pin 9, к которому подключен светодиод.
Получается, что яркость свечения светодиода будет зависеть от освещённости фоторезистора 🙂
Уважаемый Zoltberg выдал мне для опытов фоторезисторы RPP131 — от старого проигрывателя пластинок 🙂
В темноте (если закрыть окошечко пальцем 🙂 – сопротивление составляет около 300k, а при освещении – 20k.
Теперь усложним задачу 🙂
Берём второй фоторезистор и теперь попробуем подключить второй канал данных об освещённости.
Выход от второго фоторезистора заведём на Analog Input 1.
Принципиальная схема:
Вот так просто – мы получим простейшее зрение для робота 🙂
Пора это дело запрограммировать 🙂
Очевидный вариант – определять какой фоторезистор засвечен больше 🙂
/* * Photoresistor duo :) * работаем с двумя фоторезисторами * определяем - какой из них засвечен сильнее и зажигаем соответствующий светодиод * если освещённость одинаковая - зажигаем оба. */ int photoPin1 = 0; // первый фоторезистор подключен 0-му аналоговому входу int photoPin2 = 1; // второй фоторезистор int ledPin1 = 12; // первый светодиод подключается к digital pin 12 int ledPin2 = 13; // первый светодиод подключается к digital pin 13 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); }
Раз уж фоторезистор мы подключать умеем – то не должно возникнуть особенных трудностей и с терморезистором
для лучшей чувствительности рекомендуется подключение, называемое резисторный мост.
Например, у меня отыскался старый советский терморезистор 🙂 Однако, в отличие, от фоторезистора – этот пример не так нагляден 🙂
читать далее: 7. Сенсор на светодиоде
Ссылки
Фоторезистор
По теме
Arduino, термины, начало работы
КМБ для начинающих ардуинщиков
Состав стартера (точка входа для начинающих ардуинщиков)
0 комментариев на «“Практическое программирование Arduino/CraftDuino — фоторезистор”»
можно ли отнести фоторезистор от контроллера на 7 метров? какая максимальная длина провода?
Сопротивление фотореза довольно большое, сопротивление провода не внесёт существенной погрешности. Тут от окружающих помех больше проблем может быть, возможно придётся ставить экранированный провод.
Пробовать надо, причём на месте=)
Никогда не использовал Arduino ( и надеюсь никогда не буду), интерисует вопрос — в среде есть дебаг? Можно посмотреть что в переменных, измерить время выполенения функций?
отладчиканету .
PS. вопросы, не относящиеся напрямую к статье, желательно задавать нафоруме
А чем пользуетесь если не секрет?
т.е. если развить эту идею: Вы имеете ввиду, что робот будет двигаться на свет?
Можно реализовать чтоб двигался на\от света.
Либо свеча лазерной указкой на определенные части робота где установлены светофильтры ( для красной лазерной указки красные?) управлять робатом — таки получается световое управление без всяких ик\радио датчиков.
Нашел ошибку во втором скетче с двумя резисторами — Указаны не те порты что в комментариях.
Спасибо, пофиксил!