мигаем 0 и 1

laser
Offline
Зарегистрирован: 20.02.2014

Добрый день.

Играясь со светодиодом столкнулся с такой проблемой:

Есть массив из 0 и 1, и хочу заставить светодиод мигать в зависимости от значения элемента массива:

int ledPin=9;
void setup(){
  pinMode(ledPin,OUTPUT);
}
void loop(){
  int i;
  int binOUT[3]={
    1,0,1  };
  for (i=0; i<3; i++){
    if (binOUT[i]=1) {
      digitalWrite(ledPin, HIGH);
      delay(1000);
      digitalWrite(ledPin, LOW);
      delay(1000);
    }
    else{    
      digitalWrite(ledPin, LOW); 
      delay(1000);   
      digitalWrite(ledPin, HIGH);
      delay(300);
    }
  }
}

В результате диод просто мигает секунду через секунду.

maksim
Offline
Зарегистрирован: 12.02.2012
    if (binOUT[i]=1) {
laser
Offline
Зарегистрирован: 20.02.2014

это я уже заметил и исправил

проблема в другом: если 0, то лампочка должна гореть 0.3сек, а у меня она горит 1сек, поэтому складывается ощущение, что на else  программа не переходит

maksim
Offline
Зарегистрирован: 12.02.2012

Она у вас горит 1.3 секунды.

laser
Offline
Зарегистрирован: 20.02.2014

int binOUT[3]={1,0,1};
  for (i=0; i<3; i++){
    if (binOUT[i]==1) {
      digitalWrite(ledPin, HIGH);
      delay(1000);
      digitalWrite(ledPin, LOW);
      delay(1000);
    }
    else{    
      digitalWrite(ledPin, LOW); 
      delay(1000);   
      digitalWrite(ledPin, HIGH);
      delayMicroseconds(3000);
    }
}

выставил вместо 0.3сек - 3сек, но лампочка мигает по 1сек

maksim
Offline
Зарегистрирован: 12.02.2012

Либо вы не различаете 1 и 3 секунды, либо смотрите не на ту лампочку, либо заливаете не тот код...

int ledPin = 13;
void setup(){
  pinMode(ledPin,OUTPUT);
}
void loop(){
  int i;
  int binOUT[3] = {1, 0, 1};
  for (i = 0; i < 3; i++){
    if (binOUT[i] == 1) {
      digitalWrite(ledPin, HIGH);
      delay(1000);
      digitalWrite(ledPin, LOW);
      delay(1000);
    }
    else{    
      digitalWrite(ledPin, LOW); 
      delay(1000);   
      digitalWrite(ledPin, HIGH);
      delay(5000);
    }
  }
}

Смотреть на 13 светодиод.

laser
Offline
Зарегистрирован: 20.02.2014

на 13 всё нормально, но у меня подключен внешний диод на 9 пин

maksim
Offline
Зарегистрирован: 12.02.2012

И?

Ну могу предположить что светодиод у вас подключен "неправильно", то есть инвертирован: анод к +5V, а катод к 9 выводу. Но вам не кажется, что о таких нюансах может быть известно только вам и никому больше...

laser
Offline
Зарегистрирован: 20.02.2014

сейчас попробовал ещё раз всё работает