pcbway

Pic ile PC\'den Karta Metin Gönderme (Resimli)

Başlatan nizma, 26 Nisan 2010, 01:39:38

nizma

Arakadaşlar derdimi resim çizerek anlatayım dedim. Resimdeki gibi PC \'de basit bir metin yaz yolla programı olcak. Bir picli RF verici modüllü verici kart. O seri porta bağlanır sanırım. En kolayı öyle oluyo galiba. Ve resimdeki gibi 1 ve 2 numaralı alıcı kart olacak. Amaç: PC\'den yazdığım metni istediğim karta yollayarak o kartın ekranında göstermek. Nasıl bir yol izleyebilirim sizce...??? Yardımcı olacak arkadaşlara şimdiden teşekkür ederim.


neural

Bu iş için benim görüşüm Picler ve Pc arasında kullanabileceğin bir protokol geliştirmelisin. İki cihaz arasında yapacağın bu bağlantıda adresleme kullanarak yapabilirsin.
Yani örnek vermek gerekirse,

ÖNEK, ADRES, VERİ, SONEK ....

şeklinde olabilir. Alıcı cihazlar için ADRES verisi kendisindeki adres değeri ile eşlediğinde VERİ değerini işleyip, ekrana yazdırabilirsin. Alıcıların adreslerini aynı yaparsan bir seferde farklı cihazlarada mesaj göndermiş olursun.
Alıcıların adreslerini DIP anahtar ile yapabilirsin. Örnek vermek gerekirse 4 bit DIP anahtarla 2^4 = 16 farklı cihaza mesaj gönderebilirsin.

ASPGraphic

Blog sayfasında buna benzer bir devre mevcut. İsterseniz şu linki bir inceleyin sanıyorum sizin işinizi görecektir.

https://320volt.com/pic-ile-pc-kontrollu-rf-duyuru-panosu/

Başarılar..
İnsan hayalleriyle yaşar. www.32bit-core.com

nizma

16 Mayıs 2010, 14:55:11 #3 Son düzenlenme: 16 Mayıs 2010, 19:17:54 nizma
https://320volt.com/pic-ile-pc-kontrollu-rf-duyuru-panosu/
Bu linkte ki projeyi yapmaya karar verdim. Ama anlamadığım basit ama önemli noktalar var. Mesela max 232 için bazı yerlerde gördüğüm kadarıyla VS+ ya bağlı cap\'ın diğer ucu 5v\'a bağlanmış.  Burda ise toprağa çekilmiş. İkinci olarak bazı yerlerde 1u cap kullanılmış bu linkte 22u kullanılmış. Bunlar çok önemli değil mi? O yüzden mi farklı? Üçüncü olarak farklı birşey daha gördüm. Bu linkte Tx\'i T1IN\'e verip çıkıştada T1OUT\'tan çıkış alınmış. Bazı yerlerde ise Tx T1OUT \'tan giriyor. Yani tam tersi ? Bu bağlantıları anlamadım.

nizma

16 Mayıs 2010, 18:17:46 #4 Son düzenlenme: 16 Mayıs 2010, 19:36:09 nizma
https://320volt.com/pic-ile-pc-kontrollu-rf-duyuru-panosu/

Devrenin alıcı+verici isis çizimi VE pic yazılımları.

pas= nizam

:D

Arkadaşlar projeyi çizdim. Kodları da yazdım yalnız kontrol yazılımı hariç.  Onuda yazınca eklerim. Yazılımları hex\'e çevirdim yani derledim ve görevlerine göre Piclere attım. Ama isiste simülasyonda hata veriyor.

Ben yazdığım kodları burayada yapıştırayım. Çünkü arkadşın eklediği kodlar resim halindeydi ...

Dinleyici Pic için
\'****************************************************************
\'*  Name    : UNTITLED.BAS                                      *
\'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
\'*  Notice  : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
\'*          : All Rights Reserved                               *
\'*  Date    : 16.05.2010                                        *
\'*  Version : 1.0                                               *
\'*  Notes   :                                                   *
\'*          :                                                   *
\'****************************************************************
INCLUDE \"Modedefs.Bas\" \'Seri iletisim icin gerekli
TrisA=%00000
TrisB=%00000010        \'B1 giris digerlerini cıkıs yaptık

PortA= 0
PortB= 0

i VAR BYTE
j VAR BYTE
GELEN VAR BYTE [32]

Bas:

FOR i=0 TO 32
    Gelen = \" \"   \'Diziyi bosalt
NEXT

