Arduino & C#. NET HaberleÅŸmesi
Volkan Kanat // 3 Mart 2014 // 165 yorum // kategori: Arduino Programlama, Arduino ProjeleriHerkese merhabalar! Arduino Türkiye ekibi olarak Arduino ile farklı programlama dillerinin haberleşmesi üzerine yazdığımız yazılarımıza devam ediyoruz. Yepyeni ve farklı bir Arduino projesiyle sizlerle birlikteyim. Daha önce pek değinmediğimiz C# .NET ve Arduino üzerine bir uygulama hazırladım. Umarım beğenirsiniz.
Arduino ile haberleşen arayüzler tasarlamak ve bu arayüzlerden fiziksel dünya ile etkileşim kurmak en çok aranılan konulardan biri haline gelmiştir. Microsoft firmasının geliştirdiği .NET dil ailesinin en güçlü programlama dili olan C# .NET, arayüz tasarlama konusunda en uygun dillerden bir tanesidir.
Yeni bir konu olduÄŸu için en basit uygulama olan “LED yakıp söndürme (Blink)” uygulamasını gerçekleÅŸtirdim. Ä°lerleyen günlerde bu konuya olan ilginin arttığına inanırsam daha karmaşık uygulamaları sizlerle paylaÅŸacağım.
Uygulamamızda C# .NET ile “LED Yak” ve “LED Söndür” isimli iki butona bastığımızda LED yanması ve sönmesi durumlarını kontrol edeceÄŸiz. Arduino ile Seri HaberleÅŸme iÅŸlemlerinde kullanılan Serial Monitor penceremize harici olarak “1” ve “0” bilgilerini gönderdiÄŸimizde LED yanması ve sönmesi durumlarını etkileyeceÄŸiz. Farklı bir uygulama olduÄŸu için isterseniz hiç vakit kaybetmeden baÅŸlayalım 🙂
Arduino Kodları
Arduino kartımızın üzerinde hazır bulunan 13 nolu LEDin durumunu Serial Monitor penceresinden gönderilen “1” deÄŸerine göre HIGH, “0” deÄŸerine göre LOW yapan kodlarımızı yazalım.
C# .NET Arayüzü Oluşturma
C# .NET’de arayüzümüzü oluÅŸturuken “LED Yak” ve “LED Söndür” isminde iki buton kullanacağız. Butonlardan birine bastığımızda diÄŸerinin pasif olmasını saÄŸlayacağız. Ayrıca arayüzümüzde LED Yak butonuna bastığımızda “LED Yanıyor!” ve LED Söndür butonuna bastığımızda “LED Sönük!” ifadelerinin yazdırılacağı bir TextBox kullanacağız.
C# .NET Kodları
Seri Port Bilgilerini Tanımlama
Bu adımda Arduino kartımızı bilgisayarımıza tanıttığımıza Aygıt Yöneticisi üzerinden görebildiğimiz port ismini, seri haberleşme hızını belirtip portu kullanıma açan kodlarımızı yazıyoruz.
Form Kapandığında Seri Portu Kapatma
C#. NET üzerindeki form kapandığında seri portu kapatan kodlarımızı yazıyoruz.
LED Yak Butonu
LED Yak Butonuna bastığımızda veya Arduino Serial Monitor penceresinden “1” bilgisi geldiÄŸinde, text kutusuna “LED Yanıyor” yazdırıp LED Söndür butonunu pasif yapan kodlarımızı yazıyoruz.
LED Söndür Butonu
LED Söndür Butonuna bastığımızda veya Arduino Serial Monitor penceresinden “0” bilgisi geldiÄŸinde, text kutusuna “LED Sönük” yazdırıp LED Yak butonunu pasif yapan kodlarımızı yazıyoruz.
C# .NET arayüzündeki butonlar veya Serial Monitor pencersinden gönderdiÄŸimiz “1” ve “0” bilgilerine göre 13 nolu pine ait LEDin durum deÄŸiÅŸtirdiÄŸini görebilirsiniz 🙂
Bir Arduino Türkiye yazımın sonuna geldim. Konu ile ilgili yorumlarınızı bekliyorum.
Kendinize iyi bakın! Arduino‘suz kalmayın!
Etiketler: arduino > c#
Güzel yazı için teÅŸekkürler. Arduino devre kartına program kodunu yükledikten sonra, LED’in kontrolünü Arduino IDE’yi kullanmadan sadece Form1 penceresiyle saÄŸlaya biliyor muyuz?
LED Yakma ve Söndürme işlemlerini Arduino IDE kullanmadan sadece C# üzerinde hazırladığımız butonlarla yapabiliriz.
led yakma ve söndürme işlemlerini arduino kullanmadan sadece c# ve rs232 kullanarak nasıl yapabiliriz.Bununla ilgili bir kaynak önerebilirmisiniz
rs232 deki rts cts gibi kontrol pinlerini c#ile set veya clear yaparak o pinlere bağlı bir ledi surebılırsınız.
merhaba başlangıç için çok iyi olmuş. Bluetooth veya rf haberleşme kullanarak c# üzerinden bir proje paylaşma şansınız var mı?
Şu an için yok.
Merhaba , yazılarınızı takip ediyorum. C# ‘a giriÅŸ yaptığınız için teÅŸekkürler. Umarım devamı gelir.
Teşekkürler.
Öncelikle konu hakkında sunduğunuz bilgiler için teşekkürler. Yalnız arayüz programını çalıştırdığımda system.nullreferenceexception hatası alıyorum ve sanırım bu hatanın kaynağı olarak PortName kısmını gösteriyor. Bu değeri aygıt yöneticisinden bakarak söylediklerinize uygun biçimde giriyorum. Sorunu nasıl aşacağım konusunda yardımcı olabilirseniz, ya da PortName dışında herhangi bir alternatif kullanım varsa söyleyebillirseniz sevinirim.
Uygulama arayüzünüze Araç Kutusu’ndan SerialPort nesnesini ekledikten sonra hatanız düzelecektir.
Teşekkür ederim sorun çözüldü, dikkatsizlikten arayüze eklememişim.
verdiğiniz örnek için teşekkür ederim elinize emeğinize sağlık
visual studio 2010 ile örneği yaptım başarı ile çalıştı
Teşekkürler.
Hocam paylaşım için çok teşekkür ederim. Fark ettiğim kadarıyla eğer cihaz bilgisayara bağlı değilse, bağlantı gönderdiğimiz port yok ise .exe dosyamız hiç açılmıyor. Bunu engellemek için nasıl bir şey yapmalıyız bilginiz var mı? Port kontrolünü form açıldıktan sonra yapsın ve port boş ise uyarı döndürsün gibi mesela.
buradaki örnekte uygun durumdaki portları kontrol ederek çalıştırmayı gerçekleştirmişler. yardımcı olabilir.
http://playground.arduino.cc/Csharp/SerialCommsCSharp
Merhaba OÄŸuzhan,
Port kontrolünü form açıldıktan sonra yapmak istiyorsan;
serialPort1.PortName = ?COM13?;
serialPort1.BaudRate = 9600;
serialPort1.Open();
kod bloklarını yukarıda anlattığım gibi,
public Form1() {
InitializeComponent(); }
kod bloğundan sonra yazmamalısın, onun yerine buton1 ve buton 2?ye ait kod bloklarının içerisine yazmalısın. Seri port boş olduğunda uyarı döndürüp sistemi çalıştırmayacaktır.
emeğinize sağlık. Örnek için tşk ederim
Arduino pc ye baÄŸladığımda görmedi. Driverlarını yükledim ama hala hata veriyor.”Board at COM1 is not available” hatası alıyorum . yardımcı olursanız sevinirim.?
Merhaba Ä°lhan,
Bilgisayarının Aygıt Yöneticisi kısmında Arduino çeÅŸidinin baÄŸlı olduÄŸu COM adresi ile Arduino-> Tools-> Serial Port üzerindeki Arduino’nun baÄŸlı olduÄŸu COM adreslerinin aynı olmasına dikkat etmelisin.
hocam ben bunu yaptım çalıştırdım ama şöyle bir sorun var ben gelen mesela sıcaklık değerini label ın üzerine nasıl yazdırabilirim 2 gündür ugraşıyorum ama hala bütün c# kodlarını denedim olmuyor bi yardımcı olabilirseniz çok sevinirim
Merhaba Mustafa,
Sıcaklık sensörü uygulaması farklı bir uygulama ancak eÄŸer herhangi bir label üzerine yazı yazdırmak istiyorsan labelismi.Text=”ifade”; ÅŸeklinde bir kod satırı yazman gereklidir. ÖrneÄŸin; label1.Text=sıcaklıkDegeri; gibi…
hocam tan anlayamadım ama ben label1.text=seriport.read().tostring(); yazıyorum olmuyor yanlış nerde
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
bool LEDDurum;
public Form1()
{
InitializeComponent();
serialPort1.PortName = (“COM12”);
serialPort1.BaudRate = 9600;
serialPort1.Open();
progressBar1.Value = 100; // PORT AÇIKKEN PROGRES BAR YEŞİL OLUYOR
serialPort1.DataReceived += serialPort1_DataReceived; //PORT AÇIKKEN DEĞERİ OKUMASI İÇİN
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string line = serialPort1.ReadLine();
this.BeginInvoke(new LineReceivedEvent(LineReceived), line); // PORTTAN DEĞERİ OKUMAK İÇİN
}
private delegate void LineReceivedEvent(string line);
private void LineReceived(string line)
{
//What to do with the received line here
textBox1.Text = line; // PORTTAN OKUNAN DEĞERİ TEXTBOX1 İÇİNE YAZDIRMAK İÇİN
}
private void button1_Click(object sender, EventArgs e) // PORTA 1 DEĞERİ GÖDERMEK İÇİN
{
serialPort1.Write(“1”);
textBox2.Text = “LED YANIYOR”;
button1.Enabled = false;
button2.Enabled = true;
LEDDurum = true;
}
private void button2_Click(object sender, EventArgs e) // PORTA 0 DEĞERİ GÖNDERMEK İÇİN
{
serialPort1.Write(“0”);
textBox2.Text = “LED SÖNDÃœ”;
button1.Enabled = true;
button2.Enabled = false;
LEDDurum = false;
}
private void button3_Click(object sender, EventArgs e) //PORTU KAPATMAK İÇİN KOD
{
serialPort1.Close();
progressBar1.Value = 0;
textBox1.Text=(“PORT KAPALI”);
textBox2.Text=(“PORT KAPALI”);
}
private void button4_Click(object sender, EventArgs e) // PORTU AÇMAK İÇİN KOD
{
serialPort1.PortName = (“COM12”);
serialPort1.BaudRate = 9600;
serialPort1.Open();
progressBar1.Value = 100;
serialPort1.DataReceived += serialPort1_DataReceived;
}
}
}
merhabalar mustafa ben volkan kanatın verdiği örnek koda internette bulduğum bir kod örneği ile arduniodan lm 35 ısı sensörünün değerini textboxa yazdırdım aynı zamanda led yakmak için 1 ve 0 değeri gönderdim yukardaki kod alıntıdır .
hocam bana bu konuda yardım edermisiniz arduino esplora üzerindeki lm35 sensörü ile okuduğum sıcaklık değerini c# yazdırmam gerekiyor
hocam yazdıramadım bir türlü herşeyi deniyorum ama
Volkan Bey,
Böyle güzel bir örneği paylaştığınız için çok teşekkür ederim. Gayet açık bir örnek elinize sağlık.
Teşekkürler.
hangi arduino kartını kulanıcaz
İstediğiniz Arduino kartını kullanabilirsiniz. Ben örnek için Arduino Mega kartını kullandım. Ancak diğer kartlarla da bu işlemi gerçekleştirebilirsiniz.
[…] dahili ledi yani 13 numaralı pine baÄŸlı leddir. Bu programı yazarken esinlendiÄŸim çalışma buradadır. Ben oradaki kodları kullanırken C#’ın sürümünden kaynaklanan bazı aksaklıklar […]
kolay gelsin volkan bey çalışmanız çok iyi. benim sorum ÅŸu benim tez ile ilgili ben bir ateÅŸ (mum alevi) gibi bunu kameraya gösterecem ve ısı sensöründede var yanıtı alacam kameraya rgb deÄŸriyle oynayarak gösterdim ama ısı sensörü ile c# ile bu taktikle nasıl yapabilirim bide kamerada görünecek ve ısı sensörüde evet dedimi yangın var yazacak bunu nasıl yaabilirim bir yardımcı olurmusunuz teÅŸekkürler…
Merhaba
SerialPort1.Open kısmında
unauthorizedAccessException was unhandled hatası alıyorum
ek olarak Access to the port COM8 is denied diyor.
Lütfen cevaplarınızı bekliyorum.
Teşekkürler.
visal studioyu açarken yönetici olarak çalıştır ile aç. (run administrator). ben de de aynı hata vardı. cüzeldi. sen de olur mu bilmem.
Merhabalar c#’a bu yazı ile baÅŸladım bu yüzden size çok teÅŸekkür ediyrorum. yazınızda verdiiniz kodları yazarken serialPort1 kısımlarının altını çiziyor ve hata veriyor sebebi ne olabilir?
SS:
tarık bey aygıt yöneticisinde bağlandığınız port numarası ile ardunio ve c# da ki port numarasının aynı olmasına dikkat ediniz
volkan bey ben aynısını gerçekleştirdim ancak çalışmadı. acaba sizler ilk yaptığınızda nelere dikkat ettiniz ? portlar tamam hiç bir şekilde bir hata almıyorum ancak c#dan ledi yak dediğim zaman ardunio da sadece rx ışığı yanıyor. acaba hız ile alakalı bir problem olabilir mi
Volkan bey sayın hocam bu örneği visual basic içinde uygulayabilirmisiniz anlatımınız biraz daha açık olursa çok seviniriz. Teşekkürler
gercekten bu aciklayici ders icin tesekkur ederiz. Devamini bekleriz hocam. . .
Paylaşımınız için teşekkürler C# ile arduinoya nasıl serial port ile bilgi göndere bilineceğini çok iyi ve anlaşılabilir sade bir şekilde anlatmışsınız.
Merhabalar benim sorum ÅŸu ÅŸekilde olacak;
c# ta yapmış olduğum bi yazılımı ardunio r3 modelinde bağlı olan dokunmatik ekran modülünde çalıştırmak istiyorum. Ardunio yu almış bulunmaktayım ve yazılım işlerimide bitirmiş olup sadece yükleme aşaması kaldı. Ardunio ile hiç bir bilgim yok nasıl bi yol izlemeliyim yardımlarınız için şimdiden teşkkürler..
c# ile pc nin seriportundan yolladığınız komutları arduinoda yorumlayıp arduino ekranına yazabilirsiniz veya arduino ile okuduğunuz analog voltaj değerlerini, anahtar on/off durumlarını alıp c# ile yazdığınız pc deki programa yollayıp orada yorumlayıp birşeyler yapabilirsiniz. burada volkanın yazdığı c# kodunu ve arduino kodunu inceleyip birlikte nasıl çalışıyor anlamanız yeterli. arduinoya program yükleme için şu anlatımla başlayabilirsiniz http://arduinoturkiye.com/arduinoya-baslarken-neler-gerekli/ ayrıcı şuradaki örnekler arduinoda yapacağınız ilk denemeler olmasında fayda var http://arduinoturkiye.com/arduino-ogrenirken-yol-haritasi-1
C#’dan seri port yoluyla 0-255 arası sayıları string olarak gonderıyorum , arduinodan verileri alıp string to int iÅŸlemi yapıyorum ancak istedıgım gıbı calısmıyor, sanıyorumki string to int iÅŸleminde hatam var yardım edermisiniz ?
şuradaki örnekte direk int olarak okumuş http://arduino.cc/en/Serial/read aklıma gelen c# içinden string olarak yollarken sıfır değerini yollamak mümkün olmaz çünkü string değerin sonu zaten chr(0) ile biter sıfır değerini içine koyduğunuzda string fonkisyonu bunu string sonu olarak algılar bişey yollayamaz, bence binary olarak c# içinden veri yollamayı deneyin şu örnek belki işinizi görür http://stackoverflow.com/questions/22077910/sending-a-binary-byte-stream-over-serial-using-c-sharp-and-net-4-0
Merhabalar,
C# da yazmış olduğum bir web servisle.mobile cihazlar ve arduino arasında wireless shield ile bağlantı kurabilirmiyim?Ben kurabileceğimi düşünüyorum fakat daha mantıklı ve hızlı bir çözüm de olabilirmi?İnternette baktığım projelerde genelde aynı ağda haberleşiyor mobil cihazla arduino yada bluetooth shield var.Benim yapmak istediğim ikiside internete sahipse ben arduinoyu nikaraguadan bile yönlendirebilirmiyim.
lokal networkte rooter veya modemde NAT servisin konfigürasyonunu yaparsanız her turlu tcp/ip iletiÅŸimi mümkündür. arduinodadan internete doÄŸru yapılacak trafikte herhengi bir modem ayarına gerek yok, ama dış networkden lokala akış dediÄŸim gibi IP Forwarding ile yapılabilir…
Merhabalar kodu c# üzerinden denedim olmadı sadece kırmızı led yakıcaktım ama herneyse kaç gündür internet bakıorumm ama arduino başlangıç setinde olan dc motoru C# üzerinden ileri geri yapmak istiorum şuanda tek istedigim bu ve nası yapıcagımı merak ediorum açıkcası yazdıgım kodla motor ileri çalışıyor C# dışında peki ileri geri yapmam mümkünmü digital 12 ye baglıyorum bir ucu dieri ise 5 v seri haberleşmeyle ardunio programında çalıştırdım 1üerindentekrar bastım durdu peki geri hareketi olurmu?açıkcası konuyu farklı biryerde yazdım özür dilerim bu konuda ama kaç gündür uğraştıgım için cevabı burdan öğrenirim umudu ile yazdımm buraya çok teşekkürler şimdiden
hocam merhaba arduino due de haberleşme kesmesini kullanarak veri alımını yapmak istiyorum. ana döngüde yazınca sıkıntı yok fakat kodu kesmede yazınca kesmeye girmiyor. nerde hata yapıyorum
kod :
#include
Servo myservo;
int val1=90;
String x;
void seri() // KESME
{
if (Serial.available())
{
int a =Serial.read();
if (a==’1′)
{
digitalWrite(13,HIGH);
x=Serial.readStringUntil(‘,’);
val1=x.toInt();
}
else if (a==’0′)
{
digitalWrite(13,LOW);
val1=0;
}
}
}
void setup()
{
attachInterrupt( 0, seri,RISING);
Serial.begin(9600);
pinMode(13,OUTPUT);
myservo.attach(8);
}
void loop()
{
myservo.write(val1);
}
hocam örnekteki gibi c# ile arduinodaki ledi on/off yapıyorum fakat arayüz proğramı kapatıp tekrar açtığımda butonun son durumu gelmiyor bunu nasıl çözebilirim.(butona paralel txbox1 ve resim eklidir).
merhaba hocam ben arduino ile QTRC ile 8 li sensör grubu ile çizgi izleyen yapmaya çalışıyorum. arduinonun “QTRSensors.h” kütüphanesini kullanıyorum. fakat örneklerde beyaz zemin üzerine siyah yolu izleyen bir örnek var. ben tam tersini istiyorum bnunu içinde “QTRSensors.h” içerisinde şöyle bir açıklama var.
“By default, this function assumes a dark line (high values)
// surrounded by white (low values). If your line is light on
// black, set the optional second argument white_line to true. In
// this case, each sensor value will be replaced by (1000-value)
// before the averaging.
int QTRSensors::readLine(unsigned int *sensor_values,
unsigned char readMode, unsigned char white_line)”
benim yapmam gereken kütüphane içerisindeki whiteline =1 mi yapmak. yada programda bir değişiklik mi yapmak. bunun için bir opsiyon vermiş sanırım.
Merhaba burada C# dan veri gonderdiginizde veri arduino nun usb baglantı kablosu uzerinden mi gitti.
Yoksa Seri haberlesmek icin rs232 gibi herhangi bir seri haberlesme cihazi mi kullandiniz ?
Yazı için teşekkürler. Çok faydalı oldu.
Devamını bekliyoruz 🙂
Öncelikle paylaşım için çok teÅŸekkürler. Arduino konusunda henüz pekte tecrübe sahibi deÄŸilim. Paylaşımınız tek bir led kontrolü için. Benim sorum ise aynı port üzerinden 1’den fazla led’in kontrolünü nasıl yapabiliriz ?
Charlieplexing olarak baÄŸlarsanız bir pine birden fazla led baÄŸlamak mümkün… örnekte 5 arduino pinine 20 led baÄŸlamak mümkün http://www.instructables.com/id/Controlling-20-Leds-from-5-Arduino-pins-using-Cha/step2/Charlieplexing-The-theory/
Merhaba ben arduino ile c# arasında seriport kurarak analog giriş değerleri almak istiyorum.çok araştırdım ama istediğim bilgileri bulamadım nasıl yapabilirim
arduinodan analog değerleri analoread ile alıp serial.print ile dışarıya vereceksiniz. yukarıda c# ile nasıl okunuyor anlatılmış.
öncelikle yazı için teşekkürler. benim şöyle bi sorum olacak c# da tanımladığımız bir double yada float değeri arduinoya nasıl aktarabiliriz. yaptığım araştırma sonunda c#da degeri stringe çevirmemiz gerektiğini anladım fakat bu değeri arduinoda tekrar nasıl float yada double cevirebiliriz. bi sitede söyle bi kod buldum:
int lf = 10; // Linefeed in ASCII
String myString = null;
Serial myPort; // Serial port you are using
float num;
void setup() {
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.clear();
}
void draw() {
while (myPort.available() > 0) {
myString = myPort.readStringUntil(lf);
if (myString != null) {
print(myString); // Prints String
num=float(myString); // Converts and prints float
println(num);
}
}
myPort.clear();
}
denedim ancak çalışmıyor. şimdiden teşekkürler
Merhabalar,çok basit bir sorunum var. serialPort1.Portname yazdığımda serialPort1 yazımında hata olduğunu söylüyor. Nasıl çözeceğime yardım ederseniz çok sevinirim.
c# da kullandığınız formda serialPort1 nesnesi olması lazım , varsa bilgisayarınızda arduino baÄŸlı olduÄŸunda bir seriport belirir arduino idede de saÄŸ altta bunun adı görünür. orada görünen portu c# ta mesela serialPort1.Portname=”COM49″ gibi yazacaksınız. gerçi program otomatik olarak ilk seri portu getiriyor deÄŸiÅŸkene ama arduino pcye aÄŸlıysa kodun çalışması lazım…
İlk öncellikle detaylı anlatımınız için teşşekürler,
Ben c#’den saat ve tarihi alıp 5110 ekranında yazdırmak istedim
fakat,şöyle bir hata alıyorum:”conversion from ‘int’ to ‘String’ is ambigous”
şimdiden yardımlarınız için teşşekür ediyorum.
int tipli değişkeni string değişkene direk eşitleyemezsiniz dönüştürmeniz lazım hata mesajını tercüme ettim
şununla dönüştür
String myString = String(n);
şurada daha fazla dönüşüm örneği var http://arduino.cc/en/Reference/StringConstructor
sorduğunuz konunun c# ile alakası yok konu dışı soruları forumdan sormanızda fayda var.
Merhabalar hocam öncelik olarak çok teÅŸekkür ediyorum bu bilgilerinizi bizimle paylaÅŸtığınız için benim bir sorum olacaktı Arduino’ya yeni baÅŸlamış bulunmaktayım bir sorum olacaktı. Arduino ile sinyal kesici bir makina yapmam mümkün mü acaba? Mümkünse ne kadar zamanımı alır, ve bunun için neler yapamam gerekli? Bir de uzun mesafeli istemiyorum 10-15 metre bile yeterli benim açımdan.
Merhabalar,
Arduino wifi modülü ile C# da yazdığımız arayüz ile led kontrolü yapmak nasıl olur acaba yardımcı olur musunuz bir türlü beceremedim?
normal zamanda c# ile bir tcp/ip uygulaması yazdıysanız hiç farkı yok.
Merhabalar Ben birkaç defa Arduino IDE’sini kurdum. Her kurulumdan sonra seri port COM numarasının bir artığını gördum bunu düzeltmenin bir yolu var mıdır? TeÅŸekkürler Kolay gelsin.
sistem windows ise comm numarasının değişmesi için her seferinde farklı bir usb porta takmışınız demektir. yada arduinonuz klonsa ve usb surucu değişiktir huyu suyu değişiktir onların. windowsda usb ye ayrılan com numarasını değiştirebilirsiniz aygıt ayarlarını kurcalayın
merhaba konuyla alakalı bi sorum var ben 50 ledi hangi datayla kontrol yapabilirim yani 1 ve 0 gibi degilde 50 ceşit yani yak söndür yapcamız için 100 adet dataya ihtiyacım var bunu nasıl yapabilirim
serialden led01=1 led01=0 led50=1 led50=0 şeklinde gelecek verileri ayrıştırısanız olur.
int led=2;//ledin bağlandığı pin
int led1=3;
int led2=4;
int led3=5;
int led4=6;
char data ;//pcden gelen veriyi saklayacak deÄŸiÅŸken
void setup()
{
Serial.begin(9600);
pinMode(led,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
}
void loop()
{
//serial buffera veri gelirse işlem yapılacaktır
if(Serial.available())
{
data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
if(data==’1′)
{
digitalWrite(led,HIGH);
Serial.println(“Led acik”);
}
else if (data==’0′)
{
digitalWrite(led,LOW);
Serial.println(“Led Kapali”);
}
if(Serial.available())
data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
if(data==’2′)
{
digitalWrite(led1,HIGH);
Serial.println(“Led1 acik”);
}
else if (data==’3′)
{
digitalWrite(led1,LOW);
Serial.println(“Led1 Kapali”);
}
if(Serial.available())
data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
if(data==’4′)
{
digitalWrite(led2,HIGH);
Serial.println(“Led2 acik”);
}
else if (data==’5′)
{
digitalWrite(led2,LOW);
Serial.println(“Led2 Kapali”);
}
if(Serial.available())
data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
if(data==’6′)
{
digitalWrite(led3,HIGH);
Serial.println(“Led3 acik”);
}
else if (data==’7′)
{
digitalWrite(led3,LOW);
Serial.println(“Led3 Kapali”);
}
if(Serial.available())
data=Serial.read();//gelen veriyi oku, sonucu data deÄŸiÅŸkenine aktar.
if(data==’8′)
{
digitalWrite(led4,HIGH);
Serial.println(“Led4 acik”);
}
else if (data==’9′)
{
digitalWrite(led4,LOW);
Serial.println(“Led4 Kapali”);
}
}
}
BAK abicim böle yazdım ama olmuyor serial pencereye led50=1 led50=0 mı yazıcaz abi ama olmuyo denedim ??
foruma da gelin yazın deneyen biri olmuştur
KAÇ DEFA YAZDIM KİMSE YARDIMCI OLMUYOR ACIKCASI
serialread ile herzaman 1 kararkter okuyabilirsiniz, kendinize önce bir format belirleyin diyelim “A” harfi yolladığınınzda bu led1=1 olsun “B” yolladığinizda led2=1 olsun bunu da bir sayisal deÄŸere dönüştürmek kolay “A” nın asc deÄŸeri decimal 65 tir gelen her harften 64 çıkarırsanız led i bulmuÅŸ olursunuz yapacağınız iÅŸ sadece ledi set etmek. “a” gelince buda led1=0 anlamında olsun. “a” nın asc deÄŸeri 97dir. böyle böyle kodu geliÅŸtireceksiniz. daha farkı bir formatta veri atayım diyoranız serialevent ile galan dataları biriktirip toplu halde içinden gelen string arataaksiniz. arduinoda en kötü yan insanları copy/past alışkanlığına itiyor kod yazma alışkanlığı saÄŸlamıyor. dünya bir proje bir diÄŸerine benzemiyor hepsi farklı, kod yazmayı c++ ile düşünmeyi öğrenmek kolay deÄŸil bol bol yazmak gerek baÅŸka türlü olmuyor.
Merhabalar,
Yazınız için teşekkür ederim.
Arduinoyu internet üzerinden kontrol etmek için nasıl bir yol izlenir.
sitedeki ethernet ve web sunucu konularını okuyabilirsiniz foruma da gelin sorun.
emeklerinizden dolayı herkese çok teşekkür ederim
c# tcp/ip ve arduino haberleşmesiyle ilgili bir örnek paylaşmanız mümkünmüdür veya paylaşılmış bir örnek varsa linkini paylaşırmısınız
projenizi sitenin forum kısmından da sorabilirsiniz. daha fazla katılımcı var orada.
merhabalar amacımız c# programı ile projemizi haberleştirmek projemiz ise mini sumo, mini sumo da 3 tane cisim algılayıcı sensör ( mz 80 ) var. sensörlerden bilgi geldiğinde c# ta göstermemiz gerekıyo bu konuda bana yardım edebilirmisiniz
Sitenin forumuna gelin
merhaba arkadaşlar keypedle 99 saniyeye kadar leed yakmayı nasıl yapabilirim??
hocam tek pencereli kapı alarm sistemi diye bir projem var programı yazdım isis de deneme yaptım normalde iki butondan birine bastığım zaman çıkış ledimin sürekli yanması gerekiyor ancak çıkış ledi sürekli yanıp sönmekte programın son parçacığı şu şekilde
TEST_PORTA
BTFCS PORTA, 0
BSF PORTB, 0
BCF PORTB, 0
BTFCS PORTA, 4
BSF PORTB, 0
BCF PORTB, 0
GOTO TEST_PORTA
END
Hocam yardımcı olursanız sevinirim
MERHABALAR.
LÃœTFEN BANA YARDIMCI OLUN.!!!!!!!!!!!!!!!!!!!!!!!!!
BEN ARDUINO UNO R3 LED YAKMA İŞLEMİ YAPMAK İSTİYORUM. COM PORTUM ÇALIŞMASINA VE KODLARIMIN DOĞRU OLMASINA RAĞMEN LED IŞIĞI NE YANIYOR NEDE SÖNÜYOR. COM PORTUNA 1 YAZDIRDIĞIMDA DEVREDEKİ KÜÇÜK IŞIK UFAK YANIYOR.AMA LED IŞIĞI YANMIYOR. IDESIYLE İŞLEM YAPTIĞIMDA HİÇ BİR SORUN YOK. ANCAK UYGULAMAMDA NEREDE HATA YAPIYORUM ACABA.
=============COM PORT ÖZELLİKLERİM=========
If Sp.IsOpen = False Then
Sp.PortName = “COM5” ‘change com port to match your Arduino port
Sp.BaudRate = 9600
Sp.DataBits = 8
Sp.Parity = Parity.None
Sp.StopBits = StopBits.One
Sp.Handshake = Handshake.None
Sp.DtrEnable = True
Sp.RtsEnable = True
OpenSP()
End If
===========YAZDIRDIÄžIM VERÄ°===========
LED YAKMAK İÇİN: Sp.Write(“1”)
LED SÖNDÃœRMEK İÇİN: Sp.Write(“0”)
arduinoda led blink ornegını yukledıgınızde calısıyor mu belkı devrenızı dogru kuramadınız.
merhabalar ben bir quadcopter projesi yapıyorum. sorunum şu motorlar çalışıyor ama herhangibir havalanma söz konusu değil. sorunu bulamadım acaba güç mü yetmiyor yoksa kodlardamı sıkıntı var. Yardımcı olursanız sevinirim.
Kodlar ÅŸunlar;
int STATE=2;
int Arming_Time=50;
int pin = 4;
int pin1 =5;
int pin2 =6;
int pin3 =7;
int Pulse=1000;
void setup()
{
pinMode (pin,OUTPUT);
pinMode (pin1,OUTPUT);
pinMode (pin2,OUTPUT);
pinMode (pin3,OUTPUT);
for(Arming_Time = 0; Arming_Time <500 ; Arming_Time+=1)
{
digitalWrite(pin,HIGH);
digitalWrite(pin1,HIGH);
digitalWrite(pin2,HIGH);
digitalWrite(pin3,HIGH);
delayMicroseconds(1100);
digitalWrite(pin,LOW);
digitalWrite(pin1,LOW);
digitalWrite(pin2,LOW);
digitalWrite(pin3,LOW);
delay (50-(Pulse/1000));
}}
void loop()
{
for(Pulse = 1150; Pulse <=1400; Pulse +=1)
{
digitalWrite(pin,HIGH);
digitalWrite(pin1,HIGH);
digitalWrite(pin2,HIGH);
digitalWrite(pin3,HIGH);
delayMicroseconds(Pulse);
digitalWrite(pin,LOW);
digitalWrite(pin1,LOW);
digitalWrite(pin2,LOW);
digitalWrite(pin3,LOW);
delay (50-(Pulse/1000));
}
for(Pulse = 1150; Pulse <=1150; Pulse -=1)
{
digitalWrite(pin,HIGH);
digitalWrite(pin1,HIGH);
digitalWrite(pin2,HIGH);
digitalWrite(pin3,HIGH);
delayMicroseconds(Pulse);
digitalWrite(pin,LOW);
digitalWrite(pin1,LOW);
digitalWrite(pin2,LOW);
digitalWrite(pin3,LOW);
delay (50-(Pulse/1000));
}
}
quadcopter teorisi bilmek gerekiyor pervane çapları küçük gelmiş olabilir. hız yeterli olmayabilir. hazır kodları kullanıp onları modifiye ederek daha kolay öğrenebilirsiniz sanırım. ayrıca yazının konusu dışında bir şey sormayın konu dağılıyor. foruma gelin istediğinizi sorun.
Hocam saygilar. Arayuzu indirdim fakat hala com’u bulamiyor acaba arayuzu arduinoda ki bi klasore mi atmamiz gerekiyi baya kurcaladim ama bulamadim
arayuz .net pcde çalışan program bır yere atmayın pc de calısÅŸtırın. yukarıdaki yazıyı dikkatlice adım adım yapın…
Merhabalar. Herkese kolay gelsin. Simdiki soracam soru biraz sacma gelebilir. Bana C# setup i nereden indirecegim link verebilecek arkadaslar var midir acaba? Arduino ile haberlesmesi icin hangi surum lazim vs bana tam calisan bir setup verebilir misiniz.
Tesekkurler
visual studyo express i indireceksin onun içinde gelir. 2013 versiyonu şuradan iniyor https://www.visualstudio.com/tr-tr/products/visual-studio-express-vs bilgisayarın eski ise 2010 versiyonu kurmanı öneririm. aslında yazıda nereden indirilebileceği yazılsa iyi olacakmış. herhangi bir microsoft masaüstü programcılık deneyiminiz yoksa size fazla gelebilir kurulumu ve proje oluşturma mantığı. piyasadan bir c# kitabı almanızı da tavsiye ederim.
Omer Hocam tesekkur ederim. Genelde bilgim var. Arduino`da akilli ev, her turlu robot projelerini yaptim. Simdi matlab , C# , proteus vs ile birlikte arduinoyu kullanmak istiyorum. Bunun icin bir oneriniz varsa Omer Bey duymak isterim :).
Tesekkur ederim.
Saygilarimla
en iyi bildiÄŸiniz yoldan gidin derim.
Tekrardan iyi gunler. Ben C# ve Arduino led yak sondur uygulamasi yapacaktim. yukarida belirtilmis C#.Net derken ben Microsoft Visual Studio uygulamasin acarken boyle bir (C#.net) secenegin goremedim. get microsoft azure sdk for .net ve asp.net web application geliyor onume. Hangi secenek uzerine kuracam projeyi onu gostereblr msnz. Tesekkurler. Kolay gelsin.
yukarıdaki linkte w studyonun bir çok versiyonu var siz web versiyonunu kurmuş olabilirsiniz desktop versiyonunu indirin kurun. ayarlarda kullanacağınız dil olarak c# seçeceksiniz.
Neden kaç aydır yeni c# projesi gelmiyor?
Led yakıp söndürme sıcaklık bilgisi alma gibi işlemleri yaptım ama daha ileri projelerde zorlanıyorum lütfen yeni yazılar gelsin.Teşekkürler.
foruma gelin c# projelerinizi oradan paylaşın. c# konularının yayınlanmasındaki amaç arduino ile dış ortamın ve bir kullanıcı arayüzün nasıl iliÅŸkilendirildiÄŸini anlatmak içindir, genelde hepsi seriport uzerinden gerçekleÅŸtiÄŸiden konunun tekrtarından baÅŸka bir ÅŸey olmuyor, diÄŸer ethernet wifi baÄŸlantılarını denemk istiyorsanız kullanıcının öncelikle tcp network bilgilerini geliÅŸtirmesi gerekiyor. yada bluetooth kullanmak istiyorsanız buradaki bilgiler yine iÅŸinize yarayacaktır. foruma bekleriz…
Teşekkürler Ömer hocam.
merhabalar programı çalıştırınca f5 e basıp serialPort1.Write(“1”); kısmını iÅŸaret edip An unhandled exception of type ‘System.InvalidOperationException’ occurred in System.dll hatası alıyorum çözümü bulamadım yardımcı olur musunuz?
Eğer kodunuzun tamamı olursa yardımcı olmaya çalışırım.
C# ile com port işlemleri buton okuma dan çevirilere kadar tecrübem var en kısa zamanda arduino alıp kendi kodlarımı yazmak istiyorum önerebileceğiniz bir model var mı?
uno ile baÅŸlarsanınız bir çok örneÄŸi çabucak çalıştırabilirsiniz…
Merhaba, ben programı yazıorum fakat bu hatayı alıyorum. ” Error 1 The type or namespace name ‘Form1’ could not be found (are you missing a using directive or an assembly reference?)” yardımcı olabilirmisiniz.Programda su sekilde ;
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;
namespace Ardunio_Kontrol
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName = “COM4”;
serialPort1.Open();
serialPort1.WriteLine(“e”);
serialPort1.Close();
label2.Text = “AÇIK”;
}
private void button2_Click(object sender, EventArgs e)
{
serialPort1.PortName = “COM4”;
serialPort1.Open();
serialPort1.WriteLine(“h”);
serialPort1.Close();
label2.Text = “KAPALI”;
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}
yazıdaki adımları uygulayın doğaçlama yapmayın olacaktır.
Elinize sağlık kısa ve öz olmuş.
visual studio 2013 kullanıyorum ardunio bağlı com7 üzerinden çalışıyor. c# kodlarım
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace LedyakLedsondur
{
public partial class Form1 : Form
{
private bool LedDurum = false;
public Form1()
{
InitializeComponent();
SerialPort1.PortName = “COM7”;
SerialPort1.BaudRate = 9600;
SerialPort1.Open();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (SerialPort1.IsOpen) SerialPort1.Close();
}
private void button1_Click(object sender, EventArgs e)
{
SerialPort1.Write(“1”);
textBox1.Text = “Led Yanıyor.”;
button1.Enabled = false;
button2.Enabled = true;
LedDurum = true;
}
private void button2_Click(object sender, EventArgs e)
{
SerialPort1.Write(“0”);
textBox1.Text = “Led Yanmıyor.”;
button1.Enabled = true;
button2.Enabled = false;
LedDurum = false;
}
}
}
Bu ÅŸekilde serialPort1 failed veriyor. Hatam nerede acaba ?
aynı portu baÅŸka bir cihaz veya arduino ide açıksa oradaki serialmonitor açmıştır o tutuyordur portu. kontrol edin…
Ömer bey teşekkür ederim hallettim. Ek olarak saat eklemek istiyorum mesela saat 20 ile 21 arasında led yanmasını istesem yapılabilir mi ? yardımcı olusanız çok sevinirim iyi akşamlar dilerim..
Öncelikle iyi çalışmalar sizden bir konu hakkında bilgi yardımı isteyecektim.Konu şudur ki üniversite projesi olarak arduino kullanarak akıllı ev projesi yapıcaz ve bu akıllı ev kontrollerini c# form ekranından gerçekleştireceğiz. Bunun nasıl olacağı hakkında fikir alış-verişinde bulunursanız sevinirim.
foruma gelin bu konudaki konulara bakın uzun uzun konuşulmuştu, bu tip projelerin envai çeşidini yapanlar vardı forumda.
Ben foruma göz attım lakin akıllı eve dair bir şey göremedim link vermeniz mümkün müdür hocam ? Teşekkürler.
direk foruma derdinizi yazın guzel bir başlık açın. kimse size sıfırdan proje yapmayacak ama yapmak istediğiniz çeyi yazın neler lazım nelere dikkat etmeniz lazım yazarlar. forumda yakın zamanda vardı akıllı ev projeji linkleri de vardı birisi kodlarını paylaşmıştı şimdi bende bulamadım ama geçen hafta yazışmıştı millet
Tesekkurler ıyı calısmalar ..
herkese hayırlı günler.
forumlarda hep “1” gönderirisen yansın “0” gönderirsen sönsün ÅŸeklinde bir uygulama var. benim yazdığım arduino kodunda “@?_herhangi bir metin” yazdığınız zaman bunu
if koÅŸulu içerisinde okutabiliyorsunuz.yani seri port ekranını açıp “led yansın” yazınca led yanıyor gibi. incelemeniz için arduino ver c# codlarını altta veriyorum .
////////////////////////////////////////////
////////////////////////////////////////////
int k = 0;
void setup()
{
Serial.begin(9600);
pinMode(13 , OUTPUT);
}
void loop()
{
String veri = “”; //string tipi deÄŸiÅŸken tanımlanıyor
// döngü başa her dönüşünde veri sıfırlanıyor
if(Serial.available()>0) // verilerin okunma kısmı
{
k = 1;
while(Serial.available()>0)
{
veri += char(Serial.read()); //her bir karakter tek tek okunup string
delay(10); // tipindeki veri değişkenine aktarılıyor
}
}
Serial.println(veri); // ne yazdığımızı görüyoruz.
if(k == 1) // okunmuş olan verinin karşılaştırıldığı kısım
{ // k nın 1 olma durumu bir tür anahtarlama gibi.
// seri haberleşmenin tamamlandığının göstergesi
if(veri == “naber”)
{
digitalWrite(13 , HIGH);
}
if(veri == “nassin”)
{
digitalWrite(13 , LOW);
}
k = 0;
}
}
Teşekkürler güzel çalışma devamını bekliyoruz sabırsızlıkla
hocam ben com portundan deÄŸil kendi yerel ağıma baÄŸlı arduinoyu baÅŸka ip deki bir bilgisayardan c# üzerinden led parlaklığını kontrol etmek istiyorum bu konu hakkında önereceÄŸiniz sayfalar varmı, veya kendi tavsiyeleriniz. paylaşırsanız sevinirim…
saydıklarınızdan hangisini yapabiliyrsunuz yani c# la bir bilgisayara bağlı arduino ile haberleştiniz mi bunu hallettiniz mi halletmediyseniz bu yazıyı okuyun. ardunuyu tcp/ip ile kullandınız mı kullanmadıysanız httpclient ve httpserver orneklerini araştırın bunlar aynı network uzerınde karşılıklı haberleşmeyi sağlar, led blink yaptınız mı hiç arduino orneklerındeki ledblink orneğini anlayarak deneyin. bahsettiğim konuları araştırdığınızda projenizi yapabilirsiniz. yapamadığınız nokta olursa foruma gelin şöyle yaptım şu kısmı çalışmadı diye sorun.
Hocam Arduino programlama diliyle yapılabilecek şeyler java ile de yapılabilir mi?
arduino bir donanım hardware aslında, donanımların kontrol edilebilmesi içinde driver/sürücülerinin kullanılan dil için yazılması lazım diyelim bir bellek kullanacaksınız ve bu bellek i2c veya spi pinlerini kullanıyor i2c 3 pin spi 4 pin kullanır ve kullanılacak dilin de realtime yazılması lazım yani zamanlamaların dikkate alınarak şu pini aç kapa şu pin tam hıgh durumdayken şu pini 2ms low yap gibi mantıklar var. java nın bir çok versiyonu var işlemci bazında çalışan versiyonlarını bulmak yetmez birde tum donanımı surecek kodları da yazarsanız java da kullanırsın zahmetine degecekse sen yazmaya başlayabılırsın en azından torunlarına bir mıras bırakmış olursun gerçi torunlar quantum bılgısayarlar kullanacak ama olsun ben hala gramafon dan gelen taş plak sesini severim 🙂
nalet olası bir zorluğu var hadi gidelim osman
Hocam iyi günler.Önce güzel anlatımınız için teşekkür ederim.Ben sorum şu olacak
c# da porta arduino bağlanıp bağlanmadığını nasıl kontrol edebiliriz.Örneğin progamı çalıştırdık ama arduino porta bağlamadık.Bu konuda programın bize hata mesajını vermesini nasıl sağlaya biliriz.
hata mesajı vermez siz belirli sure cevap gelmezse bağlı olmadıgını anlayacak tımeout rutını yazmanız lazım.
Merhaba;
COM8 üzerinden Arduino IDE ile 13 pinden LED i yakıyorum. Hiçbir problem yok. Fakat C# tarafından çalıştırınca LED yanmıyor. SerialPort’u toolbox tan da ekledim, Dinamik olarak koddan da eledim fakat çalışmıyor. Visual Studio ya herhangi bir ekleti eklemek mi gerekiyor?
yukarıdaki kodları adım adım uygulayın. çalışması lazım
C# .NET’de oldukça iyiyimdir, kodlarla ilgili herhangi bir problem yok. LedYak butonuna tıklatınca Arduino RX ışığı yanıp sönüyor. Komut geliyor yani. Fakat LED yanmıyor. Farklı bir makinadan, olmadı farklı bir Arduino’dan deneyeceÄŸim.
şöyle yapın arduinoda program yuklu çalışır iken serialmonitor e girin 1 yolladığınıznda ledin yanması lazım 0 yolladığınızda sonmesi lazım. daha sonra c# ile deneyin
Neden leddrum yaptiniz etkinligi kod icinde acaba farkli bir yerde mi kullandiniz
merhabalar arduıno ıcerısınde kod yazdım ve gelen verıyı bır degıskene arttım bu degıskenı formaplıcatıon ıle texbox ayazdırmak ıstıyorum bu konu ıle ılgılı bılgısı olan var sa maıl atabılırlermı işin içinde çıkamadım lutfen bı yardım edın ycl17041990@gmail.com
c# da textbox a bilgiyi nasıl yazdırıyorsan arduinodan okudugun değeride aynı şekilde yazdırıyorsun bir fark yok
0-99 #c ile arduino ile birlikte lcd de nasıl saydırabilirim hocam?
lcd ye sayı yazdırabildim diyorsun yani geriye c# tan bu sayıları yollayıp lcd de göstermek kalmış. foruma da gelin
rfıd uygulamsında textbox1.text=serialport1.readexiting(); ıle kartların kımlıklerını alıyorum ama if ıle kontrol etmek ıstıyorum if (texbox1.text !=null) dıyorum veya if (texbox1.text ==””) yapıyorum ama bır turlu ıcının bosmu degılmı oldugunu gormuyo ıcı doluysa tımer a start verıcem yardımcı olabılırmısınız
string uzunluğuna bakın 0 dan buyukse kullanın
mrb hocam c# de örneğim lm35 le ultrasonik sensörden tek porttan bilgi alışverişi yapan örnek bulamadım yapmak mümkunmu mesala textbox1den sıcaklık verleri texbox2den mesafe ölçumü gibi
bu orenği denedıkten sonra ek sensor ve cıhazlarla ılgılı konuyu forumdan sorun bakalım.
hocam bunun için arduinonun kablo ile bilgisayara bağlı olması gerekiyo ama bn kablosuz istiyorum aklımda ftp ile aynı mantıkta çalışması gereken bi işlem var nasıl yapabilirim
ftp ptotokolu yeteri kadar rahat olmaz. bu işleme en yakın yontem bluetooth modul ıle yapabilirsin hc05 modulleri araştır. daha hızlı ve esnek olmak istiyorsan da esp8266 lı wifi modulleri araştırın.
Merhabalar asp ile yaptığım bir siteyi sd card tan okumayı nasıl yapabilirim. HTML uzantılı dosyayı okuyabiliyorum ve internette de bir çok örnek html uzantılı dosyaları okuyarak yapılmış.Fakat aspx uzantılı siteyi okuyamıyorum. Yardımcı olursanız sevinirim.
arduino ıle ilgili kısmını nasıl halledıyorsunuz.
merhabalar omer bey konuyla alakasiz size bir sorum olacak elimde arduino leonarda var pc ile baglanti kuruyorum aygit yoneticisinden driverin ardiuno micro olarak goruyorum arduino ideyi acip com3 de arduino genineo micro yaziyor yani buraya kadar sorun yok is program yuklemeye geldigi zaman cihaz baglantisini kopariyor tekrar usb kablosunu cikarip takana kadar gormuyor ve bir turlu program attiramadim bilginiz varsa bana nasil yardimci olabilirsiniz.
arduino ide nin yeni versiyonunu yukleyın araçlar menusunde leonardo bordu gormenız lazım o şekilde deneyin. foruma gelin sorun sorun çıkarsa
Arduinonun ethernet ve sd kütüphanesini kullanarak kartı web server haline getiriyorum.Fakat burada karttan html olarak veya txt uzantılı herhangi bir dosyayı okuyup işlem yapabilirken aspx uzantısını okumuyor.Ve bu bsns çok mantıksız geldi.Türkçe kaynakların hiçbirinde çözümü bulamadım yabancı kaynaklarda da anlayabildiğim kadarıyla şuanlık birşey bulamadım.
aspx dosya formatının ıcerıgi binary formatsa ıcındekı kontrol karakterlerı okumayı engelliyordur. txt ve html içeriklerin oldugu dosyaları okutun. bu durum saçma değil arduıno web sunucunun sizden text karakter bazlı ve html e uygun formatta ıcerık beklemesınden kaynaklanmakta. buna uygun çalışın
Hocam zaten verileri okuyabiliyoruz ve dediğiniz şekilde olan işlemleri yapabiliyoruz ancak html sayfa üzerinden bu işlemler gerçekleşiyor. Amacımız aspx ile yaparak aynı işlemleri kullanıcı arayüzlü çalıştırmak. IOT uygulaması oluşturmak bunun için nasıl bir yol izlemeliyiz. Yani temel olarak arduino c++ c# bilgimiz var.
sizin aspx den kastınız nedir tam anlaşılmıyor. arduino icindeki index.html yerine blabla.aspx şeklinde mi çağırılsın istiyorsunuz
Kod kısmı da burası.
#include
#include
#include
byte mac[] = { 0xDE, 0xAE, 0x8E, 0x11, 0xBA, 0x11 };
IPAddress ip(192, 168, 1, 10); // Ip adresi
EthernetServer server(80);
File webArayuz;
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
Serial.println(“SD Kart baÅŸlatıldı…”);
if (!SD.begin(4)) {
Serial.println(“HATA !”);
return;
}
Serial.println(“SD Kart açıldı”);
if (!SD.exists(“arduinom.htm”)) {
Serial.println(“Dosya Bulunamadı…”);
return;
}
Serial.println(“Dosya bulundu…”);
}
void loop()
{
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == ‘\n’ && currentLineIsBlank) {
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“Connection: close”);
client.println();
webArayuz = SD.open(“arduinom.htm”); //burada sd karttaki dosya aciliyor
if (webArayuz) {
while(webArayuz.available()) {
client.write(webArayuz.read());
}
webArayuz.close();
}
break;
}
if (c == ‘\n’) {
currentLineIsBlank = true;
}
else if (c != ‘\r’) {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
internet üzerinde de bu kodlar kullanılmış fakat asp okutamadım.
asp tipi sayfalar windows .net web sunucların desteklediği bir formattır arduinı asp kodunu işlemez. arduinonun yaptığı sayfayı sunarken gereklı ufak bır kaç hesaplama yapıp bunları sunmaktır. uzaktan ıcındekı bır kaç sensorun verısını okumaya yarar daha basit düşünün bir ledin sensorun anahtarın durumunu akuyup bunu sayfada gosterecek projeler yapın.
Cevabınız için teÅŸekkürler. ” arduino icindeki index.html yerine blabla.aspx ÅŸeklinde mi çağırılsın istiyorsunuz” demiÅŸsiniz sercan arkadaşıma aynen dediÄŸinz gibi o ÅŸekilde gelsin istiyoruz ve blabla.aspx in içinden arduinoya veri gönderip almak istiyoruz.Cevabınızda anladığım kadarıyla arduino aspx uzantılı sayfadan veri alıp gönderemiyor.DoÄŸru mu anlamışım?
.NET web sunuc aspx sayfalar bolcana quikie kullanır(karşı tarafa işaretleme dosyaları yolar sayfa ıle beraber) bunları arduino desteklemez yada bu quikie dosyaları da alıp her seferınde sunucu okumak ıstedıgınde yollamanız lazım yada aspx tarafında bunları kullanmayan yollamayan basit sayfalar yapmaya çalışın, arduino aspx sayfayı açabılır tabiki ama bu mekanızmaları da bılıyor olmanız lazımdı.
Arduino kısmında
#include
#include
#include
// Ethernet shield için mac ve ip tanımlamaları
byte mac[] = { 0xDE, 0xAE, 0x8E, 0x11, 0xBA, 0x11 };
IPAddress ip(192, 168, 1, 10); // Ip adresi
EthernetServer server(80);
File webArayuz;
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
// initialize SD card
Serial.println(“SD Kart baÅŸlatıldı…”);
if (!SD.begin(4)) {
Serial.println(“HATA !”);
return;
}
Serial.println(“SD Kart açıldı”);
if (!SD.exists(“arduinom.htm”)) {
Serial.println(“Dosya Bulunamadı…”);
return;
}
Serial.println(“Dosya bulundu…”);
}
void loop()
{
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == ‘\n’ && currentLineIsBlank) {
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“Connection: close”);
client.println();
// arayüzü gönderme…
webArayuz = SD.open(“arduinom.htm”); //burada sd karttaki dosya aciliyor
if (webArayuz) {
while(webArayuz.available()) {
client.write(webArayuz.read());
}
webArayuz.close();
}
break;
}
if (c == ‘\n’) {
currentLineIsBlank = true;
}
else if (c != ‘\r’) {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
bu kodları kullanıyoruz ancak htm yerine aspx olarak çalıştıramıyoruz veya html içerisinde birden fazla sayfaya yönlendirme yaptığımızda site içeriği değişmiyor.
Çok teÅŸekkürler…
Merhabalar. Ben arduino ile seri haberleşme üzerinde uğraşıyorum. C# arayüzünü oluşturdum. Bağlantı sağlıyorum ancak şöyle bir sorun var. Eğer bilgisayara birden fazla arduino bağlanırsa ya da bir cep telefonu usb ile bağlanırsa program hangi girişi seçecek. Program seçtiğinde veri akışını durduracak arduino programı nasıl olmalı? Şimdiden teşekkürler.
c# tarafında comm port seçeçecek şekilde programı duzenlemenız lazım.
Evet ancak bu yeterli gelmiyor.Yani bluetooth telefon eşleşmesi gibi bir program yazmam gerekiyor. Örneğin bilgisayar a gönderecek arduinoda a değeri ile eşleşince arayüzde connected ifadesi yer alacak ve bağlantı sağlanacak. Ancak kodu yazamadım.
arduıno ılk bir bilgisayara bağlandığında işletim sistemi bir usb COMx port atar ve bır daha o değişmez o portu bir şekılde kaydedın ve diğer bağlantılara dikkat etmenıze gerek yok ayrıca c# da bağlantıyı kurmaya çalıştıgınızda usb bağlı değilse hata alacaksınız bu hata olmadığı zaman ıletişimi sağlarsınız.
İşte benim bulmam gereken de tam olarak bu. Ben bir arduino bir de cep telefonumu bilgisayara bağladım. Arduino ile haberleşerek bir connection olmasını istiyorum. Yani birbirini tanıyacakları bir kod yazmam gerekiyor.
şu şekilde arama yapınca bir çok ornek geliyor
https://www.google.com/search?q=c%23+check+serial+port+available&oq=c%23+comm+port+avai&aqs=chrome.5.69i57j69i58j0l4.18534j0j7&sourceid=chrome&ie=UTF-8
ÅŸu orenk basit deneyebilirsiniz
https://stackoverflow.com/questions/21490065/how-to-check-if-com-port-exist-before-opening-connection-in-visual-c-sharp
bu konular arduınoyu aşıyor devamını c# forumlarında ararsanız iyi olur.
çok teşekkür ederim iyi çalışmalar dilerim.
Merhabalar. Benim bir sorum daha olacak. Arduinoda titreşim değeri ölçüyorum sonuçlar 1000 200 gibi değerler çıkıyor. Bu değerlerin birimi nedir? Ben bunları mm/s cinsinden nasıl yazarım? Şimdiden teşekkür ederim.
nasıl olcuyorsunuz siz yaptıgınıza gore daha ıyı bılmenız lazım. tıtıreşim degerını nasıl olcuyorsunuz
sw-420 titreşim sensörü ile ölçüyorum.
oncelikle sordugunuz sorunun yazının konusu ıle ilişkili olmasını tercih edin c# haberleşmesi ile alakası olmayan bir konuyu burada sormmayın forumu kullanın.
sorunuza gelince
şuradaki orneğe göre http://www.himix.lt/arduino/arduino-and-sw-420-vibration-sensor/
pulsin fonksiyonu ile ölçüyor.
https://www.arduino.cc/en/Reference/PulseIn
pulsin fonksiyonu bir pine gelen sinyalin microsaniye olarak geniÅŸliÄŸini/suresini verir.
ÅŸurada sensorun bilgileri de mevcut
http://www.himix.lt/arduino/arduino-and-sw-420-vibration-sensor/
şuradada tepedeki linkteki orneği koyayım
// Watch video here: https://www.youtube.com/watch?v=235BLk7vk00
/* Vibration sensor connected to Arduino pins as follows:
Arduino Vibration Sensor
D9 DOut
GND GND
+5V VCC
D13 Indication LED
*/
int ledPin = 13;
int EP =9;
void setup(){
pinMode(ledPin, OUTPUT);
pinMode(EP, INPUT); //set EP input for measurment
Serial.begin(9600); //init serial 9600
// Serial.println(“———————-Vibration demo————————“);
}
void loop(){
long measurement =TP_init();
delay(50);
// Serial.print(“measurment = “);
Serial.println(measurement);
if (measurement > 1000){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
}
long TP_init(){
delay(10);
long measurement=pulseIn (EP, HIGH); //wait for the pin to get HIGH and returns measurement
return measurement;
}
kullanılan sensor ıse bir tup içindeki bilye titreştikçe iki ucu kontak ucu kısa devre etmesıne sebep olur ve bunu olcerek tıtreşim hakkında bılgı sahıbı oluruz.
titreşim suresınce sinyal alırsınız değişik değerler olacaktır kucuk değerler hafif titreşimler yuksek değerler daha şiddetli titreşim olarak düşünebilirsiniz ayrıca sensorun duruş pozizsonu sarsıntıyı alış yönü ile ilişkilidir buna dikkat edin darbenın veya etkini geliş yönüne göre sensorun pozisyonunu ayarlayın.
SESNORUN OLCU BIRIMI MICROSANIYE DIR. YANI KONTAKLAR KAÇ MIKRASANIYE KISA DEVRE OLMUŞ ONU OLÇMÜŞ OLUYORSUNUZ.
son söz: proje araştırmanızda kullanılan tum sensor ve kodları ıyıce ınceleyın tum ıp ucları zaten kodun içinde mevcut işleriniz çabuk bıter o zaman.
iyi çalışmalar,
Arduino ile rfid kart okuyucudan aldığım kart bilgisini database e kaydedip bir yemekhane sistemi oluştırmak istiyorum yardımcı olabilir misiniz?
Arduino kodlarımda sıkıntı yok C# ve database sıkıntım var.
foruma gelin sorun benzer şeylerın peşinde olanlar vardı belkı sıze yardımcı olan çıkar.
Arkadaşlar giriş pini olara belirlediğim pinlerden sürekli çıkış olarak 5 volt alıyorum sebebi nedir acaba. Yardımcı olabilirseniz memnun olurum
ornek kodunuzu paylaşır mısınız.
Selam hocam elimde rs232 ile girişli cihazım var araya rs232 çeviriçi takarakta bağlantı yapıyorum. Sorunsuz çalışıyor. Ben bunu bluetooth ile bağlama istiyorum fakat bir kaç kes denedim olmadı hc o5 bluetooth denedim olmadı rs232 blutooth çevirici aldım olmadı.Bir fikriniz varsa yazarmısınız.
Arkadaslar merhaba bir proje yapiyorum ve arduinodan degerleri aliyorum aldigim degerler mesela eger b<200 buttonun renki degisiyor nasil yapabilirim bilen var mi lutfen bana yardin edin
kodum bu
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;
namespace WindowsFormsApplication21
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
button1.BackColor = Color.Red;
label1.Text = " OCCUPIED";
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (serialPort1.ReadExisting().EndsWith("/n"))
{
string a = serialPort1.ReadLine();
int b = Convert.ToInt32(a);
label2.Text = b.ToString();
//this.BackColor = Color.FromArgb(b, 0, 0);
if (b < 200)
{
button1.BackColor = Color.Yellow;
}
}
}
private void button3_Click(object sender, EventArgs e)
{
listBox1.Visible = true;
listBox1.Items.Add("Değerler alınıyor!");
if (!serialPort1.IsOpen)
{
serialPort1.PortName = "COM11";
serialPort1.Open();
}
}
private void button4_Click(object sender, EventArgs e)
{
serialPort1.Close();
listBox1.Items.Add("Durduruldu!");
}
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Visible = false;
}
}
}
foruma gelin sorun soruları yazıdaki c# orneğini deneyın oncelikle.
Yaptığınız uygulamayı paylaştığınız için teşekkür ederim Volkan bey yalnız arduino kodları kısmında ufak bir eksiklik var