FFMPEG Komut Satırı Video İşleme Programı İle Videolara Logo Eklmek.

4.150 Kişi Okudu

FFMPEG elinizdeki videoların formatını dönüştürmek, kırpmak ve yazı eklemek gibi birçok faydalı işlem yapma yeteneğine sahip ücretsiz bir komut satırı programıdır. FFMPEG birçok video işleme programında yardımcı program olarak çalışmakta ve bu programın kütüphanelerinden istifade edilmektedir.

FFmpeg
https://ffmpeg.org/

Detaylı bilgi
https://tr.wikipedia.org/wiki/FFmpeg

FFmpeg in kullanıldığı projeler
https://trac.ffmpeg.org/wiki/Projects

FFmpeg Türkçe Kaynak
http://web.archive.org/web/20130310141744/http://tr.pardus-wiki.org/FFmpeg_Dok%C3%BCmantasyon

Öncelikle severek ilgilendiğim facebook sayfam Robot Ve Teknoloji sayfasında paylaştığım videolara logo eklemek için kullanmak üzere, çok hızlı ve etkili bir program arayışına girdim öyle şatafatlı programlarla uğraşmak istemedim alt tarafı bir logo eklemek için koca bir video işleme programı çalıştırmak dert, kurmak dert. Bu iş için özelleştirilmiş bir program bulamayınca başladım kütüphane araştırmaya kafaya koydum kendi video logo ekleme programımı yazacağım sadece bu işe yarasın yeter. Biraz araştırma sonucu ffmpeg programının bu iş için biçilmiş kaftan olduğunu gördüm. Windows toplu iş dosyası oluşturdum içerisine ffmpeg için gerekli komutları da yazınca problemim çözülmüş oldu.

 

3 ADC kanalından okunan veriyi seri port üzerinden gönderen yazılım.

853 Kişi Okudu

MikroC dili ile yazılan bir program. ADC A0 A1 A3 pinlerinden okunan verileri seri port üzerinden göndere program. Seri porttan okunan veri int tipinden gelmekte biz bu verileri string tipine dönüştürerek gönderiyoruz.
UART 2 kullanılmıştır bu pin A2 de TX pinidir.

void main()
 {
 char txt1[12],txt2[12],txt3[12];
 int adc1=0,adc2=0,adc3=0;
 
  GPIO_Digital_Output(&GPIOc_ODR, _GPIO_PINMASK_8) ;
  GPIO_Digital_Input(&GPIOa_IDR, _GPIO_PINMASK_0);

  ADC_Set_Input_Channel(_ADC_CHANNEL_ALL); // adc kanalında 1. pini kullanacağımız belirtilde A1
  ADC1_Init();// Adc Ayarları yapıldı
  UART2_Init(9600);                    // initialize UART2 module
  Delay_ms(100);

  UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle ); // Uart modüllerini aktive ediyor...


   do  {
           adc1=ADC1_Get_Sample(0);
           IntToStr(adc1,txt1);
           
           adc2=ADC1_Get_Sample(1);
           IntToStr(adc2,txt2);
           
           adc3=ADC1_Get_Sample(3);
           IntToStr(adc3,txt3);
           
           UART2_Write_Text("ADC-1=");
           UART2_Write_Text(txt1);
           
           UART2_Write_Text("ADC-2=");
           UART2_Write_Text(txt2);
           
           UART2_Write_Text("ADC-3=");
           UART2_Write_Text(txt3);
           
           UART2_Write(13);
           UART2_Write(10);
           Delay_ms(500);

  }  while (1) ;
  
}

Java Dosya Klasör Yolu Öğrenme

2.542 Kişi Okudu

Aşağıda bulunan kod lar çalıştırıldığı zaman bilinmeyen bir bilgisayar üzerinde dosya dizini ulaşma veya dosya kaydetme işlemleri gerçekleştirilir.

public class pc_folder {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("İşletim Sisitemi		     :"+System.getProperty("os.name"));
		System.out.println("Kullanıcı Adı   		     :"+System.getProperty("user.name")); 		
		System.out.println("Kullanıcı Adı Ev Dizini          :"+System.getProperty("user.home"));
		System.out.println("Java Programını Çalıştığı Dizin  :"+System.getProperty("user.dir"));

		
		
	}

}


Seri Porttan Okunan Veriyi Mail Gönderme

3.299 Kişi Okudu

Aşağıdaki kodlar sayesinden seri port üzerinden veri okuyup okunan veri mail olarak gönderilmektedir.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier; 
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent; 
import gnu.io.SerialPortEventListener; 
import java.util.Enumeration;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.sun.corba.se.spi.orbutil.fsm.Input;


public class SerialTest implements SerialPortEventListener {
	SerialPort serialPort;
        /** The port we're normally going to use. */
	private static final String PORT_NAMES[] = { "COM2", // Windows
};
	/**
	* A BufferedReader which will be fed by a InputStreamReader 
	* converting the bytes into characters 
	* making the displayed results codepage independent
	*/
	private BufferedReader input;
	
	public static String a;
	/** The output stream to the port */
	private OutputStream output;
	/** Milliseconds to block while waiting for port open */
	private static final int TIME_OUT = 2000;
	/** Default bits per second for COM port. */
	private static final int DATA_RATE = 9600;

	public void initialize() {

		CommPortIdentifier portId = null;
		Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();

		//First, Find an instance of serial port as set in PORT_NAMES.
		while (portEnum.hasMoreElements()) {
			CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
			
			for (String portName : PORT_NAMES) {
				
				if (currPortId.getName().equals(portName))
				{
					portId = currPortId;
					System.out.println(currPortId.getName());
					break;
				}
			}
		}
		if (portId == null) {
			System.out.println("Could not find COM port.");
			return;
		}

		try {
			// open serial port, and use class name for the appName.
			serialPort = (SerialPort) portId.open(this.getClass().getName(),
					TIME_OUT);

			// set port parameters
			serialPort.setSerialPortParams(DATA_RATE,
					SerialPort.DATABITS_8,
					SerialPort.STOPBITS_1,
					SerialPort.PARITY_NONE);

			// open the streams
			input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
			output = serialPort.getOutputStream();

			// add event listeners
			serialPort.addEventListener(this);
			serialPort.notifyOnDataAvailable(true);
		} catch (Exception e) {
			System.err.println(e.toString());
		}
	}

	/**
	 * This should be called when you stop using the port.
	 * This will prevent port locking on platforms like Linux.
	 */
	public synchronized void close() {
		if (serialPort != null) {
			serialPort.removeEventListener();
			serialPort.close();
		}
	}

