Скетчи для беспроводного включения светодиода

R164
Offline
Зарегистрирован: 06.05.2012

Добрый день!
Есть два ардуино фио и радиомодули APC 220. При нажатии кнопки на одном должен загореться светодиод на другом.
Подскажите начинающему скетчи для обоих ардуино.
С уважением  Михаил

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

В самом простом случае как то так:

#define BUTTON 2

void setup() {
  Serial.begin(9600);
  digitalWrite(2, 1);
}

void loop() {
    Serial.println(!digitalRead(BUTTON));
    delay(100);
}

 

#define LED 13

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()){
     //digitalWrite(LED, Serial.read()-48); // 1 вариант
     digitalWrite(LED, Serial.read());  // 2 вариант
  }
}

Кнопка должна при нажатии замыкать 2 пин на землю (GND) и так как проверить не на чем попробуйте разные варианты второй код строки 09 и 10.

R164
Offline
Зарегистрирован: 06.05.2012

Спасибо огромное,но не работает.Скажите,чтобы исключить пока радиомодули(вдруг это они не работают), можно соединить Т и R (противоположно)ардуинок проводами ?

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

Можно

RX к ТX  

TX к RX  

GND к GND

R164
Offline
Зарегистрирован: 06.05.2012

 В обоих вариантах Светодиод горит постоянно.  На кнопку не реагирует.Причем только в случае ,если включена ардуина с кнопкой.

Кнопка закорачивает 2 пин на землю.

 

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

 А если так:

#define BUTTON 2

void setup() {
  Serial.begin(9600);
  digitalWrite(2, 1);
}

void loop() {
  if(!digitalRead(BUTTON)){
    Serial.println('1');
  }
  else{
    Serial.println('0');
  }
  delay(100);
}
#define LED 13

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()){
     digitalWrite(LED, Serial.read()-48);
  }
}

 

 

leshak
Offline
Зарегистрирован: 29.09.2011

1. А откройте на компе serial монитор.

(Вторую ардуину можно ввобще не при этом не подключать).

Понажимайте кнопку, убедитесь что в serial монитор 1 меняется на 0.

Так вы будете знать что "кнопка работает".

2. Подключайте вторую дуину, но поменяйте

Serial.println(!digitalRead(BUTTON)); 

на 

Serial.write(!digitalRead(BUTTON));

P.S. Имелся ввиду первый скетч из сообщения 2

R164
Offline
Зарегистрирован: 06.05.2012

В serial монитор  при нажимании кнопки бегущие ноли становятся единицами,при отпускании-опять " 0" побежали..

Поменял-ничего не изменилось.Светодиод горит постоянно. Может, кнопку перетянуть на "минус" через внешний резистор?...

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

Значит отсылает, так что второй пример тоже не работает? Здесь должно происходить тоже самое - нажали кнопку - 1, отпустили - 0:

void setup() {
Serial.begin(9600);
digitalWrite(2, 1);
}

void loop() {
if(!digitalRead(BUTTON)){
Serial.println('1');
}
else{
Serial.println('0');
}
delay(100);
}

А здесь если вы отправите в сериал-монитор 1, то светодиод долже зажечься, если 0 - погаснуть:

#define LED 13

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()){
     digitalWrite(LED, Serial.read()-48);
  }
}

 

R164
Offline
Зарегистрирован: 06.05.2012

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

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

Так а если в сериал-монитор посылать 1 или 0 светодиод загорается и тухнет? 

R164
Offline
Зарегистрирован: 06.05.2012

А как подключиться одновременно и к сериал-монитору и ко второй дуине ? разьем запараллелить ?

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

Нет, подключите к компу только дуину на которой светодиод и попробуйте в сериал-монитор отправить 1 или 0

R164
Offline
Зарегистрирован: 06.05.2012

Понял,спасибо.

