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

Световые эффекты на светодиодах, программа arduino

+9 голосов




#include <IRremote.h>

int RECV_PIN = 3;
int led_1 = 13;
int led_2 = 12;
int led_3 = 11;
int led_4 = 10;
int led_5 = 9;
int led_6 = 8;
int lance = 1;
int TIME = 100;

IRrecv irrecv(RECV_PIN);
decode_results results;
bool LampState = false;

void setup() {
  Serial.begin(9600);
  pinMode(led_1, OUTPUT);
  pinMode(led_2, OUTPUT);
  pinMode(led_3, OUTPUT);
  pinMode(led_4, OUTPUT);
  pinMode(led_5, OUTPUT);
  pinMode(led_6, OUTPUT);
  irrecv.enableIRIn(); // Включаем ресивер
  for (int i1 = 0; i1 < 2; i1++) start(); // Начальная программа
}





void loop() {
  
  if (irrecv.decode(&results)){
  Serial.println(results.value);
  if (results.value == 16236607) lance = 1;
  
  
  if(lance==1) for (int i2 = 0; i2 < 2; i2++) program1(); // Программа 1
  if(lance==2) for (int i3 = 0; i3 < 2; i3++) program2(); // Программа 2
  if(lance==3) for (int i4 = 0; i4 < 8; i4++) program3(); // Программа 3
  if(lance==4) for (int i5 = 0; i5 < 3; i5++) program4(); // Программа 4
  
  irrecv.resume(); // Получаем следующее значение
}}
  
  
  
void program1() { // Программа первая
  digitalWrite(led_1, HIGH); 
  delay(TIME); 
  digitalWrite(led_2, HIGH);
  delay(TIME);
  digitalWrite(led_3, HIGH);
  delay(TIME);
  digitalWrite(led_4, HIGH);
  delay(TIME);
  digitalWrite(led_5, HIGH);
  delay(TIME);
  digitalWrite(led_6, HIGH);
  delay(TIME);
  
  
  digitalWrite(led_1, LOW); 
  delay(TIME); 
  digitalWrite(led_2, LOW);
  delay(TIME);
  digitalWrite(led_3, LOW);
  delay(TIME);
  digitalWrite(led_4, LOW);
  delay(TIME);
  digitalWrite(led_5, LOW);
  delay(TIME);
  digitalWrite(led_6, LOW);
  delay(TIME);
  lance = 2;
}

void program2() { // Программа 2
  digitalWrite(led_6, HIGH); 
  delay(TIME); 
  digitalWrite(led_5, HIGH);
  delay(TIME);
  digitalWrite(led_4, HIGH);
  delay(TIME);
  digitalWrite(led_3, HIGH);
  delay(TIME);
  digitalWrite(led_2, HIGH);
  delay(TIME);
  digitalWrite(led_1, HIGH);
  delay(TIME);
  
  
  digitalWrite(led_6, LOW); 
  delay(TIME); 
  digitalWrite(led_5, LOW);
  delay(TIME);
  digitalWrite(led_4, LOW);
  delay(TIME);
  digitalWrite(led_3, LOW);
  delay(TIME);
  digitalWrite(led_2, LOW);
  delay(TIME);
  digitalWrite(led_1, LOW);
  delay(TIME);
  lance = 3;
}

void program3() { // Программа 3 стробоскоп
  digitalWrite(led_1, HIGH); 
  digitalWrite(led_2, HIGH);
  digitalWrite(led_3, HIGH);
  delay(50);
  digitalWrite(led_1, LOW); 
  digitalWrite(led_2, LOW);
  digitalWrite(led_3, LOW);  
  delay(50);
  digitalWrite(led_1, HIGH); 
  digitalWrite(led_2, HIGH);
  digitalWrite(led_3, HIGH);
  delay(50);
  digitalWrite(led_1, LOW); 
  digitalWrite(led_2, LOW);
  digitalWrite(led_3, LOW);  
  delay(50);
  digitalWrite(led_4, HIGH); 
  digitalWrite(led_5, HIGH);
  digitalWrite(led_6, HIGH);
  delay(50);
  digitalWrite(led_4, LOW); 
  digitalWrite(led_5, LOW);
  digitalWrite(led_6, LOW);  
  delay(50);
  digitalWrite(led_4, HIGH); 
  digitalWrite(led_5, HIGH);
  digitalWrite(led_6, HIGH);
  delay(50);
  digitalWrite(led_4, LOW); 
  digitalWrite(led_5, LOW);
  digitalWrite(led_6, LOW); 
  delay(50); 
  lance = 4;
}

void program4() { // Программа 4
  digitalWrite(led_1, HIGH); 
  delay(TIME); 
  digitalWrite(led_1, LOW); 
  digitalWrite(led_2, HIGH);   
  delay(TIME);   
  digitalWrite(led_2, LOW);   
  digitalWrite(led_3, HIGH);     
  delay(TIME);    
  digitalWrite(led_3, LOW);  
  digitalWrite(led_4, HIGH);  
  delay(TIME);    
  digitalWrite(led_4, LOW);  
  digitalWrite(led_5, HIGH);  
  delay(TIME);   
  digitalWrite(led_5, LOW);    
  digitalWrite(led_6, HIGH);  
  delay(TIME);   
  
  
  digitalWrite(led_6, LOW);  
  digitalWrite(led_5, HIGH);   
  delay(TIME); 
  digitalWrite(led_5, LOW);  
  digitalWrite(led_4, HIGH);     
  
  delay(TIME); 
  digitalWrite(led_4, LOW);  
  digitalWrite(led_3, HIGH); 
  
  delay(TIME); 
  digitalWrite(led_3, LOW);  
  digitalWrite(led_2, HIGH); 
  
  delay(TIME); 
  digitalWrite(led_2, LOW);  
  digitalWrite(led_1, HIGH); 
  delay(TIME);
  lance = 1;
}






void start() { // Основная программа.
      
      digitalWrite(led_1, HIGH);
      digitalWrite(led_2, HIGH);
      digitalWrite(led_3, HIGH);
      digitalWrite(led_4, HIGH);
      digitalWrite(led_5, HIGH);
      digitalWrite(led_6, HIGH);
      delay(250);

      digitalWrite(led_1, LOW);
      digitalWrite(led_2, LOW);
      digitalWrite(led_3, LOW);
      digitalWrite(led_4, LOW);
      digitalWrite(led_5, LOW);
      digitalWrite(led_6, LOW);
      delay(250);
}
  
  
  
  
  
  
  
  
  
  
      



 

15 Июль, 13 от аноним в категории Начинающим

1 Ответ

0 голосов

сигнал и пульта принимает только некоторые моменты, как сделать чтоб сигнал принимался пока выполняется программа?

15 Июль, 13 от аноним