Афторегулятор яркости дисплей

fastoma
fastoma аватар
Offline
Зарегистрирован: 27.07.2017

Светодиодный цифровой дисплей подключенный к ардуино через чип MAK7219.

Так же к ардуино подпаял делитель напряжения используя сопротивления 10к и фото резистор.

Программно не получается соединить значения яркости и переменную (intensity) и (i)

 
  #include "LedControl.h"

  int intensity = i; //яркость дисплея
  int sensePin =0;  //подключения фото резистора

  LedControl lc=LedControl(12,11,10,1);
 
    //Контакт SCL на RTC-модуле – к контакту A5 на Arduino
    //Контакт SDA – к контакту A4
    //Контакт VCC – к контакту 5V
    //Контакт GND – к контакту GND

    
void setIntensivity() { //фото резистор
  int val = analogRead(sensePin);
  val = constrain(val, 40, 900);
  int i = map(val, 40, 900, 5, 1); //Переменая яркости
}

  void setup() {
    
    lc.shutdown(0,false);  //вкл max72xx
    lc.setIntensity(0,intensity);  //яркость дисплея(сигмента)
    lc.clearDisplay(0);    // очистка дисплея
  }
 
  void loop() {
    //значения на дисплея 012345
    lc.setDigit(0,5,0,true);
    lc.setDigit(0,4,1,true);
    lc.setDigit(0,3,2,true);
    lc.setDigit(0,2,3,true);
    lc.setDigit(0,1,4,true);
    lc.setDigit(0,0,5,true);

    setIntensivity();   
  }

Подскажите как это соединить яркость дисплея и ото резистор?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
fastoma
fastoma аватар
Offline
Зарегистрирован: 27.07.2017
#include "LedControl.h"

  int intensity = i; //яркость дисплея
  int sensePin =0;  //подключения фото резистора

  LedControl lc=LedControl(12,11,10,1);
 
    //Контакт SCL на RTC-модуле – к контакту A5 на Arduino
    //Контакт SDA – к контакту A4
    //Контакт VCC – к контакту 5V
    //Контакт GND – к контакту GND

    
void setIntensivity() { //фото резистор
  int val = analogRead(sensePin);
  val = constrain(val, 40, 900);
  int i = map(val, 40, 900, 5, 1); //Переменая яркости
}

  void setup() {
    
    lc.shutdown(0,false);  //вкл max72xx
    lc.setIntensity(0,intensity);  //яркость дисплея(сигмента)
    lc.clearDisplay(0);    // очистка дисплея
  }
 
  void loop() {
    //значения на дисплея 012345
    lc.setDigit(0,5,0,true);
    lc.setDigit(0,4,1,true);
    lc.setDigit(0,3,2,true);
    lc.setDigit(0,2,3,true);
    lc.setDigit(0,1,4,true);
    lc.setDigit(0,0,5,true);

    setIntensivity();   
  }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы там специально выключили нумерацию строк? По умолчанию она включена, а у Вас нет.

Хотите нормального разговора, выложите, наконец нормально - с номерами.

Пока же объясните, что такое Вы делаете в строке №ХЗ (int i = map(val, 40, 900, 5, 1);) Чему эта самая Ваша переменная собирается быть равной. Яркость в 7219 - это чмсло от 0 до 15, если что. 

Поправьте вычисление яркости, поставьте печать в Сериал и убедитесь, что она считается правильно.

fastoma
fastoma аватар
Offline
Зарегистрирован: 27.07.2017

 #include "LedControl.h"

  int intensity = i; //яркость дисплея
  int sensePin =0;  //подключения фото резистора

  LedControl lc=LedControl(12,11,10,1);
 
    //Контакт SCL на RTC-модуле – к контакту A5 на Arduino
    //Контакт SDA – к контакту A4
    //Контакт VCC – к контакту 5V
    //Контакт GND – к контакту GND

    
