Senin, 06 Maret 2017

menambah digit di depan hasil nilai

Hallo Sobat Arduino Indonesia, saya akan share sedikit function bagaimana untuk menampilkan digit di depan nilai integer yang mau di tampilkan.

Contohnya begini misal sobat mempunyai nilai 1,2,3,4,5 terus sobat pingin menampilkan di LCD atau Seven segment 2 digit sehinggal nilainya menjadi 01,02,03,04,05.

Nah dibawah ini contoh kalau sobat ingin menampilkan di Serial print di komputer/leptop.

sobat bisa menggunakan void berikut ini : 

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
digitPrint(1,2);
}

void digitPrint( int value, int width)
{

char valueStr[6];
  itoa (value, valueStr, 10);
  int len = strlen(valueStr);
  if(len < width){
    len = width-len;
    while(len--)
     Serial.print('0');
  }
 Serial.println(valueStr);  
}

sobat bisa menambahkan misalkan digit ratusan atau ribuan juga bisa, tinggal mengganti width yang di Inginkan

Mudah Bukan, yuk belajar pemrograman arduino bersama Arduino Indonesia

Selasa, 03 Januari 2017

Ball Bot dengan menggunakan sensor kamera pixy cam


Hallo sobat arduino Indonesia, sesuai dengan janji kemarin, hari ini saya akan share bagaimana menggunakan pixy cam untuk membuat robot pendeteksi bola dengan menggunakan sensor kamera. Bagi teman-teman yang akan ikut robot soccer di kontes robot Indonesia mungkin bisa sedikit membantu, tapi ini benar-benar masih basic lo sobat, jadi perlu beberapa improvement.

oke langsung saja sobat, yang perlu di siapkan adalah sebagai berikut



  1. Batere holder dan batere
  2. Shield driver mobo
  3. Arduino Uno
  4. 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 
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);
 
 
}


Selasa, 27 Desember 2016

menyiapkan Pixy cam buat Arduino

hallo sobat Arduino,

sebenarnya ini adalah postingan yang sudah lama direncanakan tapi lupa di tulis :).
sekitar bulan januari an lah saya sudah unboxing pixy cam. sudah di buat videonya pula, tapi lupa nulis di website belajar arduino ini. Rencana nya sih waktu itu mau di pake buat simple simple an sensor kamera :) buat line follower.

oke langsung saja ya,
Pixy cam itu dulu awalnya dari  kick starter yang di create oleh "Charmed Labs and Carnegie Mellon". dengan campaign di kickstarter mereka berhasil mendapatkan $274,352. trus sampai sekarang jadi produk yang laris.

Jadi sobat kalau membutuhkan sensor kamera, pixy ini recomended banget lo, tinggal atur object dan mudah di gunakan.

berikut ini video unboxing dan nyobain pixy cam

 

 

Sabtu, 15 Oktober 2016

Program Multiple Ultrasonic Sensor dengan Arduino

Hallo Sobat Arduino Indonesia,

sudah pernah memprogram arduino sensor ultrasonic kan, pada kesempatan ini sedikit share bagaimana kalau cara program arduino dengan menggunakan banyak sensor ultrasonic, Nah kalau sudah bisa memprogram satu sensor ultrasonic pasti juga bisa memprogram untuk banyak sensor.

Kenapa harus banyak sensor ultrasonic?
nah Sobat bisa memanfaatkan banyak sensor misal untuk membuat robot wall follower, membuat robot sumo automatic/ otomatis, atau untuk membuat robot pemadam api.

Oke yang pertama di lakukan adalah inisialisasi pin pin yang akan di gunakan untuk sensor ultrasonic, berhubung kali ini kita ada modul yang memang di desain untuk banyak sensor ultrasonic jadinya tinggal colok colok kabel jumper saja.

