Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:aruno:exp12 [2020/06/08 09:37] alexnikproducts:aruno:exp12 [2020/06/08 17:45] (текущий) alexnik
Строка 8: Строка 8:
 //Рисунок 1. Электрическая принципиальная схема эксперимента// //Рисунок 1. Электрическая принципиальная схема эксперимента//
  
-Схема представляет собой обычный резисторный делитель напряжения, который мы [[products:laboratory_iot:exp14|рассматривали ранее]]. В верхнем плече делителя находится фоторезистор, а в нижнем постоянный резистор на 10 кОм. Когда фоторезистор находится в темноте он обладает большим сопротивлением, и ток через него маленький. Поэтому напряжение на средней точке делителя маленькое. Когда освещенность фоторезистора увеличивается, его сопротивление уменьшается, а ток через него растет. Фоторезистор "подтягивает" среднюю точку к напряжению питания и напряжение на средней точке увеличивается. Напряжение средней точки делителя мы измеряем с помощью АЦП.+Схема представляет собой обычный резисторный делитель напряжения, который мы [[products:aruno:exp8|рассматривали ранее]]. В верхнем плече делителя находится фоторезистор, а в нижнем постоянный резистор на 10 кОм. Когда фоторезистор находится в темноте он обладает большим сопротивлением, и ток через него маленький. Поэтому напряжение на средней точке делителя маленькое. Когда освещенность фоторезистора увеличивается, его сопротивление уменьшается, а ток через него растет. Фоторезистор "подтягивает" среднюю точку к напряжению питания и напряжение на средней точке увеличивается. Напряжение средней точки делителя мы измеряем с помощью АЦП.
  
 {{ :products:ardu:exp12.png?direct&600 |}} {{ :products:ardu:exp12.png?direct&600 |}}
Строка 16: Строка 16:
 <file cpp Exp12[enable_line_numbers="2", start_line_numbers_at="1"]> <file cpp Exp12[enable_line_numbers="2", start_line_numbers_at="1"]>
 const int NbrLEDs = 5; const int NbrLEDs = 5;
-const int ledPins[] = {2, 3, 4, 5, 6};+const int ledPins[] = {2, 3, 4, 5, 6};//массив с номерами пинов контроллера
 const int photocellPin = A0; const int photocellPin = A0;
-int sensorValue = 0; // value read from the sensor +int sensorValue = 0; 
-int ledLevel = 0; // sensor value converted into LED 'bars'+int ledLevel = 0; 
  
 void setup() { void setup() {
 +    //настраиваем пины контроллера на вывод сигнала с помощью цикла
     for (int led = 0; led < NbrLEDs; led++) {     for (int led = 0; led < NbrLEDs; led++) {
-      pinMode(ledPins[led], OUTPUT);// make all the LED pins outputs+      pinMode(ledPins[led], OUTPUT);
      }      }
  }  }
  
 void loop() { void loop() {
-   sensorValue = analogRead(photocellPin); +   sensorValue = analogRead(photocellPin);  
-   ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs); // map to the number of LEDs+   ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs);
    for (int led = 0; led < NbrLEDs; led++) {    for (int led = 0; led < NbrLEDs; led++) {
      if (led < ledLevel ) {      if (led < ledLevel ) {
Строка 41: Строка 42:
 </file> </file>
  
-В программе мы создаем объект АЦП и в бесконечном цикле считываем результат преобразования, который выводим в терминал. +В программе используем **массив** для хранения номеров пинов контроллера к которым подключены светодиоды. 
 +Считываем значение сигнала и с помощью оператора **map** преобразуем в количество светодиодов которые будем зажигать в цикле
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-  * Если постоянный резистор и фоторезистор поменять местамито поведение схемы изменитсяКак?+  * Попробуйте увеличить количество светодиодов.  
 +  * Поменяйте фоторезистор на переменный резистор.
 </WRAP> </WRAP>