collapse

* Posts Recentes

Arame de Estendal por almamater
[Ontem às 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Sistema Rega Automático com interface VB  (Lida 24187 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Sistema Rega Automático com interface VB
« Responder #60 em: 13 de Setembro de 2012, 02:55 »
Mostra o teu código sff, o primeiro print é da hora de compilação se estás a usar a biblioteca da Adafruit, depois disso faz reset, portanto algo deve estar errado no código, mede a voltagem da bateria e não a montes, porque o rtc só precisa dela para continuar a funcionar se perder a alimentação principal, se volta ao estado estranho, a bateria deve estar morta.
Avr fanboy

Offline danuca

  • Mini Robot
  • *
  • Mensagens: 31
Re: Sistema Rega Automático com interface VB
« Responder #61 em: 13 de Setembro de 2012, 03:00 »
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

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

RTC_DS1307 RTC;

void setup () {
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now();
   
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
   
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
   
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
   
    Serial.println();
    delay(3000);
}



OUTPUT sem a pilha:


RTC is NOT running!
2012/9/13 2:49:16
 since midnight 1/1/1970 = 1347504556s = 15596d
 now + 7d + 30s: 2012/9/20 2:49:46

2000/1/1 0:0:0
 since midnight 1/1/1970 = 946684800s = 10957d
 now + 7d + 30s: 2000/1/8 0:0:30

2000/1/1 0:0:0
 since midnight 1/1/1970 = 946684800s = 10957d
 now + 7d + 30s: 2000/1/8 0:0:30

2000/1/1 0:0:0
 since midnight 1/1/1970 = 946684800s = 10957d
 now + 7d + 30s: 2000/1/8 0:0:30

2000/1/1 0:0:0
 since midnight 1/1/1970 = 946684800s = 10957d
 now + 7d + 30s: 2000/1/8 0:0:30


É mesmo estranho porque o primeiro print ele fica com a hora actual

Offline danuca

  • Mini Robot
  • *
  • Mensagens: 31
Re: Sistema Rega Automático com interface VB
« Responder #62 em: 13 de Setembro de 2012, 03:02 »
Senso: a bateria tem 3,2V por isso está boa :S

Offline danuca

  • Mini Robot
  • *
  • Mensagens: 31
Re: Sistema Rega Automático com interface VB
« Responder #63 em: 13 de Setembro de 2012, 03:39 »
Descobri o erro. Soldei mal a perna do GND, testei com o multimetro e vi que nao estavam em contacto. Agora todos os programas funcionam.

Mais uma vez obrigado pelas ajudas.

Cumps

Offline danuca

  • Mini Robot
  • *
  • Mensagens: 31
Re: Sistema Rega Automático com interface VB
« Responder #64 em: 13 de Setembro de 2012, 22:00 »
Pessoal, tenho outra dúvida. Já tenho o relógio a funcionar, as horas no Visual Basic, e consigo por a ligar um LED á hora que quiser.

Agora eu queria que passado x tempo, em x é dado pelo utilizador( ou seja pelo VB, tem uma textbox e um botao), o led desligasse, e simulasse o final da rega.

Alguém tem alguma ideia ?
Vou deixar os dois códigos que tou a usar:

VB:

Public Class Form1



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        SerialPort1.BaudRate = 9600

        SerialPort1.DataBits = 8

        SerialPort1.StopBits = IO.Ports.StopBits.One

        SerialPort1.Parity = IO.Ports.Parity.None

        SerialPort1.PortName = "COM7"






        Timer1.Enabled = True






    End Sub

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        SerialPort1.Open()
        'SerialPort1.Write("a")
        'System.Threading.Thread.Sleep(250)
        Dim i As String = SerialPort1.ReadLine
        Label1.Text = i
        ListBox1.Items.Add(i)

        SerialPort1.Close()




    End Sub


    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SerialPort1.Open()
        SerialPort1.Write(TextBox2.Text)

        SerialPort1.Close()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SerialPort1.Open()
        SerialPort1.Write(TextBox1.Text)

        SerialPort1.Close()
    End Sub
End Class

-------------------------------//-----------------------------------

ARDUINO:#include <Wire.h>       // Para a EEPROM 24LC256 DS1621 DS1307 e dispositivos i2c

#define HORAS 2         // S?o os mesmos valores que est?o definidos no ficheiro ds1307.pde, os de offset
#define MINUTOS 1
#define SEGUNDOS 0   
#define DIASEMANA 3     // QUAL ? O MELHOR N?MERO? :D
#define DIAMES 4 
#define MES 5
#define ANO 6
int horas2;
int minutos2;
int segundos2;
int ledPin=13;
int HORAS3;
int MINUTOS3;
int SEGUNDOS3;

void setup(void){
  Serial.begin(9600);   // Valor pequeno mas bom, eu gosto assim :D
  Wire.begin();         // Iniciar liga??es i2c - IMPORTANT?SSIMO
  //ds1307setup();        // Se for a primeira vez que o RTC ? iniciado/ligado esta chamada ? necess?ria para o RTC come?ar a contar
  pinMode(ledPin,OUTPUT);
  digitalWrite(ledPin,LOW);
}

void loop(){
  printData();
  delay(1000);
 
  if(Serial.available()>0)
        {
            char horas[3] = { Serial.read(), Serial.read(), ':'};
            Serial.read();
            horas2=atoi(horas);
            Serial.println(horas2);
            char minutos[3] = { Serial.read(), Serial.read(), ':'};
            Serial.read();
            minutos2=atoi(minutos);
            Serial.println(minutos2);
            char segundos[3] = { Serial.read(), Serial.read(), ':'};
            Serial.read();
            segundos2=atoi(segundos);
            Serial.println(segundos2);
           
           
         }
    if(horas2==HORAS3 && minutos2==MINUTOS3 && minutos2==SEGUNDOS3){
    digitalWrite(ledPin,HIGH);}
       
 
}


void printData(){
  int rtc[7];
  ds1307get(rtc,true);
  Serial.print("Sao:    ");
  HORAS3=rtc[HORAS];
  Serial.print(HORAS3,DEC);
  Serial.print(":");               
  MINUTOS3=rtc[MINUTOS];
  Serial.print(MINUTOS3,DEC);
  Serial.print(":");               
  SEGUNDOS3=rtc[SEGUNDOS];
  Serial.print(SEGUNDOS3,DEC);
  /*switch(rtc[DIASEMANA]){
    case 0:Serial.print("   Domingo"); break;     
    case 1:Serial.print("   Segunda-feira"); break;
    case 2:Serial.print("   Ter?a-feira"); break;
    case 3:Serial.print("   Quarta-feira"); break;
    case 4:Serial.print("   Quinta-feira"); break;
    case 5:Serial.print("   Sexta-feira"); break;
    case 6:Serial.print("   Sabado"); break;
    default:Serial.print("   DiaDeSaoNunca-feira");
  }*/
  Serial.print(" dia ");
  Serial.print(rtc[DIAMES]); 
  Serial.print(" de");
    switch(rtc[MES]){
    case 0:Serial.print(" Janeiro"); break;     
    case 1:Serial.print(" Fevereiro"); break;
    case 2:Serial.print(" Marco"); break;
    case 3:Serial.print(" Abril"); break;
    case 4:Serial.print(" Maio"); break;
    case 5:Serial.print(" Junho"); break;
    case 6:Serial.print(" Julho"); break;
    case 7:Serial.print(" Agosto"); break;
    case 8:Serial.print(" Setembro"); break;
    case 9:Serial.print(" Outubro"); break;
    case 10:Serial.print(" Novembro"); break;
    case 11:Serial.print(" Dezembro"); break;
    default:Serial.print(" Oufevulhosto");   
  }
  Serial.print(" de ");
  Serial.println(rtc[ANO],DEC);
}


Cumps