Разработка скетча на заказ, GSM модуль

4ishops
Offline
Зарегистрирован: 06.10.2012

 Требуется разработать скетч для Arduino, необходимо считывать показания с нескольких подключенных датчиков и управлять GSM модулем на SIM900

 

4ishops(на)gmail.com

 

Bahram
Offline
Зарегистрирован: 04.12.2015

Привет форумчане!!! Помогите доработать скетч:Все нормально, только мне нужно, чтобы светодиод через оределенное время  (допустим 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);
 
        }
      }
    }
  }
}
 
bwn
Offline
Зарегистрирован: 25.08.2014

Bahram пишет:

Привет форумчане!!! Помогите доработать скетч:Все нормально, только мне нужно, чтобы светодиод через оределенное время  (допустим 1 мин.) отключался.

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