langkah-langkah sebelum programming arduino yang perlu dilakukan adalah
- set pixy terlebih dahulu dengan menggunakan kabel mini usb, dan buka program pixymon
- cari object yang akan di detect, untuk kali ini kita pake bola warna biru
- set signature 1 dengan klik warna yang akan di detect
- Karena kita sekarang menggunakan i2c pada pixy cam dengan arduino maka set juga di pixymon ke configure, pilih interface, dan pilih data out port i2c dan jangan lupa address nya di ingat-ingat, untuk kali ini saya menggunakan 0x55
- silahkan close program pixymon
- sekarang kabel konfigurasi untuk i2c ke shield mobo. pixy mempunyai pin output seperti berikut ini :
1 : SPI MISO, UART RX, GPI00
2 : 5V
3 : SPI SCK, DAC OUT, GPI01
4 : SPI MOSI, UART TX, GPI02
5 : I2C SCL
6 : GND
7 : SPI SS, ADC IN, GPI03
8 : GND
9 : I2C SDA
10 : GND
- jadi untuk koneksi ke arduino i2c konfigurasinya menggunakan pin
ARDUINO ------------------- PIXY CAM
5V pin 2
GND pin 6
A4 pin 9
A5 pin 5
Oke langsung saja untuk programming arduinonya bisa di ikuti sebagai berikut :
/* pixy cam Sekolahrobot.com */
/* Sekolah Robot Indonesia */
/* Ball bot, Januari 2017 */
#include <Wire.h>
#include <PixyI2C.h>
uint16_t blocks;
int bin1 = 8;
int bin2 = 9;
int pwmb = 10;
int ain1 = 12;
int ain2 = 13;
int pwma = 11;
PixyI2C pixy(0x55); // alamat pixy i2c
void setup()
{
Serial.begin(9600);
Serial.print("Starting...\n");
pixy.init();
pinMode(bin1,OUTPUT);
pinMode(bin2,OUTPUT);
pinMode(pwmb,OUTPUT);
pinMode(ain1,OUTPUT);
pinMode(ain2,OUTPUT);
pinMode(pwma,OUTPUT);
}
void loop()
{
static int i = 0;
int j;
char buf[32];
blocks = pixy.getBlocks();
if (blocks)
{
i++;
if (i%50==0)
{
if(pixy.blocks[j].x>200)
{
Serial.println("Right");
belokkanan();
}
else if(pixy.blocks[j].x<60)
{
Serial.println("Left");
belokkiri();
}
else if(pixy.blocks[j].x>=60 && pixy.blocks[j].x<=200)
{
Serial.println("Middle");
maju();
}
else{
Serial.println("No Object Detected");
berhenti();
}
}
}
}
void maju()
{
digitalWrite(ain1,HIGH);
digitalWrite(ain2,LOW);
analogWrite(pwma,100);
digitalWrite(bin1,HIGH);
digitalWrite(bin2,LOW);
analogWrite(pwmb,100);
}
void mundur(){
digitalWrite(ain1,LOW);
digitalWrite(ain2,HIGH);
analogWrite(pwma,100);
digitalWrite(bin1,LOW);
digitalWrite(bin2,HIGH);
analogWrite(pwmb,100);
}
void belokkanan(){
digitalWrite(ain1,HIGH);
digitalWrite(ain2,LOW);
analogWrite(pwma,100);
digitalWrite(bin1,LOW);
digitalWrite(bin2,LOW);
analogWrite(pwmb,100);
}
void belokkiri(){
digitalWrite(ain1,LOW);
digitalWrite(ain2,LOW);
analogWrite (pwma,100);
digitalWrite(bin1,HIGH);
digitalWrite(bin2,LOW);
analogWrite(pwmb,100);
}
void berhenti(){
digitalWrite(ain1,LOW);
digitalWrite(ain2,LOW);
analogWrite (pwma,0);
digitalWrite(bin1,LOW);
digitalWrite(bin2,LOW);
analogWrite(pwmb,0);
}