Komponen yang dibutuhkan pada percobaan kali ini adalah
  1. Arduino nano clone
  2. sensor ultrasonic hcsr04
  3. shield nano (bikin sendiri) atau ada yang sudah produk jadi shiled nano

untuk pemrograman arduin multi ultrasonic sensor bisa langsung di lihat berikut ini




//ultrasonic 1
int echoPin1 =8;
int initPin1 =9;
int distance1 =0;

//ultrasonic 2
int echoPin2 =6;
int initPin2 =7;
int distance2 =0;

//ultrasonic 3
int echoPin3 =4;
int initPin3 =5;
int distance3 =0;


void setup() {
 
  pinMode(initPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  pinMode(initPin2, OUTPUT);
  pinMode(echoPin2, INPUT);
  pinMode(initPin3, OUTPUT);
  pinMode(echoPin3, INPUT);

  Serial.begin(9600);
 
}

void loop() {
 
  distance1 = getDistance(initPin1, echoPin1);
  printDistance(1, distance1);
  delay(150);
 
  distance2 = getDistance(initPin2, echoPin2);
  printDistance(2, distance2);
  delay(150);
 
  distance3 = getDistance(initPin3, echoPin3);
  printDistance(3, distance3);
  delay(150);
  Serial.println("");
  delay(500);
 
}

int getDistance (int initPin, int echoPin){

 digitalWrite(initPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(initPin, LOW);
 unsigned long pulseTime = pulseIn(echoPin, HIGH);
 int distance = pulseTime/58;
 return distance;

}

 void printDistance(int id, int dist){
 
     Serial.print(id);
     Serial.print("------>");  
    Serial.print(dist, DEC);
    Serial.println(" cm");
   
 }

video memprogram arduino multi ultrasonic

Salam Arduino Indonesia

Minggu, 09 Oktober 2016

Belajar Arduino Driver Monster Moto shield

Hallo Sobat Arduino Indonesia,

yuk belajar arduino lagi :). oke langsung saja ini karena di W/S Sekolah Robot Indonesia ada shield Driver Monster Moto. yuk kita program untuk menggerakkan motor DC.

oh ya kalau yang beli baru kadang-kadang ada yang harus nyolder dulu, gampang kok sobat. bisa cek di video dibawah ini ya.

Yang dibutuhkan pada percobaan kali ini,
 

Driver Shield Monster Moto ini mempunyai pin yang digunakan adalah pin 7,4,8,9,5,6,2,3.

untuk konfigurasi pin bisa dilihat pada coding program berikut ini


  

/*  MonsterMoto Shield Example Sketch
  date: 5/24/11
  code by: Jim Lindblom
  hardware by: Nate Bernstein
  SparkFun Electronics

 License: CC-SA 3.0, feel free to use this code however you'd like.
 Please improve upon it! Let me know how you've made it better.

 This is really simple example code to get you some basic
 functionality with the MonsterMoto Shield. The MonsterMote uses
 two VNH2SP30 high-current full-bridge motor drivers.

 Use the motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)
 function to get motors going in either CW, CCW, BRAKEVCC, or
 BRAKEGND. Use motorOff(int motor) to turn a specific motor off.

 The motor variable in each function should be either a 0 or a 1.
 pwm in the motorGo function should be a value between 0 and 255.
 */
#define BRAKEVCC 0
#define CW   1
#define CCW  2
#define BRAKEGND 3
#define CS_THRESHOLD 100

/*  VNH2SP30 pin definitions
 xxx[0] controls '1' outputs
 xxx[1] controls '2' outputs */
int inApin[2] = {7, 4};  // INA: Clockwise input
int inBpin[2] = {8, 9}; // INB: Counter-clockwise input
int pwmpin[2] = {5, 6}; // PWM input
int cspin[2] = {2, 3}; // CS: Current sense ANALOG input
int enpin[2] = {0, 1}; // EN: Status of switches output (Analog pin)

int statpin = 13;

void setup()
{
  Serial.begin(9600);
 
  pinMode(statpin, OUTPUT);

  // Initialize digital pins as outputs
  for (int i=0; i<2; i++)
  {
    pinMode(inApin[i], OUTPUT);
    pinMode(inBpin[i], OUTPUT);
    pinMode(pwmpin[i], OUTPUT);
  }
  // Initialize braked
  for (int i=0; i<2; i++)
  {
    digitalWrite(inApin[i], LOW);
    digitalWrite(inBpin[i], LOW);
  }
  // motorGo(0, CW, 1023);
  // motorGo(1, CCW, 1023);
}

void loop()
{
  motorGo(0, CW, 1023);
  motorGo(1, CCW, 1023);
  delay(500);

  motorGo(0, CCW, 1023);
  motorGo(1, CW, 1023);
  delay(500);
 
  if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD))
    digitalWrite(statpin, HIGH);
}

