Judul : Ball Bot dengan menggunakan sensor kamera pixy cam
link : Ball Bot dengan menggunakan sensor kamera pixy cam
Ball Bot dengan menggunakan sensor kamera pixy cam
oke langsung saja sobat, yang perlu di siapkan adalah sebagai berikut
- Batere holder dan batere
- Shield driver mobo
- Arduino Uno
- Pixy cam
dan pastinya set mobile robot yang di lengkapi dengan motor DC.
Oke bentuk setelah dipasang di body atau frame
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
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);
}
/* 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);
}
Demikianlah Artikel Ball Bot dengan menggunakan sensor kamera pixy cam
Sekianlah artikel Ball Bot dengan menggunakan sensor kamera pixy cam kali ini, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sampai jumpa di postingan artikel lainnya.
Anda sekarang membaca artikel Ball Bot dengan menggunakan sensor kamera pixy cam dengan alamat link https://arduinolibs.blogspot.com/2017/01/ball-bot-dengan-menggunakan-sensor.html
0 Response to "Ball Bot dengan menggunakan sensor kamera pixy cam"
Post a Comment