Bilgisayarın Portları mı Yandı?

Başlatan robikod, 16 Haziran 2016, 01:24:36

robikod

Arduinoya robotun kodlarını atmama rağmen, arduinoda önceki kod ne ise onu çalıştırıyor.
Portlar yanmış olsa, fareyi taktığım zaman çalışmazdı diye düşünüyorum ama elimde 3 arduino var hiç birine kod atamıyorum. Port adreslerini doğru belirlememe rağmen olmuyor
Şu hatayı da kodu uzun bir süre atamayınca veriyor,
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x92
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x92
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x92
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x92
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x92
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x92
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x92
avrdude: ser_recv(): read error: Bir iş parçacığı çıkışı veya bir uygulama isteği nedeniyle G/Ç işlemi iptal edildi.

mehmet

Program atmaya başlayınca reset butonuna basıp deneyiniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

robikod

Denedim ama sorun arduinoda değil, çünkü elimde 3 tane arduino var hepsini denediğimde kodu program atıyor bir süre ancak arduino hala eski kodu çalıştırıyor. Farklı bir kod atmayı da denedim yine olmadı bilgisayardaki tüm portları çalıştırdım yine olmadı ne yapmam gerekiyor bir türlü çözemedim bu sorunu

kayatech

Sorun arduino driver in da. Aygıt yöneticisine girin. Bağlantılar kısmında arduino driver ini bulun. Sağ tıklayıp sürücü güncelleştir seçin. Aksi halde ne yaptılar sa bütün arduino driver lari ramps olarak görüyor. Sürücüyü güncelleyince düzeldi bende. Ch li bir driver var. Usb to serial olarak geçiyor.

robikod

Sanırım çözümü buldum.
Bluetooth bağlantısı varken, kodları atmaya çalıştığımda bu şekilde oluyor.
Bluetooth bağlantılarını kesip kodu tekrar attığımda kodları gönderebildim.
Sorun bluetooth bağlantısında sanırım

mehmet

Kodlar hw seri port üzerinden gönderilir.
Yani 0 ve 1 nolu pinler. Programlama
esnasında başka bir cihazın bu yoldan
cevap vermemesi gerekir.

Geçici olarak sw seri portu bt ile
kullanabilirsiniz.   
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

robikod


kayatech

Alıntı yapılan: robikod - 16 Haziran 2016, 10:19:29
Sanırım çözümü buldum.
Bluetooth bağlantısı varken, kodları atmaya çalıştığımda bu şekilde oluyor.
Bluetooth bağlantılarını kesip kodu tekrar attığımda kodları gönderebildim.
Sorun bluetooth bağlantısında sanırım

Tabi sen hepsini denedim deyince ilk akla sürücü geliyor.

Aynen dediğin gibi seri portlara takılı herhangi bir şey olduğu zaman bu sorunu yapıyor. Biraz sinir bozucu. Direnç taktım ama yinede yapıyor.
Ben de mecburen bağlı olan aygıtı söküyorum. Belki izolasyon devresi kurarak sorunu çözebiliriz ama şimdilik idare ediyoruz. :)


robikod

#8
Şimdide şöyle bir sıkıntı çıktı, sıkıntılar bitmiyor ki :)

ileri de bir sıkıntı yok gayet düzgün bir şekilde çalışıyor.
Geri komutunu yanlış çalıştırıyordu bu yüzden komutu kontrol etmek için ilk ikisini HIGH yaptım daha sonra LoW yaptım hepsini ancak hiçbir şekilde s tuşuna bastığımda gerçekleşen olayı etkilemiyor mesela w tuşuna bastığımda, ileri fonksiyonundaki kodları değiştirsem gözlemleyebiliyorum ama s-a-d de sorun çıkıyor

int DonmeHizi = 175;
char tus;
/* bu değişken ile motorların dönme hızı kontrol edilebilir */

/* motor sürücüsüne bağlanacak INPUT ve ENABLE pinleri belirleniyor */
const int sagileri = 9;
const int saggeri = 8;
const int solileri = 12;
const int solgeri = 13;
const int solenable = 11;
const int sagenable = 10;

void ileri(int hiz){
  /* ilk değişkenimiz sag motorun ikincisi sol motorun hızını göstermektedir.
   * motorlarımızın hızı 0-255 arasında olmalıdır.
   * Fakat bazı motorların torkunun yetersizliğiniden 60-255 arasında çalışmaktadır.
   * Eğer motorunuzdan tiz bir ses çıkıyorsa hızını arttırmanız gerekmektedir.
   */
  analogWrite(sagenable, hiz); /* sağ motorun hız verisi */
  digitalWrite(sagileri,LOW); /* ileri dönme sağlanıyor */
  digitalWrite(saggeri,HIGH); /* ileri dönme sağlanıyor */

  analogWrite(solenable, hiz); /* sol motorun hız verisi */
  digitalWrite(solileri, HIGH); /* ileri dönme sağlanıyor */
  digitalWrite(solgeri,LOW); /* ileri dönme sağlanıyor */
}

void solaDon(int hiz){
  analogWrite(sagenable, hiz); /* sağ motorun hız verisi */
  digitalWrite(sagileri,LOW); /* geri dönme sağlanıyor */
  digitalWrite(saggeri,HIGH); /* geri dönme sağlanıyor */

  analogWrite(solenable, hiz); /* sol motorun hız verisi */
  digitalWrite(solileri, LOW); /* ileri dönme sağlanıyor */
  digitalWrite(solgeri,HIGH); /* ileri dönme sağlanıyor */
}

