Olá, boa tarde!!
Estou com um projeto de automação e preciso que o arduino interprete alguns dados que estarão salvos no micro sd junto ao arduino...
Pesquisei e achei uma biblicoteca que usa um banco de dados para essa interpretação, como posso fazer pra usa-la e que ela interprete executando uma ação de ligar um rele em determinada hora caso leia "Rele, 1, 13:10" ou desligue lendo "Rele, 0, 13:20" por exemplo?

Link dos exemplos da biblioteca EDB:

https://github.com/jwhiddon/EDB/blob/master/examples/EDB_SDCARD/EDB...

https://github.com/jwhiddon/EDB/blob/master/examples/EDB_Simple/EDB...

Exibições: 768

Responder esta

Respostas a este tópico

Agora consegui usar, o problema era o cartão de memoria mesmo! Entao, eu uso a reley board que vendia aqui no lab mesmo...

Me explica umas coisas pf, como faço para editar o ini sem ter que tirar o cartão, direto pela rede?

Quero por exemplo colocar alguma paramentro que ligue algum rele e caso queira colocar outro, eu consiga add ou remover no .ini sem remover o sd, acho que nao fui muito claro rsrs

Obrigado, espero retorno

Boa tarde Filipi,

Desculpa a demora em responder.

Vou ser honesto contigo, até pesquisei como editar o INI direto via WEB (pensei em criar uma página para acessar e realizar os tais ajustes).

Porém como naquele momento meu projeto não precisava de tal função deixei de lado.

Agora me diz uma coisa, já pensou em gravar as informações na EEPROM do arduino?

Eu tenho um projetinho com Timer que uso a gravação de dados na memória interna do arduino e a leitura e escrita é muito simples.

Blz?

Abraços e obrigado.

Boa tarde Oziris!!

Seu código pode me ajudar sim!! Consigo armazenar datas e horas de ligamento usando o ds1307?

A principio eu preciso armazenar isso para caso haja um corte na rede, o arduino ainda sim saiba o que e quando desligar ou ligar algo entende?

Eu estava usando esse código para o ds1307:

#include <Wire.h>
#include <RelayBoard.h>
#include "RTClib.h"

RTC_DS1307 rtc;
RelayBoard relay(6, 3, 2, 1);


#define DS1307_ADDRESS 0x68
byte zero = 0x00;
char daysOfTheWeek[7][12] = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sabádo"};

void setup () {
  while (!Serial);

  Serial.begin(9600);
  if (! rtc.begin()) {
    Serial.println("Não foi possível achar o RTC.");
    while (1);
  }

  if (! rtc.isrunning()) {
    Serial.println("RTC não está executando.");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  setDateTime();
}

byte decToBcd(byte val){
  // Converter número decimal para binário.
  return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val)  {
  // Converter de binário para decimal.
  return ( (val/16*10) + (val%16) );
}

void setDateTime(){
  byte second =      0; //0-59
  byte minute =      5; //0-59
  byte hour =        10; //0-23
  byte weekDay =     2; //1-7
  byte monthDay =    19; //1-31
  byte month =       9; //1-12
  byte year  =       16; //0-99

  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero);

  Wire.write(decToBcd(second));
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));
  Wire.write(decToBcd(weekDay));
  Wire.write(decToBcd(monthDay));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));

  Wire.write(zero);
  Wire.endTransmission();
}

void loop () {
    DateTime now = rtc.now();

    int dateActionBegin[] = {19, 9, 2016, 10, 5, 10};
    int dateActionEnd[] = {19, 9, 2016, 10, 5, 25};
   
    statusDevice(dateActionBegin, 1, HIGH);
    statusDevice(dateActionEnd, 1, LOW);
    
    statusDevice(dateActionBegin, 2, HIGH);
    statusDevice(dateActionEnd, 2, LOW);

    statusDevice(dateActionBegin, 3, HIGH);
    statusDevice(dateActionEnd, 3, LOW);

    statusDevice(dateActionBegin, 3, HIGH);
    statusDevice(dateActionEnd, 3, LOW);

    statusDevice(dateActionBegin, 4, HIGH);
    statusDevice(dateActionEnd, 4, LOW);

    statusDevice(dateActionBegin, 5, HIGH);
    statusDevice(dateActionEnd, 5, LOW);

    statusDevice(dateActionBegin, 6, HIGH);
    statusDevice(dateActionEnd, 6, LOW);

    statusDevice(dateActionBegin, 7, HIGH);
    statusDevice(dateActionEnd, 7, LOW);

    statusDevice(dateActionBegin, 8, HIGH);
    statusDevice(dateActionEnd, 8, LOW);
    
    delay(1000);

}

// Método para alterar o status de um relay de acordo com um array que simboliza uma data e horário.
void statusDevice(int date[], int r, bool s){
  DateTime now = rtc.now();

  // Verifica se a data e o horário correspondem com o momento atual.
  if(date[0] == now.day() && date[1] == now.month() && date[2] == now.year()){
    if(date[3] == now.hour() && date[4] == now.minute() && date[5] == now.second()){
      relay.set(0, r, s);
    }
  }
}

Boa tarde Filipi,

Eu uso o RTC DS 3231 e consigo sim gravar as informações fornecidas pelo RTC na memória interna do arduino de boa.

Questão de você testar com o teu RTC e ver como se comporta.

Abraços e obrigado.

aah sim, pode me passar seu código pra eu testar pf!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço