@romik1988
работаю

Объединить два скетча вмести, как это сделать?

Здравствуйте ! помогите пожалуйста, есть два скетча и их нужно объединить. первый делает звонок на телефон при срабатывания датчика удара, второй типа центральный замок , мне нужно чтобы в функции закрытие дверей включался первый скетч.

первый /// GSM Датчик удара
#include SoftwareSerial.h
SoftwareSerial gsm(7, 8);

#define LED 13
#define ShockPin 3 // датчик удара
int ShockVal;
#define TELLNUMBER "ATD+79021039665;" // номер на который будет звонить датчик#define pinBOOT 5

void setup() {
Serial.begin(9600);
delay(1000);
gsm.begin(19200);
pinMode(LED, OUTPUT);

pinMode(ShockPin, INPUT);

delay(1000);
digitalWrite(LED, HIGH);

delay(2000);
while(gsm.find("STARTUP"));
gsm.println("ATE0");

while(1){
gsm.println("AT+COPS?");
if (gsm.find("+COPS: 0")) break;
delay(50);
digitalWrite(LED, HIGH);
delay(500);
}

digitalWrite(LED, LOW);
delay(1500);
digitalWrite(LED, HIGH);
delay(250);
digitalWrite(LED, LOW);

}

void loop() {
Serial.println(ShockVal);
ShockVal = digitalRead(ShockPin);
if(ShockVal == LOW){
digitalWrite(LED,HIGH);
gsm.println(TELLNUMBER);
delay(2500);
}
else
{
digitalWrite(LED, LOW);
}

}

второй
#include RemoteReceiver.h
int dver=12;
int bag=4;

void setup() {

RemoteReceiver::init(0, 3, showCode);
pinMode (dver,OUTPUT);
pinMode (bag,OUTPUT);
}

void loop() {

}

void showCode(unsigned long receivedCode, unsigned int period)
{

Serial.print("Code: ");
Serial.print(receivedCode);
Serial.print(", period duration: ");
Serial.print(period);
Serial.println("us.");
// открытие и зокрытие дверей

if (receivedCode == 411878) // закрыто
{
digitalWrite(dver,LOW)
}

if (receivedCode == 411810) // открыто
{
digitalWrite(dver,HIGH);

}

// багажник
if (receivedCode == 411864)
{
digitalWrite(bag,HIGH);
delay(100000);
digitalWrite(bag,LOW);
}

}
  • Вопрос задан
  • 2021 просмотр
Пригласить эксперта
Ответы на вопрос 2
Вот так, только откуда процедура showCode будет вызываться?

первый /// GSM Датчик удара 
#include 
SoftwareSerial gsm(7, 8); 

int dver=12; 
int bag=4; 

#define LED 13 
#define ShockPin 3 // датчик удара 
int ShockVal; 
#define TELLNUMBER "ATD+79021039665;" // номер на который будет звонить датчик#define pinBOOT 5 

void setup() { 
Serial.begin(9600); 
delay(1000); 
gsm.begin(19200); 
pinMode(LED, OUTPUT); 

pinMode(ShockPin, INPUT); 

delay(1000); 
digitalWrite(LED, HIGH); 

delay(2000); 
while(gsm.find("STARTUP")); 
gsm.println("ATE0"); 

while(1){ 
gsm.println("AT+COPS?"); 
if (gsm.find("+COPS: 0")) break; 
delay(50); 
digitalWrite(LED, HIGH); 
delay(500); 
} 

digitalWrite(LED, LOW); 
delay(1500); 
digitalWrite(LED, HIGH); 
delay(250); 
digitalWrite(LED, LOW); 


RemoteReceiver::init(0, 3, showCode); 
pinMode (dver,OUTPUT); 
pinMode (bag,OUTPUT);

} 



void showCode(unsigned long receivedCode, unsigned int period) 
{ 

Serial.print("Code: "); 
Serial.print(receivedCode); 
Serial.print(", period duration: "); 
Serial.print(period); 
Serial.println("us."); 
// открытие и зокрытие дверей 

if (receivedCode == 411878) // закрыто 
{ 
digitalWrite(dver,LOW) 
} 

if (receivedCode == 411810) // открыто 
{ 
digitalWrite(dver,HIGH); 

} 

// багажник 
if (receivedCode == 411864) 
{ 
digitalWrite(bag,HIGH); 
delay(100000); 
digitalWrite(bag,LOW); 
} 

}


