Задержка вкл светодиода на 1 минуту
- Войдите на сайт для отправки комментариев
Сб, 13/02/2016 - 23:15
Привет форумчане!!! Помогите доработать скетч: Все нормально, только мне нужно, чтобы светодиод через оределенное время (допустим 1 мин.) отключался.
*/
#include <IRremote.h> // это скачанная библиотека
int RECV_PIN = 11; //вход ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long Value100 = 0xEE008FC0; // переменная для хранения кода кнопки пульта
//Этот блог дает возможность физический прописывать коды кнопок своего пульта
// (как альтернатива программирования на лету с пульта)
// ВАЖНО !!! (1000809) это код кнопки - моего пульта - у вашего пульта будет другой код - замените на свой
unsigned long Value2 = 0x1000809;
unsigned long Value3 = 0x1008889;
unsigned long Value4 = 0x1004849;
unsigned long Value5 = 0x100C8C9;
unsigned long Value6 = 0x1002829;
unsigned long Value7 = 0x100A8A9;
unsigned long Value8 = 0x1006869;
unsigned long Value9 = 0x100E8E9;
unsigned long Value10 = 0x1001819;
unsigned long Value0 = 0x1009899;
unsigned long Value11 = 0x180C041;
unsigned long Value12 = 0x180A021;
unsigned long Value13 = 0x1801091;
unsigned long Value14 = 0x1809011;
unsigned long Value15 = 0x1000E0F;
unsigned long Value16 = 0x1008E8F;
unsigned long Value17 = 0x1004E4F;
unsigned long Value18 = 0x100CECF;
//можно подать положительный сигнал на пин 14 (A0) для начала программирования
//(как альтернатива начала программирования на лету с пульта)//unsigned long Value100 = 0xEE008FD4;
int butpin = 14;
//Даем имена пинам
int pultpin2 = 2;
int pultpin3 = 3;
int pultpin4 = 4;
int pultpin5 = 5;
int pultpin6 = 6;
int pultpin7 = 7;
int pultpin8 = 8;
int pultpin9 = 9;
//***
int ledpin[] = {
2, 3, 4, 5, 6, 7, 8, 9}; // номера задействованных пинов, количество можно уменьшить или увеличить (по желанию)
int ledstate[] = {
0, 0, 0, 0, 0, 0, 0, 0}; //количество задействованных пинов, количество можно уменьшить или увеличить (по желанию)
int butrec = 0;
long prevcode[] = {
1, 1, 1, 1, 1, 1, 1, 1}; //количество задействованных пинов, количество можно уменьшить или увеличить (по желанию)
long prevM = 0;
long prevM1 = 0;
long timeEx = 0;
boolean expr = true;
void setup()
{
for (int i=0; i <= 8; i++){ // цифру 8 и все восьмёрки ниже заменяем на цифру задействованных пинов (по желанию)
pinMode(ledpin[i],OUTPUT);
}
for (int i=0; i <= 8; i++){
}
pinMode(butpin, INPUT);
digitalWrite(butpin, LOW);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver. включить приемник
}
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
}
}
{
if(results.value == Value100)digitalWrite(butpin, HIGH);
digitalWrite(butpin, LOW); // кнопкой от пульта запускаем режим программируемые на лету
//Управляем с заранее записанных кодов кнопок своего пульта
//unsigned long Value2 = 0xF7283C77;
if(results.value == Value2)digitalWrite(pultpin2, HIGH);
if(results.value == Value3)digitalWrite(pultpin3, HIGH);
if(results.value == Value4)digitalWrite(pultpin4, HIGH);
if(results.value == Value5)digitalWrite(pultpin5, HIGH);
if(results.value == Value6)digitalWrite(pultpin6, HIGH);
if(results.value == Value7)digitalWrite(pultpin7, HIGH);
if(results.value == Value8)digitalWrite(pultpin8, HIGH);
if(results.value == Value9)digitalWrite(pultpin9, HIGH);
if(results.value == Value10)digitalWrite(pultpin2, LOW);
if(results.value == Value0)digitalWrite(pultpin3, LOW);
if(results.value == Value11)digitalWrite(pultpin4, LOW);
if(results.value == Value12)digitalWrite(pultpin5, LOW);
if(results.value == Value13)digitalWrite(pultpin6, LOW);
if(results.value == Value14)digitalWrite(pultpin7, LOW);
if(results.value == Value15)digitalWrite(pultpin8, LOW);
if(results.value == Value16)digitalWrite(pultpin9, LOW);
//вКлючаем все
if(results.value == Value17)digitalWrite(pultpin9, HIGH)
,digitalWrite(pultpin2, HIGH),digitalWrite(pultpin3, HIGH)
,digitalWrite(pultpin4, HIGH),digitalWrite(pultpin5, HIGH)
,digitalWrite(pultpin6, HIGH),digitalWrite(pultpin7, HIGH)
,digitalWrite(pultpin8, HIGH),digitalWrite(pultpin9, HIGH);
//вЫключаем все
if(results.value == Value18)digitalWrite(pultpin9, LOW)
,digitalWrite(pultpin2, LOW),digitalWrite(pultpin3, LOW)
,digitalWrite(pultpin4, LOW),digitalWrite(pultpin5, LOW)
,digitalWrite(pultpin6, LOW),digitalWrite(pultpin7, LOW)
,digitalWrite(pultpin8, LOW),digitalWrite(pultpin9, LOW);
{
if (irrecv.decode(&results)){
delay(150);
for(int i=0; i<8; i++)
if (results.value == prevcode[i]){
ledstate[i] = !ledstate[i];
digitalWrite(ledpin[i], ledstate[i]);
}
}
butrec = digitalRead(butpin);
if (butrec == HIGH){
for (int i=0; i<8; i++){
ledstate[i] = 0;
digitalWrite(ledpin[i], ledstate[i]);
}
timeEx = millis() - prevM1;
for (int i=0; i<8; i++){
expr = true;
timeEx = 0;
prevM1 = millis();
// < 5000)время ожидания сигнала с пульта, для перехода к следующему пину (в момент программирования)
while (expr == true && timeEx < 5000){
timeEx = millis() - prevM1;
if (millis() - prevM > 250){
prevM = millis();
int ledstate1 = !ledstate1;
digitalWrite(ledpin[i], ledstate1);
}
if (irrecv.decode(&results)) {
delay(150);
prevcode[i] = results.value;
irrecv.resume();
expr = !expr;
prevM1 = millis();
}
}
digitalWrite(ledpin[i], LOW);
}
}
}
}
}
1. Выложите текст как положено. В таком виде и читать неудобно, а обсуждать вообще невозможно (без номеров строк).
2. Обясните толком что делается. Или надо самим догадываться?