Как "прочитать" сигнал с мигающего двухцветного светодиода?

Dandan
Dandan аватар
Offline
Зарегистрирован: 01.03.2019

Здравствуйте!

Встречайте нового пользователя чайника) 

Аппарат регирует на воздействие либо одним, либо другим цветом. Стоит задача как поймать - прочитать нужный момент по полярности на проводах идущих к двухцветному светодиоду? 

b707
Offline
Зарегистрирован: 26.05.2017

Dandan пишет:

Аппарат регирует на воздействие либо одним, либо другим цветом. Стоит задача как поймать - прочитать нужный момент по полярности на проводах идущих к двухцветному светодиоду? 

Двухцветный светик совершенно необязательно управляется полярностью. Куда чаще они бывают трехвыводные - либо с общим анодом, либо общим катодом. А еще он может быть RGB или адресным :) - и внешне тоже будет казаться двухцветным :)

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

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

Какой диод и как подключён?

Dandan
Dandan аватар
Offline
Зарегистрирован: 01.03.2019

Если вот так поставить, потом АnalogRead запустить внутри while в течении определенного времени? 

Не понял как цитировать предыдущий пост... Он двухпроводной двухцветный, вроде как меняет цвет при переплюсовке. 

Green
Offline
Зарегистрирован: 01.10.2015

Наиболее просто 2 оптрона. Встречно-параллельно, через резистор. Только не непосредственно к диоду, а до. Т.е., одним концом до токоограничивающего резистора.

svm
Offline
Зарегистрирован: 06.11.2016

Если допустимо соеденить цепи питания устройства и устройства контроля, то достаточно анализировать напряжение на выводах диода.  Для начала нужно знать, что на выводах. Не факт что внутри этого СД два встречно параллельно включенных. Может быть они управляются по какому-то хитрому протоколу.

Green
Offline
Зарегистрирован: 01.10.2015

svm пишет:

Если допустимо соеденить цепи питания устройства и устройства контроля, то достаточно анализировать напряжение на выводах диода.

Напряжение относительно чего?)) 
​Как вариант, средняя точка с помощью 2х резисторов на общий и 2 аналоговых входа через резисторы.

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

Green пишет:

svm пишет:

Если допустимо соеденить цепи питания устройства и устройства контроля, то достаточно анализировать напряжение на выводах диода.

Напряжение относительно чего?)) 

Земли. На одном типа HIGH, на другом LOW - светится и понятно как (смотря где HIGH, а гле LOW). А если на обоих одинаково - не светится.

Green
Offline
Зарегистрирован: 01.10.2015

У светодиода ДВА вывода. Землю Ардуино к чему? Сигнальные к чему?

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

Green пишет:

У светодиода ДВА вывода. Землю Ардуино к чему? Сигнальные к чему?

Ну, два. Заводите их на два пина ардуино и смотрите что там на них. Землю ардуино к земле устройства, в котором работает светодиод, а к чему ещё? Сказано же было, что это решение на случай

svm пишет:

Если допустимо соеденить цепи питания устройства и устройства контроля, то достаточно анализировать напряжение на выводах диода.

В чём проблема-то?

Dandan
Dandan аватар
Offline
Зарегистрирован: 01.03.2019

[quote=Green]

У светодиода ДВА вывода. Землю Ардуино к чему? Сигнальные к чему?

[/quo2te]

Может я ошибаюсь, но думаю что "масса" нужна для сравнения, чтобы ток тек. 

С оптронами хорошая идея.  С резисторами будет работать при изменении полярности, если да то как? 

Пандору свою пытаюсь пинкод подобрать. 

sadman41
Offline
Зарегистрирован: 19.10.2016

А ежели приложить какой-нить ACS712 ? Он же, вроде, показывает как ток течёт - справа налево или слева направо. Правда, чувствительность у него не светодиодная... Но, может, есть аналоги?

Green
Offline
Зарегистрирован: 01.10.2015

ЕвгенийП пишет:

В чём проблема-то?

Да, нормально, согласен.) Я подумал что на светодиоде полярность будет меняться , т.е. плюс с минусом.)
После разъяснений ТС, там просто меняются уровни - высокий/низкий относительно общего.))

Green
Offline
Зарегистрирован: 01.10.2015

Мы по разному видим мир.) Представьте батарейку и светодиод. Как вы будете опряделять какой горит?

Можно и по току, по его направлению. Только громоздко.)

