Не могу разобраться с фоторезистором.

Тема в разделе "Arduino & Shields", создана пользователем Саня_76, 24 фев 2018.

  1. Саня_76

    Саня_76 Нерд

    Нашел схемку на амперке с фоторезистором и пьезопищалкой, но не могу сделать так чтобы чем меньше падало на фоторезистор света тем сильнее пищалка издавала звук. Помогите плиз а то в ардуино я пока ноль.
    Вот код:
    Код (C++):
    // даём имена для пинов с пьезопищалкой (англ. buzzer) и фото-
    // резистором (англ. Light Dependent Resistor или просто LDR)
    #define BUZZER_PIN  3
    #define LDR_PIN     A0
    void setup()
    {
      // пин с пьезопищалкой — выход...
      pinMode(BUZZER_PIN, OUTPUT);
      // ...а все остальные пины являются входами изначально,
      // всякий раз при подаче питания или сбросе микроконтроллера.
      // Поэтому, на самом деле, нам совершенно необязательно
      // настраивать LDR_PIN в режим входа: он и так им является
    }
    void loop()
    {
      int val, frequency;
      // считываем уровень освещённости так же, как для
      // потенциометра: в виде значения от 0 до 1023.
      val = analogRead(LDR_PIN);
      // рассчитываем частоту звучания пищалки в герцах (ноту),
      // используя функцию проекции (англ. map). Она отображает
      // значение из одного диапазона на другой, строя пропорцию.
      // В нашем случае [0; 1023] -> [3500; 4500]. Так мы получим
      // частоту от 3,5 до 4,5 кГц.
      frequency = map(val, 0, 1023, 3500, 4500);
      // заставляем пин с пищалкой «вибрировать», т.е. звучать
      // (англ. tone) на заданной частоте 20 миллисекунд. При
      // cледующих проходах loop, tone будет вызван снова и снова,
      // и на деле мы услышим непрерывный звук тональностью, которая
      // зависит от количества света, попадающего на фоторезистор
      tone(BUZZER_PIN, frequency, 20);
      }
     
  2. mcureenab

    mcureenab Гуру

    Сделай "обратное" отображение напряжения на A0 в частоту бузера:

    Код (C++):
    frequency = map(val, 0, 1023, 4500, 3500);