İstek Geldikçe Yanıp Sönen Led

Başlatan neslihann, 09 Eylül 2014, 14:29:46

neslihann

Merhaba arkadaşlar,

Bilgisayar Mühendisliği öğrencisiyim. Staj yaptığım yerde benden bir devre kurmamı istediler. Donanım konusunda çok yeniyim pek bilgim yok bu yüzden sizden yardım almak istedim.

Bir uygulama olacak (C#) led yakmak için ve söndürmek için bir buton olacak. Led yak butonuna basıldığında USB portuna bağlı bulunan LED lamba yanıp sönecektir. Operatör gelip bir tuşa dokunarak lambayı yine yazılım ile kapatabilecektir.

Başlangıç seviyesinde olan birisi olarak, hangi donanım elemanlarını kullanmamı önerirsiniz. Nasıl bir yol izlemem gerekir yardımcı olabilirseniz sevinirim.

Hepinize iyi çalışmalar dilerim.

muhendisbey

Bilgisayar mühendisleri daha çok fez pandayı seviyorlar.
https://www.ghielectronics.com/catalog/product/256

Bana kalırsa hazır çin çakması varken Arduino kullansanız da iş görür. Hangi modeli olduğu çokta fark etmez. (Arduino Mini hariç, programlamak için rs232 dönüştürücü gerekli)
Biraz uğraşayım ileri de de uğraşırım derseniz PIC ile de tasarlarsınız, ancak programlayıcı alacaksınız, devre kuracaksınız (elektronik bilginizin olmadığını kabul ediyorum) sizin için zor. O nedenle hazır geliştirme kartı tercihi yapmanızda fayda var.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

XX_CİHAN_XX

Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

trgtylcnky

#3
Arduinodan direk gir bence seri porttan gönderirsin bilgiyi. 2 günde öğrenip yaparsın hatta örnek kod bile bulabilirsin.

mesaj birleştirme:: 10 Eylül 2014, 01:46:17

http://www.instructables.com/id/Interfacing-your-arduino-with-a-C-program/

neslihann

Yanıtlar için teşekkürler. Yardımlarınız ve yaptığım araştırmalar sayesinde bir şeyler yapmaya başladım. Ancak proteus ta nasıl deneyebilirim çalışıp çalışmadığını. Hex dosyasını yüklüyorum ancak c# ile olan bağlantı nasıl kurulmalı. c# led yak butonuna tıkladığım zaman hata alıyorum port bağlantı noktası yok şeklinde.

c# kodu

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;

namespace OrderSystem
{
    public partial class Form1 : Form
    {
        SerialPort SeriPortum;
        public Form1()
        {
            InitializeComponent();
            SeriPortum.PortName = "COM7";
            SeriPortum.BaudRate = 9600;
            SeriPortum.Open();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            byte[] right = new byte[1];
            right[0] = 0xAA;
            SeriPortum.Write(right, 0, right.Length);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            byte[] wrong = new byte[1];
            wrong[0] = 0xBB;
            SeriPortum.Write(wrong, 0, wrong.Length);
        }
    }
}


Arduino gibi bir board kullanmamamı sölediler. O yüzden devreyi kendim kurmam gerekiyor.

#include <18F4550.h>
#fuses HS
#use delay (clock=20000000)
#use rs232 (baud=2400, xmit=pin_c6,rcv=pin_c7, parity=N, stop=1)

char data;

void main()
{
   while(1)
   {
      data = getch();
      if(data == 0xAA  )
      {
         output_high(pin_d0);
         delay_ms(100);
         output_low(pin_d0);
         delay_ms(100);
      }
      else
      {
         output_low(pin_d0);
      }
   }
}







Kabil ATICI

Burada öğrenmek gereken seri bağlantı noktası COM7 mi?
Proteus da bu tür işler yeni başlayanlar için bir karışıktır. İşin içine sanal port olayı girer.
yapabiliyorsan gerçek devre ile uğraş. Çünkü birde tekrar devre üzerinde yapacağım diye uğraşman gerekecek.

illede proteus ile yapacağım dersen, proteusdaki aletin adı compim. Bunlar arasında bağlantıyı oluşturmak için Virtual Seri Port Emulatör. Bu program Gerçek port ile compim portu arasında bir ilişki oluşturmak için kullanılır.
Örnek olarak
Software em C# enviando dados para microcontrolador emulado no Proteus
ambar7

neslihann

Teşekkür ederim proteusta denemeyi başardım. Fakat yazdığım kod çalışmıyor. Seri porttan gelen veriyi yanlış okuyorum muhtemelen. Sizce hatam nedir yardımcı olabilir misiniz?

muhendisbey

#use rs232 (baud=2400, xmit=pin_c6,rcv=pin_c7, parity=N, stop=1)

SeriPortum.BaudRate = 9600;

kodu biryerden çarparken dikkatli olmak lazım. Ayarlar uyuşuyor mu diye bir bakmalı.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

neslihann

Kodu çarpmaya değil anlamaya çalışıyorum şuan amacım sadece projeyi yapmak değildir bilginiz olsun öğrenmek istiyorum. O kısımlar üzerinde hep oynama yaptım zaten.

Tekrar söylüyorum benim amacım kesinlikle başkalarının çalışmalarını kendi çalışmam olarak göstermek değildir. Öğrenirken illa ki örnekler üzerinden gidilir örnekleri inceleyip nasıl çalıştığını anlamaktı amacım yine de teşekkürler uyarın için.

muhendisbey

İbaremde kızma yok. Yanlış anlama, ancak kodları bir yerden alırken bulurken, en azından ayarlar kısmını kontrol etmelisin. Yoksa bulduğun kodun anlamı olmaz, çalıştıramazsın.
Baud rate, parity biti, iletişim bit sayısı, stop biti parametreleri önemli. Aynı değerde olmalı.
Seri iletişimde RX-TX'e TX-RX'e bağlanır. R=Receive (Almak) T=Transmit(İletmek)
Yani bir iletene bir alan gerek, bağlantısı bu şekilde yapılır.
Seri iletişimde string işini çözmüş değilim, bir türlü yapamadım namussuzu ancak char komutları ile (yani karakter göndererek) iletişim sağlamak kolay.
String niye zor?
MCU'larda doğrudan String işleyene rastlamadım. Bir dizi oluşturup bu diziye aldığın her bir karakteri yazman gerek. Sonrada dizi içerisinde substring komutlarıyla arama yapmalısın. Ancak şu ana kadar stabil bir çalışmam olmadı.

PIC datasheet okunarak programlanan bir işlemci, yani işlemciye uygun programı yazarsın. 18F için yazdığın program doğrudan 16F serisinde çalışmaz yada 12F serisinde çalışmaz.

Çalışmanda başarılar.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

neslihann

Kusura bakmayın bende yanlış anlaşıldığımı düşünerek o şekilde cevap yazdım. Teşekkür ederim bilgiler için çok teşekkürler. Sizden gelen bilgilerle herşey daha mantıklı hale geliyor  :)