Dandan
Dandan аватар
Offline
Зарегистрирован: 01.03.2019
int Pin1 = 12;
int Pin2 = A1;
unsigned long loopTime = 2700; 
void setup() 
  {
  Serial.begin(9600);
  pinMode(Pin1,OUTPUT);
  pinMode(Pin2,INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
  }
void loop() 
 {
 int a, b, c, d, i; 
 for(int a=0;a<10;a++)
 {
  for(int b=0;b<10;b++)
  {
    for(int c=0;c<10;c++)
    {
      for(int d=0;d<10;d++)
      {
        if(a==0){
          for(int i=0;i<=10;i++)  
          { 
          digitalWrite(Pin1, HIGH);
          digitalWrite(LED_BUILTIN, HIGH);
          delay(200); 
          digitalWrite(Pin1, LOW);                      
          digitalWrite(LED_BUILTIN, LOW);    
          delay(200);
          }
        delay(2500);}
          else{
        for(int i=1;i<=a;i++)
        {
          if(i<=a){
          digitalWrite(Pin1, HIGH);
          digitalWrite(LED_BUILTIN, HIGH);
          delay(200); 
          digitalWrite(Pin1, LOW);                      
          digitalWrite(LED_BUILTIN, LOW);    
          delay(200);}
          else{
          digitalWrite(Pin1, LOW);
          digitalWrite(LED_BUILTIN,LOW);}
        } 
          delay(2500);}
                if(b==0){
          for(int i=1;i<=10;i++)  
          { 
          digitalWrite(Pin1, HIGH);
          digitalWrite(LED_BUILTIN, HIGH);
          delay(200); 
          digitalWrite(Pin1, LOW);                      
          digitalWrite(LED_BUILTIN, LOW);    
          delay(200);
          }       
                delay(2500);}
          else{
        for(int i=0;i<=b;i++)
        {
          if(i<=b){
          digitalWrite(Pin1, HIGH);
          digitalWrite(LED_BUILTIN, HIGH);
          delay(200); 
          digitalWrite(Pin1, LOW);                      
          digitalWrite(LED_BUILTIN, LOW);    
          delay(200);}
          else{
          digitalWrite(Pin1, LOW);
          digitalWrite(LED_BUILTIN,LOW);}
        } 
          delay(2500);}
                if(c==0){
          for(int i=1;i<=10;i++)  
          { 
          digitalWrite(Pin1, HIGH);
          digitalWrite(LED_BUILTIN, HIGH);
          delay(200); 
          digitalWrite(Pin1, LOW);                      
          digitalWrite(LED_BUILTIN, LOW);    
          delay(200);
          }    
                delay(2500);}
          else{
        for(int i=1;i<=c;i++)
        {
          if(i<=c){
          digitalWrite(Pin1, HIGH);
          digitalWrite(LED_BUILTIN, HIGH);
          delay(200); 
          digitalWrite(Pin1, LOW);                      
          digitalWrite(LED_BUILTIN, LOW);    
          delay(200);}
          else{
          digitalWrite(Pin1, LOW);
          digitalWrite(LED_BUILTIN,LOW);}
        }
          delay(2500);}
          if(d==0){
          for(int i=1;i<=10;i++)  
          { 
          digitalWrite(Pin1, HIGH);
          digitalWrite(LED_BUILTIN, HIGH);
          delay(200); 
          digitalWrite(Pin1, LOW);                      
          digitalWrite(LED_BUILTIN, LOW);    
          delay(200);
          }
          delay(2500);}
          else
          {
         for(int i=1;i<=d;i++)
         {
          if(i<=d){
          digitalWrite(Pin1, HIGH);
          digitalWrite(LED_BUILTIN, HIGH);
          delay(200); 
          digitalWrite(Pin1, LOW);                      
          digitalWrite(LED_BUILTIN, LOW);    
          delay(200);}
          else{
          digitalWrite(Pin1, LOW);
          digitalWrite(LED_BUILTIN,LOW);}
        } 
          }
        Serial.print(a);
        Serial.print(b);
        Serial.print(c);
        Serial.print(d);
        Serial.println("");
          unsigned long currentMillis = millis();
  while (millis()-currentMillis<loopTime)
  {
  int Val = analogRead(A1);
  if (Val>400){                      // здесь буду отбирать сигнал, пока 400 просто посто так поставил.     
  Serial.print("Bingo!!!!!"); Serial.println(""); break;
  }
    }
  }
      }
    }
   }
  }
 

Сработает по картинке сверху как я нарисовал с двумя диодами или нет? 

Dandan
Dandan аватар
Offline
Зарегистрирован: 01.03.2019

ACS712 очень интересно. Спасибо большое за полезую информацию. 

svm
Offline
Зарегистрирован: 06.11.2016

Диоды там абсолютно не нужны. Если устройство питается от 5 вольт, то просто заведите выводы светодиода на  два  пина ардуино, и анализируйте их состояние. Возможно даже не на аналоговые, а на цифровые. Если напряжение питания отличается (больше) 5 вольт, придется ставить делители. А если возможны только два состояния светодиодов - горит красный или зеленый и никаких других вариантов, то достаточно  следить только за одним.

Dandan
Dandan аватар
Offline
Зарегистрирован: 01.03.2019

svm пишет:

Диоды там абсолютно не нужны. Если устройство питается от 5 вольт, то просто заведите выводы светодиода на  два  пина ардуино, и анализируйте их состояние. Возможно даже не на аналоговые, а на цифровые. Если напряжение питания отличается (больше) 5 вольт, придется ставить делители. А если возможны только два состояния светодиодов - горит красный или зеленый и никаких других вариантов, то достаточно  следить только за одним.

А как она без массы будет считываться? Это если пальчиковую батарейки типа ААА плюсом подсоединю к цифровому пину, а минусовой ни к чему, то получится считать напряжение , ток и направление последнего? ) может не понимаю, объясните пожалуйста. 

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

Dandan пишет:

А как она без массы будет считываться? 

Вы посты читаете?

Вам уже раза три писали: "землю ардуины, соединить с землёй устройства в котором стоит свтодиод".

Dandan
Dandan аватар
Offline
Зарегистрирован: 01.03.2019

ЕвгенийП пишет:

Dandan пишет:

А как она без массы будет считываться? 

Вы посты читаете?

Вам уже раза три писали: "землю ардуины, соединить с землёй устройства в котором стоит свтодиод".

 Понял ЕвгенийП, спасибо! Терпения вам и здоровья! 

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

Спасибо