Отправляю на сериал 0 и 1, светодид не горит. Стоит только нажать на SEND справа в верхнем углу монитора или ENTER на компе , сразу загорается и уже не гаснет.

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

Последний пример используете? 

R164
Offline
Зарегистрирован: 06.05.2012

Да.Только #define BUTTON 2 добавил в кнопочный скетч .

 

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

Странно у меня все работает. А если так должно возвращаться тоже самое что шлете 0 или 1:

#define LED 13

boolean a = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()){
    a = Serial.read()-48;
     digitalWrite(LED, a);
     Serial.println(a, DEC);
  }
}

 

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

И еще исправьте вот так:

#define BUTTON 2

void setup() {
  Serial.begin(9600);
  digitalWrite(2, 1);
}

void loop() {
  if(!digitalRead(BUTTON)){
    Serial.write('1');
  }
  else{
    Serial.write('0');
  }
  delay(100);
}

 

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

И попробуйте так:

#define LED 13

boolean a = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()){
    a = Serial.read()-48;
    if(a == 0 || a == 1){
      digitalWrite(LED, a);
    }
  }
}

 

R164
Offline
Зарегистрирован: 06.05.2012

Вы знаете , 17 сообщение заработало!Надо отойти , попробую 18 сооб.  и попробую модули и сразу отпишусь.Заодно расскажу, для чего я Вас,братцы, мучил. Пока,СПАСИБО ОГРОМНОЕ !!!

 ...Пришел,извините..

Радиомодули настроил, все работает!!!

Вот посмотрите  , для чего я это все затеваю...

Стартовое оборудование для проведения соревнований.

Кино для ознакомления

http://www.youtube.com/watch?feature=player_embedded&v=y9v4NwVA3Xs

Правила

http://www.youtube.com/watch?feature=player_embedded&v=KK47reiZhqQ

Буду РАД любой Вашей помощи.Магарыч с меня!!Милости прошу на соревнования

E-mail:R164@mail.ru

Скайп: R164R164

тел моб 8(928)9822500 Михаил Манелов , г.Ессентуки

R164
Offline
Зарегистрирован: 06.05.2012

Не сочтите за наглость, как этот скетчи  усовершенствовать на 3 независимые кнопки (пины2,3,4) с независимым зажиганием(время горения-2 сек) светодиодов(появл.сигналов)на пинах 11,12,13 другого ардуино?Поскольку светофоров тоже 3 шт...

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

Поконкретнее сформулируйте чего хотите, а то как-то не очень понятно.

leshak
Offline
Зарегистрирован: 29.09.2011

Предположим нажали первую кнопку, загорелся первый светодиод. Прошла одна секунда. В этот момент нажимают вторую кнопку.

Должен зажечься второй светодиод, или допустимо "пока не погас первый, мы ни на что не реагируем"?

R164
Offline
Зарегистрирован: 06.05.2012

Братцы,извините,только у компа оказался..

Светофор на 3 цвета:кр,жел,зел. На светофоре стоит модуль с ардуиной и реле. Напротив светофора стоят 3 судьи ,ардуинка с модулем на 3  кнопки. У каждого судьи в руке по одной кнопке соотв. цвета . Любой из них независимо друг от друга должен своей кнопкой зажечь только свой цвет(СВЕТ) на светофоре. Зажигание фонарей может происходить одновременно.Время Горения после зажигания--2--3 сек. В правилах работа светофора хорошо видна...

 

leshak
Offline
Зарегистрирован: 29.09.2011

 Попробуйте такой скетч, на "принимающей" ардуине

 

byte LED_PINS[]={13,12,11};  // номера пинов светодиодов, настройте в соотвествии с вашими подключениями

#define TOTAL_LEDS sizeof(LED_PINS)/sizeof(byte)

byte times_off[TOTAL_LEDS];// тут будем хранить время, когда диоды нужно выключить

byte buttonIndex;