void motorOff(int motor)
{
  // Initialize braked
  for (int i=0; i<2; i++)
  {
    digitalWrite(inApin[i], LOW);
    digitalWrite(inBpin[i], LOW);
  }
  analogWrite(pwmpin[motor], 0);
}

/* motorGo() will set a motor going in a specific direction
 the motor will continue going in that direction, at that speed
 until told to do otherwise.

 motor: this should be either 0 or 1, will selet which of the two
 motors to be controlled

 direct: Should be between 0 and 3, with the following result
 0: Brake to VCC
 1: Clockwise
 2: CounterClockwise
 3: Brake to GND

 pwm: should be a value between ? and 1023, higher the number, the faster
 it'll go
 */
void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)
{
  if (motor <= 1)
  {
    if (direct <=4)
    {
      // Set inA[motor]
      if (direct <=1)
        digitalWrite(inApin[motor], HIGH);
      else
        digitalWrite(inApin[motor], LOW);

      // Set inB[motor]
      if ((direct==0)||(direct==2))
        digitalWrite(inBpin[motor], HIGH);
      else
        digitalWrite(inBpin[motor], LOW);

      analogWrite(pwmpin[motor], pwm);
    }
  }
}
Upload ke arduino dan silahkan dicoba Salam Arduino Indonesia

video tutorial Belajar Arduino Driver Monster Moto Shield

Selasa, 26 Juli 2016

Belajar Arduino Ethernet Modul

hallo Sobat Arduino Indonesia,

Sekarang lagi musim IOT nih, apa apa serba IOT (Internet Of Things). Sudah banyak diterapkan di kota-kota besar, pernah dengar Smart City kan, lha itu semuanya sudah nyambung ke internet, atau bisa di bilang Internet Of Things. Pada share kali ini tidak membahas tentang Internet of Things nya, tapi tentang koneksi arduino ke Jaringan komputer. Jadi nanti sobat bisa akses Arduino melalui browser dari komputer.

Lets go biar gak lama-lama
Bahan-bahan yang dibutuhkan sebagai berikut

1. Ethernet Module W5100
2. Arduino Uno Clone

  
3. Kabel Jumper dan kabel ethernet 

Ethernet module yang di gunakan adalah type W5100, koneksi yang digunakan oleh ethernet ini dengan arduino adalah spi, jadi kita gunakan mosi, miso, sck, reset.

Berikut konfigurasi pin ethernet module dengan pin arduino


Setelah koneksi semua ke pin arduino dan ethernet module, buka arduino dan pilih example - ethernet - WebServer
atau sobat bisa copy paste dari program belajar arduino ethernet module berikut ini

/*
  Web Server

 A simple web server that shows the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield.

 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)

 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 modified 02 Sept 2015
 by Arturo Guadalupi

 */

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
    Ethernet.maintain();
  }
}
Langkah selanjutnya sambungkan kabel ethernet antara module ethernet dengan komputer, biar bisa terkonek jangan lupa setting IP di local komputer biar sama sama address nya. Untuk setting local komputer bisa di Control Panel - Network (pilih view Network Status and task) maka akan muncul berikut ini

