// Mechanizm PUMT — śledzenie kolorowych obiektów za pomocą kamery Pixy i mikrokontrolera Arduino Uno


/*Rama projektowa Softbot
Nazwa: Unit1
Części:

Sekcja czujników:
Czujnik wizji
    
Akcje:

Krok 1.: Inicjuj czujnik.
Krok 2.: Wykryj i śledź obiekty.
Krok 3.: W przypadku wykrycia jakichkolwiek obiektów
Krok 4.: zwróć liczbę obiektów, ich szerokość, wysokość, współrzędne xy i kolor.
     
Zadania: 

Sprawdź działanie czujnika wizji, śledź obiekt, zwróć podstawowe informacje o obiekcie.
Koniec ramy*/


1	//
2	// nagłówek początku licencji
3	//
4	// This file is part of Pixy CMUcam5 or "Pixy" for short
5	//
6	// All Pixy source code is provided under the terms of the
7	// GNU General Public License v2 (http://www.gnu.org/licenses/gpl-2.0.html).
8	// Those wishing to use Pixy source code, software and/or
9	// technologies under different licensing terms should contact us at
10	// cmucam@cs.cmu.edu. Such licensing terms are available for
11	// all portions of the Pixy codebase presented here.
12	//
13	// nagłówek końca licencji
14	//
15	// Jeżeli dopiero zaczynasz przygodę z Pixy i Arduino, to warto, abyś swoją pracę
16	// zaczął od tego szkicu. Program ten przekazuje dane wykrytych bloków obiektów 
17	// (w tym kody kolorów) za pośrednictwem konsoli szeregowej. Program korzysta z portu
18	// ICSP płytki Arduino. Więcej informacji na temat łączenia kamery z Arduino znajdziesz na stronie:
19	//
20	// http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_(like_an_Arduino)
21	//
22	// Program przekazuje dane opisujące wykryte bloki raz na sekundę, ponieważ przekazywanie danych
23	// dla wszystkich 50 klatek na sekundę przeciążyłoby port szeregowy Arduino.
24	//
25	   
26	#include <SPI.h>  
27	#include <Pixy.h>
28	
29	Pixy MyPixy;
30	
31	void setup()
32	{
33	  Serial.begin(9600);
34	  Serial.print("Uruchamianie...\n");
35	  MyPixy.init();
36	}
37	
38	void loop()
39	{ 
40	  static int I = 0;
41	  int Index;
42	  uint16_t Blocks;
43	  char Buf[32]; 
44	  
45	  Blocks = MyPixy.getBlocks();
46	  if(Blocks)
47	  {
48	     I++;
49	     if(I%50 == 0)
50	     {
51	       sprintf(Buf, "Wykryto %d:\n", Blocks);
52	       Serial.print(Buf);
53	       for(Index = 0; Index < Blocks; Index++)
54	       {
55	          sprintf(Buf, "  Blok %d: ", Index);
56	          Serial.print(Buf); 
57	          MyPixy.Blocks[Index].print();
58		  if(MyPixy.Blocks[Index].signature == 1){
59		     Serial.print("kolor czerwony");
60		  }
61		  if(MyPixy.Blocks[Index].signature == 2){
62		     Serial.print("kolor zielony");
63		  }
64		  if(MyPixy.Blocks[Index].signature == 3){
65                   Serial.print("kolor niebieski");
66		  }
67	       }
68	   }
69	 }  
70    }