void setup(){
  Serial.begin(9600);
  
  for(byte i=0;i<TOTAL_LEDS;i++){
    pinMode(LED_PINS[i],OUTPUT);// настроиваем порты
    times_off[i]=0;  //по умолчанию все диоды выключены
    digitalWrite(LED_PINS[i],LOW);
  }
  

}

void loop(){
   if(Serial.available()){
          buttonIndex = Serial.read()-48;
          buttonIndex=buttonIndex-1; // в массиве нумерация идет с нуля
          
      
          if(!times_off[buttonIndex]){ // если диод уже включен - игнорируем повторное нажатие кнопки. Включаем только выключенные
                digitalWrite(LED_PINS[buttonIndex],HIGH); //включаем
               times_off[buttonIndex]=millis()+2000;// запоминаем время когда нужно будет выключить
          }
   }

   //проверяем, не настало-ли время выключать
   unsigned long currentTime=millis();
   
   for(byte i=0;i<TOTAL_LEDS;i++){
      if(currentTime>times_off[buttonIndex]){ //текуще время больше, расчетного "времени выключения"
         digitalWrite(LED_PINS[i],LOW); //выключаем
         times_off[i]=0;// помечаем что диод больше не горит
      }
   }
  
}

Укажите ваши пины в первой строчке. Не забудте что диоды нужно подключать через резистор токоограничивающий (кроме 13-того пина, там он уже есть). Подключите эту дуину к компу и попробуйте попосылать, руками, 1, 2 или 3. Сделать имитацию нажатия кнопок. Диоды долны загоратся на 2сек. Повтороные нажатия - игнорируются.

Если все заработает - можно и за "отправляющий скетч" братся.

leshak
Offline
Зарегистрирован: 29.09.2011

 Упс. Очепятка. В строчке 38, должно быть не 