Pilih Local Area Connection, dan


Pilih Properties - Internet Protocol Version (TCP/IPv4). kemudian isi ip Adress nya

 
 Setelah di isi, setting juga di arduino software yang sebelumnya sudah di tampilkan tadi, ganti

//IPAddress ip(192, 168, 1, 177);

IPAddress ip(192, 168, 0, 101); //ip ini digunakan untuk mengakses data dari arduino


Upload program arduino.

Tips : Jika pada proses uploadnya gagal-gagal terus, kabel jumper yang menuju ke reset di cabut dahulu, kemudian setelah upload berhasil, baru di sambungkan kembali

Ketika proses upload sudah berhasil buka browser dan ketikan di url nya 192.168.0.101 kemudian tekan enter
 
Data yang diatas adalah data yang didapat dari pin analog arduino.
Untuk lebih jelasnya bisa di lihat pada video berikut ini, jangan lupa like, comment dan subscribe ya biar cepet update nya. Salam Arduino Indonesia

 

Selasa, 19 Juli 2016

Memprogram Arduino Driver Shield L293 Robotale

Hallo Sobat Arduino Indonesia a.k.a AWI'ers,

Pada kesempatan kali ini saya akan share bagaimana cara memprogram shield driver Arduino L293 produk dari Robotale. Shield driver ini berfungsi untuk mengatur/mengendalikan motor DC, jadi sobat Arduino Indonesia bisa mengatur maju/mundur dan memberikan speed/kecepatan sesuai dengan yang di inginkan. Oke Langsung aja ya

Bahan yang dibutuhkan
Arduino Uno
Shield Driver L293 Robotale


Shield Driver Motor L293 Robotale ini menggunakan 4 pin digital dari arduino yaitu
  • pin Direction A  menggunakan pin 4,
  • pin Direction B  menggunakan pin 7,
  • pin Enable/speed A  menggunakan pin 5,
  • pin Enable/speed B  menggunakan pin 6.
Untuk pemrograman arduino driver motor bisa dilihat berikut ini:

/*
DRIVER SHIELD ARDUINO UNO - ROBOTALE
SEKOLAHROBOT.COM
ARDUINO.WEB.ID
*/

int dir_a = 4;
int dir_b = 7;
int pwm_a = 5;
int pwm_b = 6;

void setup()
{
  pinMode(pwm_a, OUTPUT);
  pinMode(pwm_b, OUTPUT);
  pinMode(dir_a, OUTPUT);
  pinMode(dir_b, OUTPUT);
}

void loop()
{
  maju();
  delay(1000);
  mundur();
  delay(1000);

}

void maju()
{
  digitalWrite(dir_a,HIGH);
  analogWrite(pwm_a,255);
  digitalWrite(dir_b,HIGH);
  analogWrite(pwm_b,255);
 
}

void mundur()
{
  digitalWrite(dir_a,LOW);
  analogWrite(pwm_a,255);
  digitalWrite(dir_b,LOW);
  analogWrite(pwm_b,255);
 
}
void belokkiri()
{
   digitalWrite(dir_a,HIGH);
  analogWrite(pwm_a,255);
  digitalWrite(dir_b,LOW);
  analogWrite(pwm_b,255);

}

void belokkanan()
{
  digitalWrite(dir_a,LOW);
  analogWrite(pwm_a,255);
  digitalWrite(dir_b,HIGH);
  analogWrite(pwm_b,255);

}

Untuk dicoba di mobile robot, kita tinggal colokkan output shield driver motor ke arduino uno. Seperti pada gambar berikut ini, diperlukan 2 buah moto dc, dan  di colokkan ke shield driver motor

Untuk lebih jelasnya ini ada video bagaimana menggunakan shield driver motor DC

 

Salam Arduino Indonesia