Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
products:aruno:exp12 [2020/06/01 20:02] – создано alexnikproducts:aruno:exp12 [2020/06/08 17:45] (текущий) alexnik
Строка 1: Строка 1:
-===== Эксперимент 18. Люксметр ===== +===== Эксперимент 12. Люксметр ===== 
  
 Люксметр (от лат. lux — «свет» и др.-греч. μετρέω «измеряю») — прибор для измерения освещённости, один из видов фотометров. В состав люксметра обязательно входит фоточувствительный элемент, например, изученный нами, фоторезистор. Построим простой люксметр на базе фоторезистора. Настоящий люксметр показывает результаты измерения в [[https://ru.wikipedia.org/wiki/%D0%9B%D1%8E%D0%BA%D1%81|люксах]], но в нашем эксперименте мы ограничимся условными единицами — результатом преобразования АЦП, которое и будем выводить в терминал пользователю. Люксметр (от лат. lux — «свет» и др.-греч. μετρέω «измеряю») — прибор для измерения освещённости, один из видов фотометров. В состав люксметра обязательно входит фоточувствительный элемент, например, изученный нами, фоторезистор. Построим простой люксметр на базе фоторезистора. Настоящий люксметр показывает результаты измерения в [[https://ru.wikipedia.org/wiki/%D0%9B%D1%8E%D0%BA%D1%81|люксах]], но в нашем эксперименте мы ограничимся условными единицами — результатом преобразования АЦП, которое и будем выводить в терминал пользователю.
  
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
 +{{ :products:ardu:exp12_sch.png?nolink |}}
  
-{{ :products:esp-iot:exp7.5_sch.png?nolink |}} 
 //Рисунок 1. Электрическая принципиальная схема эксперимента// //Рисунок 1. Электрическая принципиальная схема эксперимента//
  
-Схема представляет собой обычный резисторный делитель напряжения, который мы [[products:laboratory_iot:exp14|рассматривали ранее]]. В верхнем плече делителя находится фоторезистор, а в нижнем постоянный резистор на 10 кОм. Когда фоторезистор находится в темноте он обладает большим сопротивлением, и ток через него маленький. Поэтому напряжение на средней точке делителя маленькое. Когда освещенность фоторезистора увеличивается, его сопротивление уменьшается, а ток через него растет. Фоторезистор "подтягивает" среднюю точку к напряжению питания и напряжение на средней точке увеличивается. Напряжение средней точки делителя мы измеряем с помощью АЦП.+Схема представляет собой обычный резисторный делитель напряжения, который мы [[products:aruno:exp8|рассматривали ранее]]. В верхнем плече делителя находится фоторезистор, а в нижнем постоянный резистор на 10 кОм. Когда фоторезистор находится в темноте он обладает большим сопротивлением, и ток через него маленький. Поэтому напряжение на средней точке делителя маленькое. Когда освещенность фоторезистора увеличивается, его сопротивление уменьшается, а ток через него растет. Фоторезистор "подтягивает" среднюю точку к напряжению питания и напряжение на средней точке увеличивается. Напряжение средней точки делителя мы измеряем с помощью АЦП.
  
-{{ :products:esp-iot:exp7.5.png?direct&600 |}}+{{ :products:ardu:exp12.png?direct&600 |}}
 //Рисунок 2. Монтажная схема эксперимента// //Рисунок 2. Монтажная схема эксперимента//
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
-<file python Exp18.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<file cpp Exp12[enable_line_numbers="2", start_line_numbers_at="1"]> 
-from machine import Pin +const int NbrLEDs = 5; 
-import time +const int ledPins[] = {2, 3, 4, 5, 6};//массив с номерами пинов контроллера 
-_init() +const int photocellPin = A0; 
-  +int sensorValue = 0; 
-adc = machine.ADC(0) +int ledLevel = 0;  
-  + 
-while True: +void setup() { 
-    value adc.read() +    //настраиваем пины контроллера на вывод сигнала с помощью цикла 
-    print(value+    for (int led = 0; led < NbrLEDs; led++{ 
-    time.sleep(1)+      pinMode(ledPins[led], OUTPUT); 
 +     } 
 + 
 + 
 +void loop() { 
 +   sensorValue analogRead(photocellPin) 
 +   ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs); 
 +   for (int led = 0; led < NbrLEDs; led++
 +     if (led < ledLevel ) { 
 +       digitalWrite(ledPins[led], HIGH); // turn on pins less than the level 
 +      } 
 +     else { 
 +       digitalWrite(ledPins[led],LOW); // turn off pins higher than 
 +      } 
 +     } 
 + }
 </file> </file>
  
-В программе мы создаем объект АЦП и в бесконечном цикле считываем результат преобразования, который выводим в терминал. +В программе используем **массив** для хранения номеров пинов контроллера к которым подключены светодиоды. 
 +Считываем значение сигнала и с помощью оператора **map** преобразуем в количество светодиодов которые будем зажигать в цикле
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-  * Если постоянный резистор и фоторезистор поменять местамито поведение схемы изменитсяКак?+  * Попробуйте увеличить количество светодиодов.  
 +  * Поменяйте фоторезистор на переменный резистор.
 </WRAP> </WRAP>