if(currentTime>times_off[buttonIndex]){

а 

if(currentTime>times_off[i]){

R164
Offline
Зарегистрирован: 06.05.2012

Вы пишите :"Повторные нажатия игнорируются" . А должно при каждом пересечении самолетом судейской плоскости., Вся гонка состоит из  10 кругов=10 раз зажиганий .Если самолет не долетел до этиой плоскости и развернулся раньше, судья светофор не зажигает и на комп идет сигнал о недолете.

leshak
Offline
Зарегистрирован: 29.09.2011

Имеетсяв ввиду что игнорируются повторные нажатия пока горит светодиод (например дребег кнопок и т.п.).

Если же вам нужно, что-бы 2сек. отсчитывались от самого последнего нажатия. Что-то типа

"нажали", прошла одна секунда (диод еще горит), а мы  еще раз нажали (добавили еще 2 сек). Итого диод горит 3 сек. Значит просто уберите эту проверку, да и все. Выкинте строчки 28 и 31

Если же у вас "поторные нажатия" идут с интервалом, например 5 сек, то игнорирования не будет в любом случае.

R164
Offline
Зарегистрирован: 06.05.2012

Тогда  у Вас все правильно,ничего выкидывать не надо .Пробую ...

R164
Offline
Зарегистрирован: 06.05.2012

ничего не загорается .На пинах 11,12,13--5 вольт постоянно,несмотря на все команды через сериал.

(меряю между пином и 3v3)

leshak
Offline
Зарегистрирован: 29.09.2011

"Отправляющую" дуину отключили на это время? Она не шлет помехи?

Мою "поправку опечатки", учли?

leshak
Offline
Зарегистрирован: 29.09.2011

 >(меряю между пином и 3v3)

Ну обычно напряжение на пине меряеют между пином и землей.

leshak
Offline
Зарегистрирован: 29.09.2011

 >ничего не загорается .На пинах 11,12,13--5 вольт постоянно

Это же взаимоисключающие утвреждения.

5v - означает "горит".

"не загорается" означает - 0v.

Что у вас, все-таки. "Не включается" или "Горит постоянно"?

R164
Offline
Зарегистрирован: 06.05.2012

Извиняюсь, только с аэродрома...

Не включается.Между землей и пинами11,12,13- ноль вольт

 3V3  подключено тоже только к этим пинам.

очепятку использовал

отправлющую дуину отключил

leshak
Offline
Зарегистрирован: 29.09.2011

 Попробуйте вот этот (копируйте его целиком, не правте предыдущий)

byte LED_PINS[]={13,12,11};  // номера пинов светодиодов, настройте в соотвествии с вашими подключениями

#define TOTAL_LEDS sizeof(LED_PINS)/sizeof(byte)

unsigned long times_off[TOTAL_LEDS];// тут будем хранить время, когда диоды нужно выключить

int buttonIndex;


void setup(){
  Serial.begin(9600);
  
  for(byte i=0;i<TOTAL_LEDS;i++){
    pinMode(LED_PINS[i],OUTPUT);// настроиваем порты
    times_off[i]=0;  //по умолчанию все диоды выключены
    digitalWrite(LED_PINS[i],LOW);
  }
  
  Serial.write("Ready for command");
  

}

void loop(){
   if(Serial.available()){
          buttonIndex = Serial.read()-48;
          buttonIndex=buttonIndex-1; // в массиве нумерация идет с нуля
          
          Serial.print("Readed buttonIndex");Serial.println(buttonIndex);
      
          if(buttonIndex>=0 && buttonIndex<TOTAL_LEDS){ //игнорируем случайный мусор, если вдруг прийдет
              if(!times_off[buttonIndex]){ // если диод уже включен - игнорируем повторное нажатие кнопки. Включаем только выключенные
                    digitalWrite(LED_PINS[buttonIndex],HIGH); //включаем
                    Serial.print("TurnOn");Serial.println(buttonIndex);
                   times_off[buttonIndex]=millis()+2000;// запоминаем время когда нужно будет выключить
              }
          }
   }

   //проверяем, не настало-ли время выключать
   unsigned long currentTime=millis();
   
   for(byte i=0;i<TOTAL_LEDS;i++){
      if(currentTime>times_off[i]){ //текуще время больше, расчетного "времени выключения"
         digitalWrite(LED_PINS[i],HIGH); //включаем
         Serial.print("TurnOff");Serial.println(buttonIndex);
         times_off[i]=0;// помечаем что диод больше не горит
      }
   }
  
}

Проверте скорость в порту (нижний правый угол серил монитора). Должно быть 9600.

Скажите что вы будете видеть в serial мониторе. Теперь скетч будет не только включать диоды, но и сообщать об этом (и прочитанных кнопка) в Serial.

leshak
Offline
Зарегистрирован: 29.09.2011

 > 3V3 подключено тоже только к этим пинам.

Зачем?????!!!!! Не уверен, но вы можете так что-нибудь попалить.

Вообще счас можете все отключить от дуины (кроме USB кабеля). Достаточно в Serial монитор смотреть.

А диоды подключается так 

Никаких 3.3V тут не нужны.

На всякий случай. Это если "обычные светики". Если же это какие-то "сверхяркие светодиоды". С потреблением тока более 40ma, то уже какие-то драверы для управления мощьной нагрузкой нужно будет городить.

R164
Offline
Зарегистрирован: 06.05.2012

Теперь диоды горят.Никакой реакции в серал-мониторе.

Слева сверху вниз в одну вертикальную строку печатается один раз "Ready for command Turn0ffo",потом много "Turn0ffo", после нажатия на SEND------"Turn0ffo-39".

АВТОСКРОЛ выключить ?

R164
Offline
Зарегистрирован: 06.05.2012

Сейчас к пинам подключен вольтметр.Нет св/диодов в наличии... 

leshak
Offline
Зарегистрирован: 29.09.2011

 Ладно. Умучили. Счас свой комп с ардуиной включу, дополирую и дам скетч.

Автоскролл - по вашему желанию. Это шутка для вашего удобства. Ни на что не влияет. Как вам удобней выводи читать.

>Сейчас к пинам подключен вольтметр.Нет св/диодов в наличии...

Это хорошо. Главное - не пытайтесь в них 3.3V вкоротить.

R164
Offline
Зарегистрирован: 06.05.2012

Извините,спасибо...

В скетче после последней загрузки внизу чего- то много красным написано про JAWA, хотя скетч загрузился..

leshak
Offline
Зарегистрирован: 29.09.2011

 Да за что извинятся, для того этот форум и есть.

>В скетче после последней загрузки внизу чего- то много красным написано про JAWA, хотя скетч загрузился.

Это не от скетча зависит. Сама IDE глючит. Попробуйте просто залить еще раз. Зайти/выйти из IDE. Ребутнутся.

 

Вообщем вот такой у меня работает:

byte LED_PINS[]={13,12,11};  // номера пинов светодиодов, настройте в соотвествии с вашими подключениями

#define TOTAL_LEDS sizeof(LED_PINS)/sizeof(byte)

unsigned long times_off[TOTAL_LEDS];// тут будем хранить время, когда диоды нужно выключить

int buttonIndex;


void setup(){
  Serial.begin(9600);
  
  for(byte i=0;i<TOTAL_LEDS;i++){
    pinMode(LED_PINS[i],OUTPUT);// настроиваем порты
    times_off[i]=0;  //по умолчанию все диоды выключены
    digitalWrite(LED_PINS[i],LOW);
  }
  
  Serial.println("Ready for command");
  

}

void loop(){
   if(Serial.available()){
          buttonIndex = Serial.read()-48;
          buttonIndex=buttonIndex-1; // в массиве нумерация идет с нуля
          
          Serial.print(millis());
          Serial.print(":Readed buttonIndex=");Serial.println(buttonIndex);
      
          if(buttonIndex>=0 && buttonIndex<TOTAL_LEDS){ //игнорируем случайный мусор, если вдруг прийдет
              if(!times_off[buttonIndex]){ // если диод уже включен - игнорируем повторное нажатие кнопки. Включаем только выключенные
                    digitalWrite(LED_PINS[buttonIndex],HIGH); //включаем
                     Serial.print(millis());
                    Serial.print(":TurnOn");Serial.println(buttonIndex);
                   times_off[buttonIndex]=millis()+2000;// запоминаем время когда нужно будет выключить
              }
          }
   }

   //проверяем, не настало-ли время выключать
   unsigned long currentTime=millis();
   
   for(byte i=0;i<TOTAL_LEDS;i++){
      if(currentTime>times_off[i]){ //текуще время больше, расчетного "времени выключения"
         digitalWrite(LED_PINS[i],LOW); //включаем
         
         if(times_off[i]){ //отчитываемся в serial только если диод был включен
           Serial.print(millis());
           Serial.print(":TurnOff");Serial.println(i);
         }

         times_off[i]=0;// помечаем что диод больше не горит
      }
   }
   

  
}

При последовательной посылке 1, 2, 3 выдает примерно такое:

 

 

Ready for command
1659:Readed buttonIndex=0
1660:TurnOn0
3662:TurnOff0
4255:Readed buttonIndex=1
4256:TurnOn1
6178:Readed buttonIndex=2
6178:TurnOn2
6258:TurnOff1
8180:TurnOff2

 На 13-том леде (включается по команде 1) вижу что работает все как надо. Другие ноги думаю тоже, по аналогии работают правильно.

leshak
Offline
Зарегистрирован: 29.09.2011

 Что-бы два раза не вставать.

Скетч для "отправляющией дуины". Кнопки подключены "от пина к земле".


byte BUTTON_PINS[]={3,4,5};  // номера пинов конопок, настройте в соотвествии с вашими подключениями

#define TOTAL_BUTTONS sizeof(BUTTON_PINS)/sizeof(byte)

void setup(){
  for(byte i=0;i<TOTAL_BUTTONS;i++){
    pinMode(BUTTON_PINS[i],INPUT);
    pinMode(BUTTON_PINS[i],HIGH); //включаем подтягивающие резисторы
  }
  
  Serial.begin(9600);
}


void loop(){
  for(byte i=0;i<TOTAL_BUTTONS;i++){ //опрашиваем кнопки
     if(!digitalRead(BUTTON_PINS[i])){ // если кнопка нажата
       Serial.print(i+1); // посылаем ее индекс. в нумерации "от единицы".
     }
  }
}

 

Подключаете "отправляющую дуину", открываете серил монитор. Жмете кнопки должны видеть в сериал монторе номер нажатой.

Если кнопок нет под руками - можете просто проводком коротнуть пин на землю.

Если все нормально - соеденяете, накрест, RX,TX пины дуин и проверяете как они друг друга понимают.

 

R164
Offline
Зарегистрирован: 06.05.2012

С получающей дуиной-все прекрасно!!!!

С  отправляющей-засада : на сериал-монитторе сразу ниже Senda горизонтальная бегущая строка из 123 пока комп не зависнет. Никакой реакции на закорачивание пинов 3,4,5

"Зайти/выйти из IDE. Ребутнутся." Не умею, научите ...

leshak
Offline
Зарегистрирован: 29.09.2011

 А вот так всегда. Поленишися проверить. Так как "всего пара строчек" :(

Вот. Это уже проверил на себе. Проводком потыкал.


byte BUTTON_PINS[]={3,4,5};  // номера пинов конопок, настройте в соотвествии с вашими подключениями

#define TOTAL_BUTTONS sizeof(BUTTON_PINS)/sizeof(byte)

void setup(){
  for(byte i=0;i<TOTAL_BUTTONS;i++){
    pinMode(BUTTON_PINS[i],INPUT);
    digitalWrite(BUTTON_PINS[i],HIGH); //включаем подтягивающие резисторы
  }
  


  Serial.begin(9600);
}


void loop(){
  for(byte i=0;i<TOTAL_BUTTONS;i++){ //опрашиваем кнопки
     if(!digitalRead(BUTTON_PINS[i])){ // если кнопка нажата
       Serial.print(i+1); // посылаем ее индекс. в нумерации "от единицы".
     }
  }

  delay(500); // что-бы в серил в "глазах не рябило" ", в конечном варианте закоментить эту строчку
}

 P.S. delay(500) - для отладки. Уберите его когда будете соединять дуины.

leshak
Offline
Зарегистрирован: 29.09.2011

 >"Зайти/выйти из IDE. Ребутнутся." Не умею, научите ...

Ну программа которой вы Arduino программите. Закрываете ее и открываете опять. :)

Если не помогает - ребутнутся, то есть, перезагрузить компьютер. Фактически то же самое "включить/выключить", только уже не программы, а всего комипьютера целиком.

Но раз скетчи у вас льются - значит вам это не нужно. Помогло "попробовать еще раз".

R164
Offline
Зарегистрирован: 06.05.2012

ВОЛШЕБНИК....

Все работает....

1? Как убрать перемигивание диода посередине горения(2 сек горит,тухнет,опять горит 2 сек и гаснет совсем))?

2?Повторное зажигание не менее чем через ,допустим, 5 сек.(защита от судейской ошибки)?Сейчас можно сразу...

3?При зажигании светофоров кратковременная подача питания на встроенные в кнопки микровибраторы(чтобы судья "собственноручно" знал, что он зажег светофор. Смотреть судья должен только на самолет, пересекающий контрольную плоскость.Отвлекаться нельзя, скорости за 350-400 км/час)

4?Может,уже уместно обсудить оплату Вашего труда ?Или я могу чем помочь?(Вопросы у меня еще будут,это только часть стартового комплекса)...

leshak
Offline
Зарегистрирован: 29.09.2011

>ВОЛШЕБНИК....

Ага, блин. Особенно в сообщении #41. Что-называется "мля, без закрылков взлетели!! Хорошо что никто не заметил!".

 >1? Как убрать перемигивание диода посередине горения

Нужно посмотреть что в логе принимающая пишет. Но наверное, извините, уже не сегодня

А если слать не дуиной, а руками в сериал тоже есть перемигивание?

>2?Повторное зажигание не менее чем через ,допустим, 5 сек

Можно. Просто завести еще один массив и в строчке 33 делать проверки по нему, а не times_off

>3?При зажигании светофоров кратковременная подача питания на встроенные в кнопки микровибраторы

Со стороны скетча - тоже можно. Опять-таки заводите дополнительный массивы (для пинов, для времени) и делаете "по аналогии.

 А вот как эти микровибраторы подключить - вам виднее. Зависит от того что там они по току кушают. Но в вопросе схемотехники, я близок к нубу. Могу какие-то советы давать уровня "здравый смысл+закон ома" (ну "основы" на easyelectronics почитал). На 80% форумных вопросов этого хватает :) 

