Utilizar duas funções - Automação residencial simples + relógio shield ds 1307

Olá a todo é a primeira vez que estou pedindo ajuda a todos e é um imenso prazer estar aqui!

Bem meu problema é o seguinte, é possível compilar em C no Arduíno dois códigos, um para acionar os reles via internet e outro para acionar via timer em um mesmo Arduíno? pois eu já tentei de tudo... e to ficando desanimado pois procurei em varios tutorias mas nada com essa situação, oq me faz imaginar primariamente que é preciso um arduíno para cada projeto .... se eu estiver errado aguem poderia me ajudar me mandar uma programação em C pra mim estudar como exemplo o que eu preciso, que é 2 programas trabalhando junto aguardo uma condição para 1 arduino

Desde já obrigado pela atenção de todos e aguardo ansioso :)

Exibições: 520

Responder esta

Respostas a este tópico

Tem como sim, mas ai você tem que integrar os dois códigos. O maior problema que a maioria encontra é em relação ao delay, que para o código todo. De uma olhada no exemplo blinkwithoutdelay que tem na própria IDE do arduino. 

Nicholas Garcia meu problema é que não consegui integrar os dois código, chega a compilar mas não faz nenhuma função, queria a ajuda de vcs para mesclar esses códigos para rodar, pois olhei o blinkwithoutdelay como vc citou.... não consegui fazer funcionar, vou deixar aqui os dois sketch q estou tentando mesclar .... sem sucesso até agora....  

Automação reisdencial pela web 

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 }; //physical mac address
byte ip[] = {
192, 168, 254, 19 }; // ip in lan
byte gateway[] = {
192, 168, 254, 254 }; // internet access via router
byte subnet[] = {
255, 255, 255, 0 }; //subnet mask
EthernetServer server(8888); //server port

String readString;

int pin[8];
char* nome_pin[8];
int estado_pin[8];

//////////////////////

void setup(){


pin[0] = 7;
pin[1] = 8;
pin[2] = 6;
pin[3] = 5;
pin[4] = 6;
pin[5] = 2;
pin[6] = 3;
pin[7] = 9;

//NOME DOS BOTOES
nome_pin[0] = "rele 1";
nome_pin[1] = "rele 2";
nome_pin[2] = "rele 3";
nome_pin[3] = "rele 4";
nome_pin[4] = "rele 5";
nome_pin[5] = "rele 6";
nome_pin[6] = "rele 7";
nome_pin[7] = "rele 8";

//ESTADO INICIAL DOS BOTOES 0 -> desligado, 1 -> ligado:
estado_pin[0] = 0;
estado_pin[1] = 0;
estado_pin[2] = 0;
estado_pin[3] = 0;
estado_pin[4] = 0;
estado_pin[5] = 0;
estado_pin[6] = 0;
estado_pin[7] = 0;

pinMode(pin[0], OUTPUT);
pinMode(pin[1], OUTPUT);
pinMode(pin[2], OUTPUT);
pinMode(pin[3], OUTPUT);
pinMode(pin[4], OUTPUT);
pinMode(pin[5], OUTPUT);
pinMode(pin[6], OUTPUT);
pinMode(pin[7], OUTPUT);

//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
//the pin for the servo co
//enable serial data print
Serial.begin(9600);
Serial.println("BRUNO SYSTEM AUTO v2.0 beta"); // so I can keep track of what is loaded

}

void loop(){
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

//read char by char HTTP request
if (readString.length() < 100) {

//store characters to string
readString += c;
//Serial.print(c);
}

//if HTTP request has ended
if (c == '\n') {

///////////////////// control arduino pin
Serial.println(readString); //print to serial monitor for debuging

char pesquisa[] = "?xx";
for(int i=2 ; i <= 9 ; i++){
pesquisa[2] = i + 48;

pesquisa[1] = 'l';
if(readString.indexOf(pesquisa) > 0){
digitalWrite(pin[i-2], HIGH);
Serial.println("Rele 1 On");
estado_pin[i-2] = 1;
}

pesquisa[1] = 'd';
if(readString.indexOf(pesquisa) > 0){
digitalWrite(pin[i-2], LOW);
Serial.println("Rele 1 Off");
estado_pin[i-2] = 0;
}

}

//clearing string for next read
readString="";


///////////////

client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();

client.println("<html>");
client.println("<head>");
client.println("<title>Remote Automation</title>");
client.println("<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>");
client.println("<link rel='stylesheet' type='text/css' href='http://datahomebank.url.ph/graficoonline.css' />");
client.println("<script type='text/javascript' src='http://datahomebank.url.ph/graficojava.js'/></script>");

client.println("</head>");
client.println("<body>");
client.println("<div id='wrapper'>BRUNO SYSTEM AUTO v2.0 beta<br>");

client.println("<div style='display: inline-block; width: 400px;'>");

for(int i=0;i<=7;i++){
client.print("<div id='porta");
client.print(i+2);
client.print("_estado'>");
client.print(estado_pin[i]);
client.println("</div>");
client.print("<div id='porta");
client.print(i+2);
client.print("_titulo'>");
client.print(nome_pin[i]);
client.println("</div>");
client.print("<div id='porta");
client.print(i+2);
client.println("_botao' style='position: relative;'></div>");

if(i==3){
client.println("</div><div style='display: inline-block; width: 400px;'>");
}
}
client.println("</div>");

client.println("</div>");

client.println("</body>");

client.println("<script>VerificaEstado();</script>");

client.println("</html>");


delay(1);
//stopping client
client.stop();

}
}
}
}
}

..........................................................................................

e acionamento por timer 

...........................................................................................

// Modificated by SoBraL - mr.sobral@hotmail.com
// Font: [url=http://arduino.cc/forum/index.php/topic,8833.0.html]http://arduino.cc/forum/index.php/topic,8833.0.html[/url]
// Before you need to install the library DS1307: [url=http://bricofoy.free.fr/forums/arduino/DS1307.zip]http://bricofoy.free.fr/forums/arduino/DS1307.zip[/url]
#include <WProgram.h> //é um recurso para referenciar a biblioteca Wiring
#include <Wire.h> //inclui a biblioteca Wire necessaria para comunicaçao i2c
#include <DS1307.h> //inclui a biblioteca de comandos do DS1307 utilizada neste programa. Necessário baixá-la no link acima

int rtc[6];
int frente = 7;
int corredor = 8;
int quarto = 9;
int banheiro = 6;
int radio = 5;
void setup()
{
Serial.begin(9600);
for (int pino = 9; pino <= 13; pino++) {
pinMode(pino, OUTPUT); // configura pinos 10 ao 13 como saída
digitalWrite(pino, LOW); // desliga pinos 10 ao 13
}/*
RTC.stop();
RTC.set(DS1307_SEC,10); //define o segundo rtc[0]
RTC.set(DS1307_MIN,10); //define o minuto rtc[1]
RTC.set(DS1307_HR,20); //define a hora rtc[2]
RTC.set(DS1307_DOW,1); //define o dia da semana rtc[3]
RTC.set(DS1307_DATE,1); //define o dia rtc[4]
RTC.set(DS1307_MTH,12); //define o mes rtc[5]
RTC.set(DS1307_YR,13); //define o ano rtc[6]
RTC.start();
*/
}
void MudaDispositivo(byte dispositivo, byte estado, byte hora, byte minuto, byte segundo, int* rtc) {
if ( rtc[2] == hora && rtc[1] == minuto && rtc[0] == segundo )
digitalWrite(dispositivo, estado);
}
void loop()
{
RTC.get(rtc,true);
//Simula presença durante o dia
MudaDispositivo(radio, HIGH, 6, 40, 10, rtc);
MudaDispositivo(radio, LOW, 6, 41, 10, rtc);
MudaDispositivo(radio, HIGH, 7, 00, 10, rtc);
MudaDispositivo(radio, LOW, 7, 05, 10, rtc);
MudaDispositivo(quarto, HIGH, 6, 39, 20, rtc);
MudaDispositivo(quarto, LOW, 6, 50, 20, rtc);
//Simula presença de noite
MudaDispositivo(corredor, HIGH, 18, 40, 10, rtc);
MudaDispositivo(corredor, LOW, 01, 43, 10, rtc);
MudaDispositivo(quarto, HIGH, 18, 43, 20, rtc);
MudaDispositivo(quarto, LOW, 18, 58, 10, rtc);
MudaDispositivo(frente, HIGH, 19, 40, 30, rtc);
MudaDispositivo(frente, LOW, 01, 41, 40, rtc);


delay(1000);
}

nao consegui rodar seu projeto pelo ethernet.. vc esta rodando php ? tem como ativar por serial ? 

Estranho Thomaz eu rodo pelo ethernet mesmo .... o sketch de cima .... o de baixo vc joga no arduino e ele faz sozinho .... o problema é mescar esses códigos... os phps estão rodando nestes sites colocados no sketch

client.println("<link rel='stylesheet' type='text/css' href='http://datahomebank.url.ph/graficoonline.css' />");
client.println("<script type='text/javascript' src='http://datahomebank.url.ph/graficojava.js'/></script>");

só vc jogar no arduino e colocar o ip da tua rede e mandar online que dá certo

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço