[CODE lang="csharp" title="C#"]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;
namespace Kronometre
{
public partial class Form1 : Form
{
public string zaman;
public bool bağlantı_durumu = false;
public int monitör_yükseklik = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;
public int monitör_genişlik = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
string[] ports = SerialPort.GetPortNames();
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (var item in ports)
{
port_combo.Items.Add(item);
}
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}
private void Form1_Resize(object sender, EventArgs e)
{
backgroundWorker2.RunWorkerAsync();
}
private void button1_Click(object sender, EventArgs e)
{
if (port_combo.SelectedItem == null)
{
MessageBox.Show("Bağlantı Noktası Seçiniz", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
serialPort1.PortName = port_combo.SelectedItem.ToString();
try
{
serialPort1.Open();
}
catch (Exception)
{
MessageBox.Show("Bağlantı Noktasını Kontrol Ediniz", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (serialPort1.IsOpen)
{
port_control.Text = "Bağlı";
while (true)
{
string okunan_değer = serialPort1.ReadLine();
try
{
int sure = Convert.ToInt32(okunan_değer);
sure = sure / 10;
int salise = sure % 100, saliseOnlar = salise / 10, saliseBirler = salise % 10;
int saniye = (sure % 6000) / 100, saniyeOnlar = saniye / 10, saniyeBirler = saniye % 10;
int dakika = sure / 6000, dakikaOnlar = dakika / 10, dakikaBirler = dakika % 10;
krono_durum_label.Text = "Başlatıldı";
zaman = (dakikaOnlar.ToString()) + (dakikaBirler.ToString()) + ":" + (saniyeOnlar.ToString()) + (saniyeBirler.ToString()) + ":" + (saliseOnlar.ToString()) + (saliseBirler.ToString());
if (Convert.ToInt32(okunan_değer) == 7)
{
krono_durum_label.Text = "Durduruldu";
break;
}
}
catch (Exception)
{
}
main_label.Text = zaman;
}
}
}
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
if (WindowState == FormWindowState.Maximized)
{
main_label.Location = new Point((monitör_genişlik / 4) - 50, (monitör_yükseklik / 4) - 50);
main_label.Font = new Font("Mongolian Baiti", 200, FontStyle.Bold);
}
if (WindowState == FormWindowState.Normal)
{
main_label.Location = new Point(0, 250);
main_label.Size = new Size(650, 160);
main_label.Font = new Font("Mongolian Baiti", 112, FontStyle.Bold);
}
}
private void button2_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
krono_durum_label.Text = "Hazır";
port_control.Text = "Bağlı Değil";
main_label.Text = "00:00:00";
}
}
}
[/CODE]
[CODE lang="cpp" title="Arduino"]#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int mz80 = 7 ;
int reset_but = 8 ;
int reset_pin = 10 ;
long tBaslangic=0;
int durum=0;
long anlikSure=0;
bool kronometre_aktif = false ;
void setup()
{
Serial.begin(9600);
digitalWrite(reset_pin,HIGH);
pinMode(reset_pin,OUTPUT);
pinMode(reset_but,INPUT);
pinMode(mz80,INPUT);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Kronometre !");
lcd.setCursor(0,1);
while(true)
{
if(digitalRead(mz80) == 0)
{
tBaslangic=millis();
durum = 1;
lcd.clear();
break;
}
}
}
void loop()
{
switch(durum)
{
case 1 :
{
Serial.println(anlikSure);
anlikSure=millis()-tBaslangic;
SureGoster(anlikSure,0,1);
if(digitalRead(mz80) == 0 && anlikSure > 500)
{
durum = 2 ;
}
break;
}
case 2 :
{
SureGoster(anlikSure,0,1);
Serial.println(7);
durum = 3 ;
}
case 3 :
{
if (digitalRead(8)==1)
{
digitalWrite(reset_pin,LOW);
}
}
}
if(durum == 1)
{
lcd.setCursor(0,0);
lcd.print("Baslatildi");
}
if(durum == 2)
{
lcd.setCursor(0,0);
lcd.print("Durduruldu");
}
}
void SureGoster(long sure,int kursorSutun,int kursorSatir)
{
sure=sure/10;
int salise=sure%100, saliseOnlar=salise/10, saliseBirler=salise%10;
int saniye=(sure%6000)/100, saniyeOnlar=saniye/10, saniyeBirler=saniye%10;
int dakika=sure/6000, dakikaOnlar=dakika/10, dakikaBirler=dakika%10;
lcd.setCursor(kursorSutun,kursorSatir);lcd.print(dakikaOnlar);
lcd.setCursor(kursorSutun+1,kursorSatir);lcd.print(dakikaBirler);
lcd.setCursor(kursorSutun+2,kursorSatir);lcd.print(":");
lcd.setCursor(kursorSutun+3,kursorSatir);lcd.print(saniyeOnlar);
lcd.setCursor(kursorSutun+4,kursorSatir);lcd.print(saniyeBirler);
lcd.setCursor(kursorSutun+5,kursorSatir);lcd.print(":");
lcd.setCursor(kursorSutun+6,kursorSatir);lcd.print(saliseOnlar);
lcd.setCursor(kursorSutun+7,kursorSatir);lcd.print(saliseBirler);
}
[/CODE]