Дана 27. априла одржана је радионица у оквиру које је комплетиран програм за управљање Сортером. Програм је написан на програмском језику ПХП. Овом приликом обрађени су основни концепти објектно оријентисаног програмирања, као што су наслеђивање и енкапсулација.

<?php
require "ev3.php";

class Sorter extends Ev3
{	
	private $razmak = 80;
	private $trenutnaBoja = 0;
	private $portBoja = Ev3::PORT_4;
	private $portDodir = Ev3::PORT_1;
	public $maliMotor = Ev3::PORT_A;
	private $velikiMotor = Ev3::PORT_D;
	private $snaga = 50;
	private $ispljuniRotacija = 250;
	
	private $boje = ['Nedefinisana boja', 'Crna', 'Plava', 'Zelena', 'Žuta', 'Crvena', 'Bela', 'Braon'];
	
	public function ispljuni()
	{
		$this->okreniMaliMotor(1);
		$this->okreniMaliMotor(-1);
		echo "Pljunuo \n";
		$this->izgovoriTekst('Pu!');
		usleep(4000);		
	}

	private function okreniMaliMotor($smer)
	{
		$this->pokreniMotorPozicija($this->maliMotor,$this->ispljuniRotacija * $smer);		
		$this->blokirajDokRadiMotor($this->maliMotor);		
	}

	private function pozicioniraj($novaBoja) 
	{
		$imeBoje = $this->boje[$novaBoja];
		echo "Pozicioniram se na boju: $imeBoje : $novaBoja \n";
		$this->izgovoriTekst($imeBoje);
		
		$pomeraj = ( $novaBoja - $this->trenutnaBoja) * $this->razmak * -1;
		echo "Pomeraj je $pomeraj \n";
		$this->pokreniMotorPozicija($this->velikiMotor, $pomeraj);
		$this->blokirajDokRadiMotor($this->velikiMotor);
		$this->trenutnaBoja = $novaBoja;
	}

	private function udarioUSenzor()
	{
		return intval($this->ocitajSenzor($this->portDodir));
	}

	public function pocetak()
	{
		$this->jacinaTona(100);
		$snaga = $this->snaga * -1;
		$this->snagaMotora($this->velikiMotor, $snaga.'');
		$this->snagaMotora($this->maliMotor, $snaga);
		$this->pokreniMotor($this->velikiMotor);
		while( ! $this->udarioUSenzor()){
			echo "Cekam na senzor za dodir \n";
		}
		echo "Senzor za dodir je aktiviran \n";
		$this->zaustaviMotor($this->velikiMotor);
		$this->pokreniMotorPozicija($this->velikiMotor, $this->razmak / 5, true);
		$this->zaustaviMotor($this->velikiMotor);
		$this->trenutnaBoja = 1;
		$this->podesiModSenzora($this->portBoja, 'COL-COLOR');
	}
	
	protected function ocitajBoju()
	{
		return intval($this->ocitajSenzor($this->portBoja));
	}
	
	public function pokreni()
	{
		$this->pocetak();	
		$ponavljanje = 0;			
		usleep(4000);
		while(($novaBoja = $this->ocitajBoju()))
		{
			if($this->trenutnaBoja == $novaBoja){
				$ponavljanje++;
				if($ponavljanje > 4){
					echo "Izlazim jer se boja ponavlja vise od 4 puta \n";
					break;			
				}	
			}else{
				$ponavljanje = 0;
			}						
			$this->pozicioniraj($novaBoja);
			echo "PU! $novaBoja \n";
			$this->ispljuni();
		}
	}
}
$robot = new Sorter();
$robot->pokreni();

 

Ивица
28.04.2015
Одељци: Зид Обавештења Ивица | Кључне речи:
0

Коментари:

Нови коментар

©Библиотека++ 2024 Развој сајта Ивица Лазаревић