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?
#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
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