>Может,уже уместно обсудить оплату Вашего труда ?

А вы уверены что хотите этого? ;)

Программер - удовольствие дорогое. Особенно если это для хобби оплачиваемого "с зарплаты". "Магарыч" тут не проходит. Тем более что я не пью.

 

 

 

R164
Offline
Зарегистрирован: 06.05.2012

"А если слать не дуиной, а руками в сериал тоже есть перемигивание?"

Если слать не дуиной, а руками, то никакого перемигивания нет.Диод (горит ровно две сек. и гаснет).

А когда через другую дуину -диод (горит 2 сек,гаснет,опять горит 2 сек и гаснет окончательно.Как будто отправляющая дуина дублирует команду)

"Программер - удовольствие дорогое. Особенно если это для хобби оплачиваемого "с зарплаты"."

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

Для общего развития, о каких суммах может идти речь?..

R164
Offline
Зарегистрирован: 06.05.2012

Для силовой разводки на светофоры приобрел релейный модуль для ардуино:

http://arduino-direct.com/sunshop/index.php?l=product_detail&p=155

Начал разбираться, подключил и понял ,что управляюший сигнал не "+5" вольт, а "0". Но хотелось-бы оставить пины 11,12,13 как есть для контроля светодиодами прохождения сигнала на принимающую дуину. Можно значения пинов 11,12,13 инвертировать на пины ,допустим  8,9,10 и взять уже с них управляющий ноль для  релейных входов ?

leshak
Offline
Зарегистрирован: 29.09.2011

 Можно, но не нужно. Светики же можно подключить что-бы они зажигались при 0-ле на ноге.

Просто втыкаем светик не по схеме (нога-резистор-светик-земля), а (нога-резистор-светик-5v). Тогда он светится будет когда на ноге 0.

А релейный модуль подключать паралельно с ним (но смотреть что-бы их суммарны ток был не выше 40ma). Безопасней модуль включать "после резистора", а не сразу на ногу.

Или вообще попробовать включить их последовательно. Тогда вы  действительно будете "контролировать" модуль, а не надеятся что в скетче "светик включили, а модуль забыли".

Ну и конечно в коде инвертнуть управляющий сигналы, там где  digitalWrite(LED_PINS[buttonIndex],...); HIGH поменять на LOW и наоборот. (строки 16,34,47).

 

leshak
Offline
Зарегистрирован: 29.09.2011

R164 пишет:

"А если слать не дуиной, а руками в сериал тоже есть перемигивание?"

Если слать не дуиной, а руками, то никакого перемигивания нет.Диод (горит ровно две сек. и гаснет).

 

А что при этом видно в Serial Monitor у "принимающей"?

P.S. А вы в скайпе-то появляетесь?