	/**
	 * Handle an event on the serial port. Read the data and print it.
	 */
	public synchronized void serialEvent(SerialPortEvent oEvent) {
		
		if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
			try {
				String inputLine=input.readLine();
				System.out.println(inputLine);
				
				char[] gelen = (char[]) inputLine.toCharArray();				
				for (int i=0 ; i<gelen.length;i++ ){="" output.write(gelen[i]);="" }="" gonder("civan.ahmetyasin@gmail.com",inputline,"sensör="" algılandı");="" system.out.println("mail="" gönderildi");="" a="inputLine;" catch="" (exception="" e)="" {="" system.err.println(e.tostring());="" ignore="" all="" the="" other="" eventtypes,="" but="" you="" should="" consider="" ones.="" private="" static="" void="" gonder(string="" tomail,="" string="" note,="" ad){="" final="" username=" Mail Gönderecek Mail Adres " ;="" password=" Sizin Mail Adresinizin Şifresi " properties="" props="new" properties();="" props.put("mail.smtp.auth",="" "true");="" props.put("mail.smtp.starttls.enable",="" props.put("mail.smtp.host",="" "smtp.gmail.com");="" props.put("mail.smtp.port",="" "587");="" session="" new="" javax.mail.authenticator()="" protected="" passwordauthentication="" getpasswordauthentication()="" return="" passwordauthentication(username,="" password);="" });="" try="" message="" mimemessage(session);="" message.setfrom(new="" internetaddress("="" info@microsoft.com"));="" message.setrecipients(message.recipienttype.to,internetaddress.parse(tomail));="" message.setsubject(ad);="" message.settext(note);="" transport.send(message);="" (messagingexception="" throw="" runtimeexception(e);="" public="" main(string[]="" args)="" throws="" exception="" serialtest="" main="new" serialtest();="" main.initialize();="" thread="" t="new" thread()="" run()="" following="" line="" will="" keep="" this="" app="" alive="" for="" 1000="" seconds,="" waiting="" events="" to="" occur="" and="" responding="" them="" (printing="" incoming="" messages="" console).="" {thread.sleep(1000000);}="" (interruptedexception="" ie)="" {}="" };="" t.start();="" system.out.println("started");="" <="" pre=""></gelen.length;i++>

Pid Duvar Takip Robotu (Wall Following Robot)

2.059 Kişi Okudu

 

PID algoritmasını net bir şekilde anlayabilmek için bir araç üzerine kurduğumuz mekatronik sistem ile sensörden aldığımız analog verilerin PID algoritması yardımıyla işleyerek bir kontrol düzeneği oluşturulmuştur. Oluşturulan bu iki tekerlekli mekatronik araç duvara belirlenen referans konumunu koruması için PID algoritmasıyla stabilizasyonu sağlanmıştır.

PID kontrolörler endüstride pek çok süreci kontrol etmek için anlaşılması ve kullanımı kolay bir kontrol yapısı olduğundan çok sık kullanılmaktadır. PID kontrolör parametreleri tarafımızca deneme yanılma yöntemiyle ayarlanmıştır.

SENSÖR :

Sharp GP2Y0A21YK Kızılötesi Sensör 10cm den kısa ve  80 cm den uzak mesafeleri algılayamaz. Bu mesafeler arasında analog ölçümler yapabilir. Tepkime süresi 39ms’dir. Sistemden çektiği akım 30 mA’dir. Yazılımsal olarak bize 10 cm le 80 cm arasını 3.3 volta dağılım gösterecek şekilde vermektedir.

pid robot

 

 

Java Resim Üzerine Yazı Yazma

1.378 Kişi Okudu
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class res {
public static void main(String[] args) throws IOException {

int a = 20, b=40,c=0; // değişkenlerin tanımlanması
Image resim = new ImageIcon("C:\\Users\\civan\\Desktop\\dene.jpg").getImage(); // Konumu belirlenen resimin çekilmesi
BufferedImage bufferedImage = ImageIO.read(new File("C:\\Users\\civan\\Desktop\\dene.jpg")); // resim buffera yazıldı
BufferedImage scaledBI = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB); // bufferda resim tipi belirlendi
Graphics2D g = scaledBI.createGraphics(); // resmin üzerinde 2 boyutlu işlem yapılacak
g.setComposite(AlphaComposite.Src); // resim tarandı
g.drawImage(resim, 5, 5, bufferedImage.getWidth(), bufferedImage.getHeight(), null);
Font font= new Font("SansSerif ", Font.BOLD, 25); //yazılacak yazı tipi, büyüklüğü belirlendi
g.setFont(font); //belirlenen font g ye aktarıldı

do {
do {

Random rnd = new Random(); // rastgele bir sayı seçildi
int sayı = rnd.nextInt(33) + 1 ; // seçilen sayı 33 ile 1 arasında olsun
Color renk = new Color(sayı*1009000); // değerler dar bir aralıkta olduğu için istediğimiz sayı ile çarpıldı
g.setColor(renk); // renk parametresine aktarıldı
sayı=0; //sayı değeri 0landı
a=a+20; // a değeri 20 arttırıldı bu değer sütün bilgisidir ve yazıların alt alta yazılmasını sağlar
g.drawString("Deneme Yazısı",b,a);
System.out.println(a); // a değeri ekrana yazar
} while(a!=1000); // a değiri 1000 e ulaştığı zaman döndüden çıkar bu da alt alta 1000/20 den 50 defa yazı yazıldığını gösterir.

a=20; // a 20 ye eşitlendi sürekli artmasını önlemek için
b=b+300; // diğer sütüna kayar ve üstteki döngüye tekrar girer
c=c+1; // sağ doğru sütün arttırmak için kullanılır
}while(c!=4); // sağ doğur 4 sütün oluştuğunda çık.

System.out.println("Resim yazıldı"); // resime yazı yazıldı mesajı
g.dispose();
ImageIO.write(scaledBI, "jpg", new File("C:\\Users\\civan\\Desktop\\dene2.jpg")); // yeni resimi kaydet

}
}  

Analog Dijital Çerici ADC

783 Kişi Okudu
unsigned gelen;
void main ()
{
  GPIO_Digital_Output(&GPIOc_ODR, _GPIO_PINMASK_8| _GPIO_PINMASK_9);
  GPIOC_ODR.b8 = 0 ;
  ADC_Set_Input_Channel(_ADC_CHANNEL_1); // adc kanalında 1. pini kullanacağımız belirtilde A1
  ADC1_Init();// Adc Ayarları yapıldı

  do {
    gelen = ADC1_Get_Sample(1);  //ADC 1. pininden gelen veri gelen isimli değişkene aktarılıyor.

   if (gelen<2095 )   //1,6 voltdan küçük olduğu zaman yan
  {               
   GPIOC_ODR.b9 = 1 ;
   GPIOC_ODR.b8 = 0 ;
  }

  else {  // değilse sön
   GPIOC_ODR.b8 = 1 ;
   GPIOC_ODR.b9 = 0 ;
  }
 } while(1);

}