void loop() { 
Serial.println(ShockVal); 
ShockVal = digitalRead(ShockPin); 
if(ShockVal == LOW){ 
digitalWrite(LED,HIGH); 
gsm.println(TELLNUMBER); 
delay(2500); 
} 
else 
{ 
digitalWrite(LED, LOW); 
} 

}
Ответ написан
@Max889900
Здравствуйте, помогите пожалуйста объединить два скетча

Код для создания Ping:

#include

#include

#include

#include

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // max address for ethernet shield

byte ip[] = {192,168,0,177}; // ip address for ethernet shield

IPAddress pingAddr(0,0,0,0); // ip address to ping

SOCKET pingSocket = 0;

char buffer [256];

ICMPPing ping(pingSocket, (uint16_t)random(0, 255));

void setup()

{

// start Ethernet

Ethernet.begin(mac, ip);

Serial.begin(9600);

DNSClient dns;

dns.begin(Ethernet.dnsServerIP());

dns.getHostByName("ya.ru",pingAddr); // at this point the function works

}

void loop()

{

ICMPEchoReply echoReply = ping(pingAddr, 4);

if (echoReply.status == SUCCESS)

{

sprintf(buffer,

"Reply[%d] from: %d.%d.%d.%d: bytes=%d time=%ldms TTL=%d",

echoReply.data.seq,

echoReply.addr[0],

echoReply.addr[1],

echoReply.addr[2],

echoReply.addr[3],

REQ_DATASIZE,

millis() - echoReply.data.time,

echoReply.ttl);

}

else

{

sprintf(buffer, "Echo request failed; %d", echoReply.status);

}

Serial.println(buffer);

delay(500);

}

Код для отправки сообщения:

#include
#include
#include
#include
#include
#include

#include
#include
#include
#include
#include
#include
#include
#include
#include

//структура для сообщения
struct Message
{
String From;//адрес отправителя
String To;// адрес получателя
String Subject;// Тема письма
String Body;// Текст письма
};

//mac адрес устройства (можно не менять)
byte mac[] = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x05 };

//IP адрес адруины (можно не менять)
IPAddress ip(192,168,1,48);

// IP smtp сервера
IPAddress server(87,250,251,50);
// IP других сереров можно найти в инете

// логин и пароль к почтовому сервису
char login[] = "A........@yandex.ru";//
char password[] = "A.......";

// создаем экземпляр клиента
EthernetClient client;

void setup(){
Serial.begin(9600);// UART
Ethernet.begin(mac,ip);// Запускаем шилд
Serial.println("Start");
}

void loop(){
while(Serial.available()){
char inSerialChar = 0;
inSerialChar = Serial.read();
if(inSerialChar == 's'){
SendMessage();// При отправке в дуину ‘s’, отправляем сообщение.
}
}
}
// метод подключения к серверу
bool connectToServer(){
if(client.connected()){
}
else{
if(client.connect(server,25)){
return true;
}
else{
return false;
}
}
}

// метод отправки сообщения
void SendMessage(){
Serial.println("Please wite…");
LogPass();
Message message = {
"A.......@yandex.ru",
"B......@yandex.ru",
"Проба пера",//тема
"Огромный привет от Ардуино!!!!" };//само сообщение
client.println("MAIL From:<"+message.From+">");
delay(250);
client.println("RCPT To:<"+message.To+">");
delay(250);
client.println("DATA");
delay(250);
client.println("From:"+message.From);
client.println("To:"+message.To);
client.println("Subject:"+message.Subject);
delay(250);
client.println(message.Body);
delay(250);
client.println(".");// поприходуточкисерверставитсообщениевочередь
delay(250); // на отправку
client.println("QUIT");// как только закрыли соединение, сообщение улетает
delay(250);
Serial.println("Message sending…");
}

// подключение к серверу и авторизация
void LogPass(){
char array[64];// массив для кодирования
if(connectToServer()){
client.println(F("helo 1.2.3.4"));
delay(250);
client.println(F("AUTH LOGIN"));
delay(250);
client.println(strToBase64(login));
delay(250);
client.println(strToBase64(password));
delay(250);

}
else{
Serial.println("Server not connected…");
}

}

// кодировка Base64
String strToBase64(char str[]){
char charArray[64];
base64_encode(charArray,str,strlen(str));
String result = charArray;
return result;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы