Практическое программирование 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 комментариев на «“Практическое программирование Arduino/CraftDuino — фоторезистор”»

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

  1. Никогда не использовал Arduino ( и надеюсь никогда не буду), интерисует вопрос — в среде есть дебаг? Можно посмотреть что в переменных, измерить время выполенения функций?

  2. Вот так просто – мы получим простейшее зрение для робота 🙂

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

    • Можно реализовать чтоб двигался на\от света.
      Либо свеча лазерной указкой на определенные части робота где установлены светофильтры ( для красной лазерной указки красные?) управлять робатом — таки получается световое управление без всяких ик\радио датчиков.

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение