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

4.143 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.

 

Tekrar Etmenin Faydaları Ve Tekniği

1.465 Kişi Okudu

Unutmamanın anahtarı tekrardır

Hepimiz okuduğumuz veya izlediğimiz şeyleri ihtiyacımız olduğu zaman hemen hatırlayacağımızı zannederiz. Halbuki durum bundan ibaret değildir. Okuduğumuz şeylerin aklımızda kalmasını istiyorsan bu bilgileri tekrar etmek mecburiyetindeyiz, zihnimiz tekrar edilmeyen bilgileri önemsiz kabul eder bir kaç gün içerisinde hatta birkaç haftada okuduklarımızı unutabilir. 

Peki unutmamak için ne yapmamız gerekiyor. Tabi ki bilgilerimizi kalıcı hafızaya almamız lazım buda tekrar etmek ile mümkün. 

  1. Anında

    Okuma işlemi yapılır yapılmaz hemen ardından bir kaç defa tekrar ederek iyice pekiştirin ve özümseyin.

  2. 20 Dakika Sonra

    İlk okunan andan 20 dk sonrada şöyle bir gözden geçiriyoruz. Evet belki unutmadın hatırlıyorsun ama tekrar göz gezdirmekten zarar olmaz.

  3. 1 Saat sonra

    Tam unuttum derken bir kez daha baktığın için emin ol kendini tebrik edeceksin.

  4. 9 Saat sonra

    İşte burası çok öneli bu tekrarı da yaptıktan sonra hiç bir şeyin eskisi gibi olmayacağını artık unutmayacağın bilgi için kapı aralamış olacaksın

  5. 1 Gün sonra

    Yeni bir tekrar

  6. 2 Gün sonra

    Yeni bir tekrar

  7. 1 Hafta sonra

    Yeni bir tekrar

  8. 1 Ay sonra

    Evet hayatın boyunca unutmayacağın ve kalıcı hafızaya aldığını bilgin hayırlı olsun.

Kalıcı hafızaya geçme eğrisi

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

849 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) ;
  
}

Robot İşlerine Başlayacağım Nasıl Bir Yol İzlerim Sorusu yanıtı.

1.079 Kişi Okudu
 
Bu tarz sorular Robot Topluluğunda çalışma yapmak isteyen arkadaşlardan sıkça alıyoruz. Eğer yazılımdan ve elektronik azıcık anlayan arkadaşlar olursa onlara ufaktan kendilerine bir problem sunmaları ve bu problemi çözebilecek mekaniği, elektroniği ve yazılımı kullanarak çözüm oluşturmalarını istiyoruz, kısaca proje bazlı gidersen o proje için yapacaklarını araştırırken ister istemez konu ile alakalı senin problemini çözmese bile birçok meseleyi öğrenebilirsin. Örneğin; karanlıkta yanıp sönen bir uyarı ledi projesi ile başlayalım bu projede birtakım parametrelere ihtiyacın var, makineli tüfeğine soru mermilerini takıp etrafa sıkmaya başlıyoruz,
1- Ortamın aydınlık olduğunu nasıl algılarım ?
2- Ortamın karanlık olduğunu nasıl algılarım ?
3- Kullanacağım sensör nasıl olmalı?
4 – Sensör tipi nasıl olmalı?
5- Algıladığım ortam ışığını nasıl yorumlarım?
6- Hangi mikrodenetleyici kullanmalıyım?
7-…..
..
.
gibi birçok soru sorarak bu küçük problemin üstesinden gelmeye çalışmalısın bu süreç ile kısa zamanda güzel bir aşama kaydetme sağlayacaktır. Yapacağın sonra ki projelerde sorduğun soru sayısı azalacaktır.
Bu projeyi yaptıktan sonra biraz daha karmışık bir problem koy mesela buda engelden kaçan iki tekerlekli bir araç olsun burada işin içine mekanikte girecek, motor kontrollü, sistemin bir vücuda kavuşması söz konusu. Robotik projelerde öncelikle yazılım ve temel elektronik kısımlarını halletmen lazım mekanik problemleri çözmek yazılım ve elektroniğe nazaran daha az araştırma gerektirmekte.
Robotik projeler için aynı zamanda elektronik komponent bilgiside çok önemlidir bu projelerin için en doğru malzemeyi seçmen için gerekir, piyasada malzeme satışı yapan yerli siteler mevcut buralardan alışveriş yapmasan bile ara sıra girip ne var ne yok diye bakmakta fayda var, çünkü malzeme satış sitelerinde o malzemenin nasıl kullanılacağını hatta örnek kodlarına dahi ulaşabilirsin. Şu siteler alış veriş için güvenilir ve aynı zamanda bahsettiğim olay için ziyaret edebilirsin;
Sürekli ziyaret ettiğim bir nevi robotcuların facebook u diyebileceğim bir site var, gir takıl yapılan projeleri incele sana birçok konuda yardımcı olacaktır, bu sitede senin gibi yeni başlayandan tut uçuk kaçık proje yapan arkadaşlara kadar uzanan geniş bir kullanıcı yelpazesine sahip kodları ve şemaları genelde paylaşıyorlar. Site; http://letsmakerobots.com/
Gelelim olayın beynine, mikrodenetleyici tercihi; şimdilerde ortalıkta Arduino diye bir zımbırtı dolaşıyor bu işlere girdiğinde çokça karşına çıkacak. Eğer elektronik ve gömülü sistem programlamaktan zerre anlamıyorsan Arduino ile başlayabilirsin aman emin ol seni tembelliğe alıştırır ve bir mühendisin kullanmaması gereken bir donanım. Onun dışında Pic mikro denetleyicisi veya ARM tabanlı işlemciler var ARM mikro işlemcileri öneririm, biraz araştır. ARM işlemciler günümüzde elektronik cihazların %98 i ARM tabanlı işlemciler kullanılmakta.
Az çok yol göstermek istedim umarım yardımcı olmuşumdur her zaman soru sorabilirsin. Saygılar, Sevgiler, İyi çalışmalar.