void setIntensivity() { //фото резистор
  int val = analogRead(sensePin);
  val = constrain(val, 40, 900);
  int i = map(val, 40, 900, 5, 1); //Переменая яркости
}

  void setup() {
    
    lc.shutdown(0,false);  //вкл max72xx
    lc.setIntensity(0,intensity);  //яркость дисплея(сигмента)
    lc.clearDisplay(0);    // очистка дисплея
  }
 
  void loop() {
    //значения на дисплея 012345
    lc.setDigit(0,5,0,true);
    lc.setDigit(0,4,1,true);
    lc.setDigit(0,3,2,true);
    lc.setDigit(0,2,3,true);
    lc.setDigit(0,1,4,true);
    lc.setDigit(0,0,5,true);

    setIntensivity();   
  }

Яркость в 7219 - это число от 0 до 15 я об этом знаю. Тут всё понятно и просто яркость регулируется от 1-5 в зависимости от освещения 40-900. Проблема вот в чем выдает ошибку

Chasi_6.ino:4: error: 'i' was not declared in this scope

exit status 1
'i' was not declared in this scope

подскажите какой использовать Констант или Типы данных.  Или вообще по другому сделать.

strarbit
Offline
Зарегистрирован: 12.06.2016

На эту ругается int intensity = i; //яркость дисплея

fastoma
fastoma аватар
Offline
Зарегистрирован: 27.07.2017

да

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/*
  //Контакт SCL на RTC-модуле – к контакту A5 на Arduino
  //Контакт SDA – к контакту A4
  //Контакт VCC – к контакту 5V
  //Контакт GND – к контакту GND
*/
#include "LedControl.h"
LedControl lc = LedControl(/*dataPin*/12,/*clkPin*/ 11,/*csPin*/ 10,/*кол-во устройств*/ 1);
void setIntensivity() { //фото резистор
  static int intensity = 0;
  int val = analogRead(/*пин фотодиода*/A0);
  val = constrain(val, 40, 900);
  intensity = map(val, 40, 900, 5, 1); //Переменая яркости
  lc.setIntensity(0, intensity);
}
//--------------main()--------------------------------
void setup() {
  lc.shutdown(0, false); //вкл max72xx
  setIntensivity();
  lc.clearDisplay(0);    // очистка дисплея
}
void loop() {
  //значения на дисплея 012345
  lc.setDigit(0, 5, 0, true);
  lc.setDigit(0, 4, 1, true);
  lc.setDigit(0, 3, 2, true);
  lc.setDigit(0, 2, 3, true);
  lc.setDigit(0, 1, 4, true);
  lc.setDigit(0, 0, 5, true);
  setIntensivity();
}
/*Скетч использует 2060 байт (6%) памяти устройства. Всего доступно 32256 байт.
  Глобальные переменные используют 227 байт (11%) динамической памяти, оставляя 1821 байт для локальных переменных. Максимум: 2048 байт.
*/

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

fastoma пишет:
Проблема вот в чем выдает ошибку

А с какой целью строка 3 вообще написана? Что она должна делать? Если Вы думаете, что она устанавливает взаимосвязь между двумя переменными на всю оставшуюся жизнь, то так нет.

Эта строка бессмысленна.

Вы вообще можете менять яркость (без датчкиа просто менять). Напишите это.

fastoma
fastoma аватар
Offline
Зарегистрирован: 27.07.2017

Всё спасибо qwone получилось!

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я заметил, что любые попытки научить новичка, натолкнуть его на мысль, которая поможет самостоятельно найти решение своего вопроса, разбиваются о Квона, который просто дает новичку решение.

Квон, ты просто дитё малое и это вредничание, или думаешь, что ты помогаешь таким образом? Помогаешь новичку оставаться дураком?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да, ладно, ну нравится человеку быть богом, а другим нравится оставаться невеждами - и пусть себе. Каждому своё.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

wdrakula пишет:
Я заметил, что любые попытки научить новичка, натолкнуть его на мысль, которая поможет самостоятельно найти решение своего вопроса, разбиваются о Квона, который просто дает новичку решение.
Если человек в течении нескольких дней не смог написать вменяемый свой код, то он уже не напишет. Можно банально не напрягаться учить его. А так получит код и пойдет искать новую для себя проблему. Или вы так и не заметили это. Я тоже пытался натаскивать, но понял бесполезно.