void sagaDon(int hiz){
  analogWrite(sagenable, hiz); /* sağ motorun hız verisi */
  digitalWrite(sagileri,HIGH); /* ileri dönme sağlanıyor */
  digitalWrite(saggeri,LOW); /* ileri dönme sağlanıyor */

  analogWrite(solenable, hiz); /* sol motorun hız verisi */
  digitalWrite(solileri, HIGH); /* geri dönme sağlanıyor */
  digitalWrite(solgeri,LOW); /* geri dönme sağlanıyor */
}

void geri(int hiz){
  analogWrite(sagenable, hiz); /* sağ motorun hız verisi */
  digitalWrite(sagileri,HIGH); /* geri yönde dönme sağlanıyor */
  digitalWrite(saggeri, LOW); /* geri yönde dönme sağlanıyor */

  analogWrite(solenable, hiz); /* sol motorun hız verisi */
  digitalWrite(solileri, LOW); /* geri yönde dönme sağlanıyor */
  digitalWrite(solgeri, HIGH); /* geri yönde dönme sağlanıyor */
}

void dur()
{
  /* Tüm motorlar kitlenerek durma sağlanıyor */
  digitalWrite(sagileri, LOW);
  digitalWrite(saggeri, LOW);
  digitalWrite(solileri, LOW);
  digitalWrite(solgeri, LOW);
}

void setup(){
  /* Bluetooth için port açılıyor */
  Serial.begin(9600);
  
  /* motorları kontrol eden pinler çıkış olarak ayarlanıyor */
  pinMode(sagileri,OUTPUT);
  pinMode(saggeri,OUTPUT);
  pinMode(solileri,OUTPUT);
  pinMode(solgeri,OUTPUT);
  pinMode(sagenable,OUTPUT);
  pinMode(solenable,OUTPUT);
}

void loop(){
  if (Serial.available() > 0) {   /*Bluetooth'tan veri bekliyoruz */
    char tus = (char)Serial.read();
  
switch(tus)
{
case 'w':
ileri(DonmeHizi);
break;

case 'x':
dur();
break;

case 's':
geri(DonmeHizi);
break;

case 'd' :
sagaDon(DonmeHizi);
break;

case 'a':
solaDon(DonmeHizi);
break;
}



  
  }
}
     
     



Bunlarda seri portta kollandığım kodlar. Hatanın bu kodlarda olduğunu tespit ettim ama nerede hata var henüz çözemedim arduinodaki seri port ekranında gayet düzgün çalışıyor. Sorun seri iletişimi bluetooth üzerinden sağlayınca başlıyor.
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<windows.h>

using namespace std;
int x;
char deger;

int main() {

	HANDLE hComm;

	hComm = CreateFile( "COM4",  
						GENERIC_READ | GENERIC_WRITE, 
						0, 
						0, 
						OPEN_EXISTING,
						FILE_ATTRIBUTE_NORMAL,
						0);
	
	if (hComm == INVALID_HANDLE_VALUE) {
		if (GetLastError() == ERROR_FILE_NOT_FOUND) {
			printf("COM8'e erisim yok") ;
		}
	}

	DCB dcbSerialParams = {0};

	dcbSerialParams.DCBlength = sizeof(dcbSerialParams);

	if (!GetCommState(hComm, &dcbSerialParams)) {
		printf("Baglanti hatasi"); 
		_getch();
		return EXIT_FAILURE;
	}

	dcbSerialParams.BaudRate = CBR_9600;		//9600 Baud 
	dcbSerialParams.ByteSize = 8;				//8 data bits 
	dcbSerialParams.Parity = NOPARITY;			//no parity 
	dcbSerialParams.StopBits = ONESTOPBIT;		//1 stop 


	if (!SetCommState(hComm, &dcbSerialParams)) {
		printf("Baglantı hatası");
		_getch();
		return EXIT_FAILURE;
	}
	
	DWORD bytesSend;
  
	while (true) {
     
     printf("Bir deger giriniz: "); scanf("%c",&deger);
     
    	if(deger=='w')
			{
				     	BOOL retVal = WriteFile(hComm, "w", sizeof(x), &bytesSend, NULL);

				
		if (!retVal) {
			printf("Error Writing File");
		} else {
			printf("araba ileri gider\n");
		}
	}
     	
     	
if(deger=='s')
				 {
				 	
				 	BOOL retVal = WriteFile(hComm, "s", sizeof(x), &bytesSend, NULL);
		
				 if (!retVal) {
			printf("Error Writing File");
		} else {
			printf("araba geri gider\n");
		}
	}     	
     	
	 
		   
				      
				 
	
		
		 if(deger=='d')
				 {
				 	
				 	BOOL retVal = WriteFile(hComm, "d", sizeof(x), &bytesSend, NULL);
		if (!retVal) {
			printf("Error Writing File");
		} else {
			printf("araba saga gider\n");
		}
				 }
				 
				 
				 
				  else if(deger=='a')
				 {
				 	
				 	BOOL retVal = WriteFile(hComm, "d", sizeof(x), &bytesSend, NULL);
		if (!retVal) {
			printf("Error Writing File");
		} else {
			printf("araba sola gider\n");
		}
				 }
			}
		
		

	
	
	CloseHandle(hComm);						//close the handle 
	_getch();
	return 0;


}


mesaj birleştirme:: 17 Haziran 2016, 03:38:37

switch case kullanarak bir süre çözüldü sorun sonra yine aynı hatayı verdi