c# kullanarak devreyi nasıl kontrol edebilirim. |
24 Mesajlar | 3.611 Okunma |
C# kodları şu şekilde:
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;
namespace ArduinoLedYakma
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SeriPort.PortName = “COM7″;
SeriPort.BaudRate = 9600;
SeriPort.Open();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Opacity = 0;
timer1.Enabled = true;
timer1.Start();
}
private void KirmiziBtn_Click(object sender, EventArgs e)
{
SeriPort.Write(“k”);
}
private void MaviBtn_Click(object sender, EventArgs e)
{
SeriPort.Write(“m”);
}
private void BeyazBtn_Click(object sender, EventArgs e)
{
SeriPort.Write(“b”);
}
private void SondurBtn_Click(object sender, EventArgs e)
{
SeriPort.Write(“s”);
}
private void Animasyon1Btn_Click(object sender, EventArgs e)
{
SeriPort.Write(“1″);
}
private void Animasyon2Btn_Click(object sender, EventArgs e)
{
SeriPort.Write(“2″);
}
private void timer1_Tick(object sender, EventArgs e)
{
this.Opacity += 0.04;
label1.Text = label1.Text.Substring(1) + label1.Text[0].ToString();
}
}
}
Burada tek yaptığımız iş seri porttan arduinoya karakter göndermek. Gönderdiğimiz karakterlere göre arduino ledlerin yanıp sönmesini sağlayacak. Arduino üzerinde LEDleri digital girişlere bağlayınız. Burada da Arduino içerisine yazacağımız kodları veriyorum. Açıklamaları yorum satırı şeklinde yaptım:
//Ledlere digital pinleri bağlıyoruz
int Led1=22;//Mavi
int Led2=24;//Beyaz
int Led3=26;//Kırmızı
int Led4=28;//Mavi
int Led5=50;//Mavi
char GelenKarakter;//C# arayüzünden gelecek karakteri tanımladıkvoid setup()
{
Serial.begin(9600);
pinMode(Led1,OUTPUT);
pinMode(Led2,OUTPUT);
pinMode(Led3,OUTPUT);
pinMode(Led4,OUTPUT);
pinMode(Led5,OUTPUT);
//Ledleri çıkış olarak tanımladık
}
void loop()
{
if(Serial.available() > 0)
{
GelenKarakter = Serial.read();//C# arayüzünden gelen karakteri okuduk
if(GelenKarakter == ‘k’)//GelenKarakter “k” ise kırmızı ledi yak
{
digitalWrite(Led3, HIGH);
}
else if(GelenKarakter == ‘m’)//GelenKarakter “m” ise mavi ledi yak
{
digitalWrite(Led1, HIGH);
digitalWrite(Led5, HIGH);
digitalWrite(Led4, HIGH);
}
else if(GelenKarakter == ‘b’)//GelenKarakter “b” ise beyaz ledi yak
{
digitalWrite(Led2, HIGH);
}
else if(GelenKarakter == ‘s’)//GelenKarakter “s” ise ledleri söndür
{
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
digitalWrite(Led3, LOW);
digitalWrite(Led4, LOW);
digitalWrite(Led5, LOW);
}
else if(GelenKarakter == ’1′)//GelenKarakter “1″ ise ledlerı 500 ms aralıklarla sırayla yak
{
for(int i=0; i < 5; i++ )
{
digitalWrite(Led5, LOW);
digitalWrite(Led1, HIGH);
delay(500);
digitalWrite(Led1, LOW);
digitalWrite(Led2, HIGH);
delay(500);
digitalWrite(Led2, LOW);
digitalWrite(Led4, HIGH);
delay(500);
digitalWrite(Led4, LOW);
digitalWrite(Led3, HIGH);
delay(500);
digitalWrite(Led3, LOW);
digitalWrite(Led5, HIGH);
delay(500);
}
}
else if(GelenKarakter == ’2′)//GelenKarakter “2″ ise 300 ms aralıklarla ledleri yak, söndür
{
for(int k=0; k < 7; k++)
{
digitalWrite(Led1, HIGH);
digitalWrite(Led2, HIGH);
digitalWrite(Led3, HIGH);
digitalWrite(Led4, HIGH);
digitalWrite(Led5, HIGH);
delay(300);
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
digitalWrite(Led3, LOW);
digitalWrite(Led4, LOW);
digitalWrite(Led5, LOW);
delay(300);
}
}
}
}
hakansariman adlı üyeden alıntı
http://toanbily.blogspot.com.tr/2010/02/serialport-rs-232-serial-com-port-in-c.htmlhakansariman adlı üyeden alıntı
http://bolubeyi.net/c-arayuzuyle-arduinoda-led-yakma-animasyon-olusturma.html