Paint’e Çizilen Resmi Not Defterine Çizdirmek

3.397 Kişi Okudu

Java Programı Robot kütüphanesi kullanılarak hazırlamış olan bir proje burada ekran üzerindeki renkler okunarak not defterine “x” ve ” ” karakterleri atılmıştır. Bir anlamda iki eksende çalışan bir sistem simüle edilmeye çalışılmıştır.

Java programı önce fare imleci üzerindeki rengi okuyor daha sonra bu rengi algıladığı yerlere “x” karakteri atıyor. İşlem tamamen renk okuma üzerine çalışıyor. Ekranın belirli bir bölgesinde çalışan program için bu bölge artırıla bilir.

 

Minik CD-ROM eksenli CNC

997 Kişi Okudu

Elimde bulunan CD-ROM ve DVD-ROM ların eksenlerinden faydalanarak yaptığım küçük çaplı bir CNC bu çalışmayı G-kodlarını öğrenmek ve aynı anda eksenel hareketlerinin nasıl verilebileceği hakkında bilgi sahibi olabilmek için gerçekleştirdim.

Bu çalışmada STM32F0 ARM mikro denetleyicisi kullanılmıştır. Motorlar step motor olduğu için 2 A4988 step motor sürücü kullanılmıştır. Motorların her biri 100 ohm dur. Buna bağlı olarak yüksek akım çekmemesi için bir güç kaynağı tarafından voltaj sınırlanarak verilmiştir.

Bu mekanik sistem 2 eksende koordinatlar üzerinde belirlenen noktalara gitmektedir. Bu çalışmada G kodlarnı çözebilen bir JAVA arayüzü hazırlanacaktır ve Z eksenin de küçük bir hareket verilerek kalem aşağıya  ve yukarıya hareket etmesi sağlanacaktır.

Java Dosya Klasör Yolu Öğrenme

2.536 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.292 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.044 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

 

 

AutoCAD

917 Kişi Okudu

Çizgileri birleştirme,

Öncelikle “Pedit” Komutu girlir birleştirmek istediğimiz çizgiler seçilir, çoklu seçim yapmak istiyorsak “M” yazılır ve ENTER a basılır, “join” komutu seçilir.

1:1 oranda çıktı alma,

File menüsunden “Page Setup Menager” seçilir. Açılan pencerede “Modify” e tıklanır. açılan pencerede “plot area” bölümünden “window” seçilir. Daha sonra çıkartmak istediğimiz parçalar seçilir. “plot style tabe ” bölümünden “monochrome” seçilir