SERIN2 PORTB.1 ,3313 , [wait(\"Q\",\"Q\",\"Q\",\"Q\",45,45,45,45), STR Gelen\\32\\\".\"]

        PortB.2=1     \'Kesme sinyali gonder
        PortB.2=0

       
        SEROUT PortB.3,3313, [\"SENDING\"]
       
        FOR i=0 TO 32
       
        SEROUT2 PortB.3,3313, [\"Q\",\"Q\",\"Q\",\"Q\",45,45,45,45] \'Kontrol bitleri
       
        FOR j=0 TO 32
       
        SEROUT2 PortB.3,3313, [Gelen [j]] \'Harf harf yolla
       
        NEXT
       
        NEXT
       
        PORTB.4=1  \'LED yak
       
        PAUSE 700
       
        PORTB.4=0
   
GOTO BAS

END


Kaydırma İşlemi için Kullanılan Pic için

\'****************************************************************
\'*  Name    : UNTITLED.BAS                                      *
\'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
\'*  Notice  : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
\'*          : All Rights Reserved                               *
\'*  Date    : 16.05.2010                                        *
\'*  Version : 1.0                                               *
\'*  Notes   :                                                   *
\'*          :                                                   *
\'****************************************************************
INCLUDE \"Modedefs.Bas\" \'Seri iletisim icin gerekli

DEFINE LCD_EREG PORTB \'LCD enable biti b.3
DEFINE LCD_EBIT 3
DEFINE LCD_DREG PORTA \'LCD data bitler a.0 a.1 a.2 a.3
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORT B \'lcd rs BİTİ b.4
DEFINE LCD_RSBIT 4

ON INTERRUPT GOTO Kesme \'sayet kesme olursa KESME adli etikete git
OPTION_REG=%10000000 \'Dahili Pll Up direncleri aktif
INTCON=%10010000
TRISA=%00000 \'a portu tamamen cikis oldu
PORTA=0
TRISB=%00000101 \'b.0 ve b.2 giris oldu
PORTB=0

ADR VAR BYTE
A VAR BYTE
B VAR BYTE
C VAR BYTE
D VAR BYTE
DURUM VAR BYTE
GELEN VAR BYTE[32] \'gelen dizisi icin 32 yer ayir
i VAR BYTE \'for dönguleri icin degiskenimiz

GOSUB GIRIS

BASLA: \'kaymaya basla

    GOSUB KAYDIR

GOTO BASLA

GIRIS:

    DURUM=11
    LCDOUT $FE, 1,\"*R-F KAYAN YAZI\"
    LCDOUT $FE, $C0, \"***ONUR BILGE***\"
   
    PAUSE 2000
    lcdout $FE,1 \'ekranı temizle
   
    FOR i=0 TO 32
        GELEN=\" \"
       
    NEXT
   
RETURN

KAYDIR:
 
 IF DURUM=00 then
    gosub Eprom_yaz   \'Eprom_yaz adresindeki altprogramı calistirir
 DURUM=11
 ENDIF   
 
 GOSUB Eprom_oku      \'\'Eprom_oku adresindeki altprogramı calistirir
 
 for ADR=143 to 128 step -1
    LCDOUT $FE, 1
    LCDOUT $FE, ADR
   
 for A=0 to 30
 
    lcdout GELEN[A]
   
    next
   
    LCDOUT $FE, $C0, \"               \"
   
    pause 400
   
    next
   
 for B=1 to 30
   
    LCDOUT $FE,1
         
   for C=B to 30
       
        lcdout gelen [C]
       
        next C
       
        pause 400
       
        next B
       
        LCDOUT $FE,1
       
        pause 200
        adr=143
        A=0
        B=1
        C=1
       
        return
       
Eprom_oku:
 
    for D=0 to 32
        write D,GELEN [D]
        pause 10
    next
        PORTB.1=1
        pause 400
       
        PORTB.1=0
        pause 100
       
        PORTB.1=1
        pause 400
       
 RETURN
 
Eprom_yaz:
 
  for D=0 to 32
  write D, GELEN [D]
  pause 10
 
  next
 
 PORTB.1=1
 pause 400
 PORTB.1=0
 PAUSE 100
 PORTB.1=1
 PAUSE 400
 PORTB.1=0
 RETURN
 
 DISABLE
 
 KESME:
 
     LCDOUT $FE,1
     LCDOUT $FE,1 , \"GUNCELLENIYOR\"
     LCDOUT $FE,$C0, \"LUTFEN BEKLEYIN\"
     
     SERIN2 PortB.2, 3313, [wait(\"Q\",\"Q\",\"Q\",\"Q\",45,45,45,45), STR Gelen\\32\\\".\"]
     
     PORTB.1=1
     PAUSE 800
     
     PORTB.1=0
     LCDOUT $FE,1
     LCDOUT $FE,1 , \"***GUNCELLEME***\"
     LCDOUT $FE,$C0, \"***TAMAMLANDI***\"
     DURUM=00
     PAUSE 800
     
     LCDOUT $FE,1
     
     INTCON.1=0 \' RB0/INT bayragi silindi
     
     adr=143
        A=0
        B=1
        C=1
       
     resume \' geldigin yere don
     
     enable
     
     end
     
     



Nerede bu hata acaba? Kaydırmada Görevli olan Pic\'in yazılımında hata çıkıyor. 5 error var. \"Redefinition of VAR\"  hatası var. Ama yazılımda da tanımlanmayan bi değer göremiyorum ben.

nizma

Arkadaşlar buda visual basic kodları

\'****************************************************************
\'*  Name    : UNTITLED.BAS                                      *
\'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
\'*  Notice  : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
\'*          : All Rights Reserved                               *
\'*  Date    : 16.05.2010                                        *
\'*  Version : 1.0                                               *
\'*  Notes   :                                                   *
\'*          :                                                   *
\'****************************************************************
Dim Say As Duble
Dim Metin As String
Dim KSay AS Integer
Dim i, j AS Integer
Dim Dizi(30) As String

Public Function Kaydir()
\'Yazıyı alt kısımda kaydir
Picture1.Cls
Metin = Text1.Text2
Say = Say - 10
If Say < (0-Picture1.TextWidth(Metin)) then Say = Picture1.ScaleWidth
Picrue1.CurrentX = Say
Picrue1.Print = Metin

End Function

Private Sub Command1.Click()
\'Portu Aç
On Error Resume Next
MSComm1.PortOpen = False
MSComm1.ComPort = Comco1.ListIndex + 1
MSComm1.PortOpen = True

Shape1.BorderColor = &HFF&
Shape1.FillColor = &HFF&
Exit Sub
End IF
Shape1.BorderColor = &HFF00&
Shape1.FillColor = &HFF00&
End Sub

Private Sub Command2.Click()
On Error Resume Next
If Text1.Text = \"\" Then
Msgbox \"Lütfen Gönderilecek Metni Giriniz\", 64, \"Gönderilecek Metin Girilmedi\"
Exit Sub
End If

\'Diziyi Boşalt
For i=0 TO 30
Dizi (i) = \" \"
Next

\'Metni Karakterlere Ayırıp Diziye at
For i = 0 To 30
Dizi(i) = Mid(Metin, i+1, 1 )


\'Eger metin 31 karakterden küçükse boşluk ilave et
If Len(metin) < 31 Then
For i = o To 30
Dizi(i) = \" \"
Next i
End If


MSComm1.Output = \"SENDING\" \'Alicinin veri geldigini anlamasi icin cikistan sinyal
\'Baglanti Kurulamazsa

ıf Err.Number = 8018 then
Msgbox \"Verici Cihaz İle Bağlantı Kuramadı\", 64 , \"Seri Portu Kontrol Edin\"
Exit Sub
End If

For j=0 To 1
MSComm1.Output = \"QQQ---\" \'Başlık verisini yolla
For i=0 To 30

MSComm1.Output = Dizi(i) \'Mesajı yolla
Next i
Next j
End Sub

Private Sub Command3.Click()
frmAbout.Show
End Sub

Private Sub Command4.Click()
Unload Me
End
End Sub

Private Sub Command5.Click()
On Error Resume Next
MSComm1.PortOpen = False
Shape1.BorderColor = &HFF&
Shape1.FillColor = &HFF&
End Sub

Private Sub Form_Load()
Combo1.ListIndex = 0
KSay = 31
End Sub

Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
MSComm1.PortOpen = True
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
Key = 4875

\'Karakter Sayısı 31i Geçmesin

If KeyAscii= 8 Then Exit Sub \' Backspaceye basılmssa esgeç
If KeySay = 0 Then
KeyAscii = 0
Exit Sub
End If
End Sub

Private Sub Timer1_Timer()
Kaydır
End Sub

Private Sub Timer2_Timer()
\'Kalan Karakter Sayısını Yaz
KSay = 31 - Len(Text1.Text)
Label1.Caption = \"Karakter Sayısı\" & KSay
End Sub

nizma

17 Mayıs 2010, 03:31:58 #6 Son düzenlenme: 17 Mayıs 2010, 03:32:59 nizma
Çıkan Uyarıda Şu;



Büyük boy için link;
http://i1005.hizliresim.com/2010/5/17/813.jpg

nizma


Flatron

19 Mayıs 2010, 11:48:20 #8 Son düzenlenme: 19 Mayıs 2010, 11:49:46 Flatron
Merhaba
Sanki simülasyon programınızın ayarlar kısmında hatalar var gibi (yada bazı dosyalarınız eksik gibi)
\"Redefinition of VAR\" hatasının anlamı ,Aynı değişken birden fazla tanımlanıyor anlamına gelir.Aynı değişken için birden fazla tanımlama nerede var diye kontrol edin.
En alttaki hata \"too many iterations without converage\" için
http://www.electro-tech-online.com/general-electronics-chat/26609-simulation-error-2.html
buradaki mesajları okuyun belki sizdekide bunlardan biri ile çözülür

Kolay Gelsin


nizma

Devreyi gerçekleştirdim. Ama bi sorun var. LCD\'yi besleyen regüle devresindeki 7805 çok fazla ısınıyor. Nasıl bir önlem alabilirim acaba ????

 kullandığım LCD= http://www.lynx-dev.com/index.php?option=com_virtuemart&page=shop.product_details&flypage=flypage.tpl&product_id=61853&Itemid=2&lang=en