CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Практическое программирование Arduino/CraftDuino - фоторезистор

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
  • 18 августа 2009, 13:14
  • admin

Комментарии (9)

RSS свернуть / развернуть
+
0
можно ли отнести фоторезистор от контроллера на 7 метров? какая максимальная длина провода?
avatar

olegab

  • 11 апреля 2013, 14:38
+
0
Сопротивление фотореза довольно большое, сопротивление провода не внесёт существенной погрешности. Тут от окружающих помех больше проблем может быть, возможно придётся ставить экранированный провод.
Пробовать надо, причём на месте=)
avatar

Zoltberg

  • 11 апреля 2013, 14:47
+
0
Никогда не использовал Arduino ( и надеюсь никогда не буду), интерисует вопрос — в среде есть дебаг? Можно посмотреть что в переменных, измерить время выполенения функций?
avatar

Nemo

  • 11 апреля 2013, 19:22
+
0
отладчика нету.

PS. вопросы, не относящиеся напрямую к статье, желательно задавать на форуме
avatar

admin

  • 12 апреля 2013, 10:52
+
0
А чем пользуетесь если не секрет?
avatar

anton666

  • 19 августа 2014, 19:48
+
0
Вот так просто – мы получим простейшее зрение для робота :)


т.е. если развить эту идею: Вы имеете ввиду, что робот будет двигаться на свет?
avatar

miltrix

  • 9 сентября 2015, 17:48
+
0
Можно реализовать чтоб двигался на\от света.
Либо свеча лазерной указкой на определенные части робота где установлены светофильтры ( для красной лазерной указки красные?) управлять робатом — таки получается световое управление без всяких ик\радио датчиков.
avatar

TotCambIKoka

  • 5 апреля 2016, 08:02
+
+1
Нашел ошибку во втором скетче с двумя резисторами — Указаны не те порты что в комментариях.
avatar

TotCambIKoka

  • 5 апреля 2016, 08:04
+
0
Спасибо, пофиксил!
avatar

admin

  • 5 апреля 2016, 12:12

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.