Tampilkan postingan dengan label arduino. Tampilkan semua postingan
Tampilkan postingan dengan label arduino. Tampilkan semua postingan

Sabtu, 07 Februari 2015

Game flappybird dengan arduino joystick shield dan nokia 5110 lcd display.

Masih ingat dengan game flappybird yang sempat booming pada perangkat android?
kali ini kita akan membuat game yang membuat ketagihan tersebut dengan arduino.
Cukup menggunakan board arduino uno maupun leonardo, joystick shield, serta nokia 5110 lcd display module.
Dengan menggunakan arduino joystick shield yang sudah terdapat slot untuk memasang nokia 5110 lcd display sehingga memudahkan kita untuk memasang layar dan tidak diperlukan pengkabelan lagi.
oke, langsung saja untuk kode pemrogramannya silahkan download file di bawah ini:

DOWNLOAD

Di dalam file tersebut juga sudah saya sertakan arduino library yang mendukung.
Jangan lupa untuk merubah  switch pada arduino joystick shield ke 3.3 volt.
Berikut ini beberapa gambar(maaf kalo jelek) dan video hasil percobaan.
Lets Have fun!.






Rabu, 21 Januari 2015

2 Axis CNC Plotter dari CDROM Bekas

Proyek kali ini adalah proyek sudah lama saya buat, bahkan alatnya pun sudah saya bongkar. Karena rencananya akan mengupgrade cnc yang sudah dibuat tapi sampai sekarang belum kesampaian.
Sebetulnya saya berencana membuat cnc plotter 3 axis namun karena dari 4 buah cdrom bekas yang saya bongkar stepper motor yang bisa digunakan ternyata hanya 2 buah.
Sebagai drivernya untuk menjalankan motor stepper menggunakan EasyDriver  chip A3967. Sedangkan untuk softwarenya menggunakan GRBL sebagai G-code interpreter.
Jangan lupa untuk menggunakan heatsink sebagai pendingin chip A3967 karena saat bekerja chip lumayan panas.
Berikut ini bebrapa gambar dan video dokumentasi yang masih tersisa.



video saat potter bekerja

Kamis, 23 Oktober 2014

Desktop Running Text



Teinspirasi dari banner running text yang biasa terdapat di depan toko.
Kali ini kita akan membuat desktop running text, yaitu banner running text portable yang bisa dijadikan hiasan di atas meja. Menggunakan board arduino dan i2c 1602 lcd tutorial kali ini mirip dengan tutorial sebelumnya Program i2c display pada arduino uno, mega 2560, dan leonardo
 dengan sedikit modifikasi pada kode pemrogramannnya.
Berikut ini adalah kode yang digunakan:

/* STARobotic.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC  A0 A1 A2"STARobotic.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h>  // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);  // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//none
void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  lcd.begin(16,2);         // initialize the lcd for 16 chars 4 lines
}
void loop()
 {
  int i;
  lcd.setCursor(0, 0);
  lcd.print(" starobotic.com      starobotic.com ");
  lcd.setCursor(0, 1);
  lcd.print("* arduino * shield * sensor * module *");
  for (i = 0 ; i < 16; i ++) {
      lcd.scrollDisplayLeft();
      delay(600);
  }
}

/* ( THE END ) */ 


Silahkan copykan kode diatas pada arduino ide dan upload pada board arduino.
dan berikut ini adalah proses pembuatan desktop running text.

test program


pembuatan box



 
pengecatan dan  perakitan
finish



video desktop running text:

Selasa, 25 Februari 2014

USB Wireless Gamepad Robot Control


 100_8989 100_8990
Jika pada tutorial sebelumnya kita membuat robot yang berjalan secara otomatis (Membuat Robot Rover Self avoiding), kali ini kita akan membuat robot yang dikendalikan menggunakan usb wireless gamepad. Alat dan bahan untuk membuat robot remote control inipun sama dengan Membuat Robot Rover Self avoiding yaitu: arduino, arduino l293d motor shield, serta usb host shield untuk menghubungkan usb wireless gamepad dengan arduino.
Untuk dapat menggunakan usb host shield, anda perlu menambahkan usb host shield library pada arduino IDE. Anda dapat mendownload usb host shield library dengan mengklik link si bawah ini:
USB Host Library
Sedangkan program robotnya anda dapat mendownloadnya pada link berikut:
Robot Remote Control
Berikut ini video robot yang telah berhasil dibuat:

Senin, 24 Februari 2014

Program i2c display pada arduino uno, mega 2560, dan leonardo


Pada tutorial ini saya akan menunjukkan cara menghubungkan lcd display yang menggunakan interface i2c dengan arduino. Sebelum itu kita perlu memperhatikan i2c backpack pada lcd yang akan kita pergunakan, karena ternyata ada berbagai jenis i2c backpack yang beredar di pasaran dan setiap jenisnya menggunakan library yang berbeda. Lcd yang saya gunakan memiliki kode GY-IICLCD pada bagian backpack. Untuk library yang digunakan nanti akan saya sertakan link downloadnya pada bagian akhir postingan.
connect:

100_8987i2c display        Arduino uno                 
vcc---------------------- 5V
scl----------------------- A5
sda---------------------- A4
gnd--------------------- GND



100_8985
i2c display        Arduino leonardo                  
vcc---------------------- 5V
scl----------------------- pin3
sda---------------------- pin2
gnd---------------------- GND



100_8988i2c display        Arduino mega 2560                 
vcc---------------------- 5V
scl----------------------- pin20
sda---------------------- pin21
gnd---------------------- GND



Example program yang digunakan:

/* STARobotic.com Example Software Sketch
20 character 4 line I2C Display
Backpack Interface labelled "LCM1602 IIC  A0 A1 A2"
STARobotic.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h>  // Comes with Arduino IDE
// Get the LCD I2C Library here:
//
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>

/*-----( Declare Constants )-----*/
//none
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);  // Set the LCD I2C address

/*-----( Declare Variables )-----*/
//none

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);  // Used to type in characters

  lcd.begin(16,2);         // initialize the lcd for 16 chars 4 lines
// NOTE: Cursor Position: CHAR, LINE) start at 0 
  lcd.setCursor(0,0);
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(1,1);
  lcd.print("  STARobotic  ");
  delay(1000); 
  lcd.setCursor(0,0);
  lcd.print("1602 Display");
  lcd.setCursor(0,1);
  delay(5000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Start Serial Mon");
  lcd.setCursor(0,1);
  lcd.print("Type chars 2 lcd");  

}/*--(end setup )---*/
void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  {
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the screen
      lcd.clear();
      // read all the available characters
      while (Serial.available() > 0) {
        // display each character to the LCD
        lcd.write(Serial.read());
      }
    }
  }

}/* --(end main loop )-- */
/* ( THE END ) */
 
Arduino i2c lcd library, click:
STARobotic












Selasa, 06 Agustus 2013

Skema Arduino Sensor Shield V5.0

 

arduino-sensor-shield-v5.jpg

Arduino sensor shield v5.0 merupakan salah satu shield arduino yang berfungsi untuk menghubungkan board arduino dengan modul elektronik maupun sensor yang akan digunakan.

interface yang didukung:

  • IIC interface
  • Servo controller
  • Bluetooth module
  • SD card module
  • APC220 radio frequency
  • RB URF v1.1 ultrasonic sensor
  • 12864 LCD serial dan parallel

Untuk dapat menggunakan sensor shield tersebut, kita perlu memahami skema bagaimana interface-interface tersebut terhubung dengan port-port pada board arduino.

berikut ini adalah gambar skema dari arduino sensor shield v5.0

arduino-sensor-shield

Senin, 05 Agustus 2013

Membuat Robot Rover Self avoiding


self avoiding robot rover
Tutorial kali ini akan dijelaskan tentang bagaimana cara membuat robot jenis rover yang dapat menghindari penghalang secara otomatis.
Bahan-bahan:
  • baterai x8
  • motor gearbox + roda X4
  • 4xAA baterai holder x2
  • saklar
  • kabel
  • arduino uno
  • dual l293d motor shield
  • microservo
  • hc-sr04 ultrasonic sensor

cara merakit:
  • hubungkan servo dengan konektor servo di serv0.
  • rakit 2 motor secara pararel kemudian hubungkan masing_masing pasangan motor dengan M1 dan M3.
  • hubungkan baterai holder dengan saklar, kemudian hubungkan dengan konektor eksternal power pada motor shield. 
  • hubungkan ultrasonic sensor pada motor shield (trig ke a5, echo ke a4, vcc ke 5v, grnd ke ground).
  • download program robot pada arduino uno.
  • satukan motor shield dengan arduino.

kode program:
#include <AFMotor.h>
#include <Servo.h>
#include <Ultrasonic.h>
typedef enum {
  RADAR_LEFT = 0, RADAR_CENTER = 60, RADAR_RIGHT = 120 } RadarDirection;
Servo radarServo;  // create servo object to control a servo
int RADAR_INPUT_PIN = 9;
int RADAR_MOVEMENT_DELAY = 250;
int RADAR_DISTANCE_MINIMAL_IN_CM = 80; // centimeter
int RADAR_DISTANCE_UNKNOWN_IN_CM = 0; // centimeter
int RADAR_DISTANCE_UNDEFINED = -1;
Ultrasonic radarUltrasonic(A5,A4);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
AF_DCMotor motorRight(1, MOTOR12_64KHZ); // create motor #1, 64KHz pwm
int MOTOR_SPEED = 200;// 150;
int MOTOR_TURN_SPEED = 200; //250;
int MOTOR_DELAY = 150;
int MOTOR_TURN_DELAY = 500;
int MOTOR_BACKWARD_DELAY = 1000;
struct RobotState {
  int leftMotorDirection;
  int rightMotorDirection;
  int leftMotorSpeed;
  int rightMotorSpeed;
  int motorDelay;
  boolean isBackwardState;
};
struct RadarDistances {
  int left;
  int center;
  int right;
};
RobotState forwardState = {
  FORWARD,FORWARD,MOTOR_SPEED,MOTOR_SPEED,MOTOR_DELAY,false};
RobotState backwardState = {
  BACKWARD,BACKWARD,MOTOR_SPEED,MOTOR_SPEED,MOTOR_BACKWARD_DELAY,true};
RobotState backwardUturnState = {
  FORWARD,BACKWARD,MOTOR_SPEED,MOTOR_SPEED,MOTOR_TURN_DELAY,true};
RobotState turnLeftState = {
  RELEASE,FORWARD,MOTOR_SPEED,MOTOR_TURN_SPEED,MOTOR_TURN_DELAY,false};
RobotState turnRightState = {
  FORWARD,RELEASE,MOTOR_TURN_SPEED,MOTOR_SPEED,MOTOR_TURN_DELAY,false};
RobotState stopState = {
  RELEASE,RELEASE,MOTOR_SPEED,MOTOR_SPEED,MOTOR_BACKWARD_DELAY,false};
RobotState currentState = forwardState;
RadarDistances currentDistances = {
  RADAR_DISTANCE_UNDEFINED,RADAR_DISTANCE_UNDEFINED,RADAR_DISTANCE_UNDEFINED};
RadarDistances lastDistances = {
  RADAR_DISTANCE_UNDEFINED,RADAR_DISTANCE_UNDEFINED,RADAR_DISTANCE_UNDEFINED};
void setup() {
  initTrace();
  initRadar();
  initMotors();
}
void initTrace(){
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("My First Robot");
}
void initRadar(){
  radarServo.attach(RADAR_INPUT_PIN);  // attaches the servo on pin RADAR_INPUT_PIN to the servo object
  radarServo.write(RADAR_CENTER);
}
void initMotors(){
  motorLeft.setSpeed(MOTOR_SPEED);     // set the speed to 200/255
  motorRight.setSpeed(MOTOR_SPEED);     // set the speed to 200/255
}
void loop() {
  calculateRobotState();
  makeDistancesSnapshot();
  go();
}
void calculateRobotState(){
  measureDistanceAhead();
  if(
    isCenterDistanceUndefinded() ||
    isNoObstacleInPathAhead())
  {
//    if(isInCorner()){
//      currentState = backwardState; 
//      return;
//    }
    currentState = forwardState; 
    return;
  }
  measureDistanceLeft();
  measureDistanceRight();
  if(greater(currentDistances.left,currentDistances.right)){
    currentState = turnLeftState; 
    return;
  }
  if(greater(currentDistances.right,currentDistances.left)){
    currentState = turnRightState; 
    return;
  }
  if(eq(currentDistances.left,currentDistances.right)){
    currentState = backwardState; 
    return;
  }
  currentState = stopState;
}
void go(){
  Serial.print("Go : { ");
  Serial.print(currentState.leftMotorDirection);
  Serial.print(" , ");
  Serial.print(currentState.rightMotorDirection);
  Serial.println(" }");
  Serial.print("with : { left:");
  Serial.print(currentDistances.left);
  Serial.print(" , center:");
  Serial.print(currentDistances.center);
  Serial.print(" , right:");
  Serial.print(currentDistances.right);
  Serial.println(" }");
  motor();
}
void motor(){
  motorLeft.setSpeed(currentState.leftMotorSpeed);
  motorRight.setSpeed(currentState.rightMotorSpeed);
  motorLeft.run(currentState.leftMotorDirection);
  motorRight.run(currentState.rightMotorDirection);
  if(currentState.isBackwardState){
    delay(currentState.motorDelay);
    motorLeft.setSpeed(backwardUturnState.leftMotorSpeed);
    motorRight.setSpeed(backwardUturnState.rightMotorSpeed);
    motorLeft.run(backwardUturnState.leftMotorDirection);
    motorRight.run(backwardUturnState.rightMotorDirection);
    delay(backwardUturnState.motorDelay);
  }
}
void measureDistanceLeft(){
  moveRadarFastTo(RADAR_LEFT);
  currentDistances.left = internalMeasure();
}
void measureDistanceRight(){
  moveRadarFastTo(RADAR_RIGHT);
  currentDistances.right = internalMeasure();
}
void measureDistanceAhead(){
  moveRadarFastTo(RADAR_CENTER);
  currentDistances.center = internalMeasure();
}
int internalMeasure(){
  long microsec = radarUltrasonic.timing();
  return radarUltrasonic.convert(microsec, Ultrasonic::CM);
}
void moveRadarFastTo(int radarServoPosition){
  radarServo.write(radarServoPosition);              // tell servo to go to position in variable 'pos'
  delay(RADAR_MOVEMENT_DELAY);
}
boolean isCenterDistanceUndefinded(){
  return currentDistances.center == RADAR_DISTANCE_UNKNOWN_IN_CM;
}
boolean isNoObstacleInPathAhead(){
  return currentDistances.center >= RADAR_DISTANCE_MINIMAL_IN_CM;
}
boolean isInCorner(){
  boolean left = eq(currentDistances.left,lastDistances.left);
  boolean center = eq(currentDistances.center,lastDistances.center);
  boolean right = eq(currentDistances.right,lastDistances.right);
  return left && center && right;
}
boolean eq(int a, int b){
  int epsilon = 5;
  int diff = a - b;
  diff = diff < 0 ? (-1)*diff : diff;
  return diff <= epsilon ? true : false;
}
boolean greater(int a, int b){
  int epsilon = 5;
  int diff = a - b;
  if(diff > 0){
    diff = diff - epsilon;
  }
  return diff > 0;
}
void makeDistancesSnapshot(){
  lastDistances.left = currentDistances.left;
  lastDistances.center = currentDistances.center;
  lastDistances.right = currentDistances.right;
}
 
video robot rover 4 roda:

video robot 2 roda:



























Sabtu, 03 Agustus 2013

Arduino L293D Motor Drive Shield

 

arduino dual l293d motor shield

Dual l293d motor shield, merupakan shield arduino yang mudah penggunaannya untuk pembuatan aplikasi robot beroda. Karena shield ini dapat menjalankan 4 buah motor dan dua buah servo sekaligus. Shield ini adalah produk buatan dari adafruit. Namun dipasaran, sudah banyak beredar produk yang serupa (clone) dengan harga yang lebih murah.

Spesifikasi lengkap shield ini adalah sebagai berikut.

-2 konektor untuk 5V Servo.
- Dapat menjalankan 4 motor DC atau 2 stepper motor atau 2 Servo.
- Dapat menjalankan 4 motor bi-directional DC dengan kecepatan pemilihan 8-bit.
- Menjalankan 2 stepper motor (unipolar atau bipolar) dengan single coil atau double coil.
- 4 H-Bridges: per bridge menyediakan 0.6A (1.2A saat puncak) dengan perlindungan termal, dapat menjalankan motor  4.5V sampai 36V DC.
- Tombol reset.
- 2 konektor daya eksternal.
- Kompatibel untuk Uno, Mega Diecimila & Duemilanove.

Untuk file librarynya bisa mendownload di link di bawah ini.

arduino motor shield library

contoh program

1. Motor_shield_test_01

#include <AFMotor.h>

AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Motor test!");
  motor.setSpeed(200);     // set the speed to 200/255
}

void loop() {
  Serial.print("tick");
  motor.run(FORWARD);      // turn it on going forward
  delay(1000);

  Serial.print("tock");
  motor.run(BACKWARD);     // the other way
  delay(1000);


  Serial.print("tack");
  motor.run(RELEASE);      // stopped
  delay(1000);
}

 

2. Motor_shield_test_02

#include <AFMotor.h>

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

void setup()
{
  motor1.setSpeed(100); 
  motor2.setSpeed(100); 
  motor3.setSpeed(100); 
  motor4.setSpeed(100);
}
void loop()
{
  motor1.run(FORWARD); 
  motor2.run(FORWARD); 
  motor3.run(FORWARD); 
  motor4.run(FORWARD);
  ::delay(5000);
  motor1.run(RELEASE);
  motor2.run(RELEASE); 
  motor3.run(RELEASE); 
  motor4.run(RELEASE); 
  ::delay(5000);
}

Jumat, 17 Mei 2013

HC-SR04 ultrasonic sensor test

 

HC-SR04 merupakan sensor ultrasonic untuk mendeteksi jarak.

spesifikasi:

voltase :5V DC (high), 0V DC (low)
arus kerja : <2mA
sudut efektif: <15°
jarak efektif : 2cm – 500 cm
ketelitian : 0.3 cm

jumlah pin 4 buah, yaitu VCC,TRIG,ECHO,GND

Untuk melakukan test pada HC-SR04 kita buat rangkain sebagai berikut:

ping test

kemudian kita download program pada arduino:

/*
HC-SR04 Ping distance sensor]
VCC to arduino 5v GND to arduino GND
Echo to Arduino pin 13 Trig to Arduino pin 12
Red POS to Arduino pin 11
Green POS to Arduino pin 10
560 ohm resistor to both LED NEG and GRD power rail
More info at: http://goo.gl/kJ8Gl
Original code improvements to the Ping sketch sourced from Trollmaker.com
Some code and wiring inspired by http://en.wikiversity.org/wiki/User:Dstaub/robotcar
*/

#define trigPin 13
#define echoPin 12
#define led 11
#define led2 10

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(led, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  long duration, distance;
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
//  delayMicroseconds(1000); - Removed this line
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance < 4) {  // This is where the LED On/Off happens
    digitalWrite(led,HIGH); // When the Red condition is met, the Green LED should turn off
  digitalWrite(led2,LOW);
}
  else {
    digitalWrite(led,LOW);
    digitalWrite(led2,HIGH);
  }
  if (distance >= 200 || distance <= 0){
    Serial.println("Out of range");
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");
  }
  delay(500);
}

 

Untuk mengetahui jarak pengukuran kita hubungkan arduino dengan komputer menggunakan kabel usb kemudian pilih menu serial monitor pada software arduino.

 

video hasil pengujian:

 

Rabu, 01 Mei 2013

Pengaman Back-EMF

 

Back Electro-Motive Force (Back-EMF) menggambarkan energi yang harus dibuang
ketika medan elektro-magnetik berhenti dari induktor. Hal ini terjadi setiap kali motor
berhenti atau berubahan arah. Jika tegangan tidak dapat keluar melalui dioda pengaman, hal itu dapat merusak transistor yang tidak terlindungi dan mungkin saja bisa merusak pin Arduino yang mengontrolnya.

Oleh karena itu agar Back-EMF tidak merusak arduino. Kita bisa membuat rangkaian pengamannya dengan 4 buah dioda yang disolder pada motor listrik. Langkah membuatnya akan dijelaskan dengan gambar.

gambar rangkaian dioda

 dioda

Hubungkan kaki-kaki dioda, bisa juga disolder

Solder rangkaian pada motor listrik.

Solder kabel sebagai penghubung ke sumber arus. Agar lebih kuat bisa kita gunakan lem bakar/glue gun pada ragkaian.

Selasa, 23 April 2013

Dadu Digital

 

Bermain dengan papan permainan seperti ular tangga, monopoli dan berbagai permainan yang lain memang sangat menyenangkan. Semua permainan ini memerlukan dadu sebagai syarat utama permainan. Akan tetapi, karena ukurannya yang kecil, dadu ini sering kali hilang. Padahal tanpa dadu permainan tidak bisa berjalan.

Jilka hal tersebut terjadi kita bisa membuat dadu digital dengan menggunakan beberapa buah lampu led dan arduino uno. Bahkan hasilkan labih bagus daripada dadu biasa karena saat mengacak nomor, lampu-lampu led pada dadu elektronik tersebut akan berkerlap-kerlip,  sangat menarik.

Atau bagi yang hanya iseng dan ingin belajar arduino dapat megikuti totorial kali ini karena tutorial kali ini sedikit lebih rumit daripada tutorial arduino sebelumnya.

Rangkaiannya adalah sebagai berikut:

digital dice led arduino 

Resistor yang berhubungan dengan lampu led bernilai 330 ohm sedangkan resistor yang berhubungan dengan saklar tekan bernilai 1k ohm.

Kode program arduino:

 

int ledPins[7] = {2, 3, 4, 5, 6, 7, 8};
int dicePatterns[7][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 1
{0, 0, 1, 1, 0, 0, 0}, // 2
{0, 0, 1, 1, 0, 0, 1}, // 3
{1, 0, 1, 1, 0, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 1, 1, 1, 1, 1, 0}, // 6
{0, 0, 0, 0, 0, 0, 0} // BLANK
};
int switchPin = 9;
int blank = 6;
void setup()
{
for (int i = 0; i < 7; i++)
{
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
randomSeed(analogRead(0));
}
void loop()
{if (digitalRead(switchPin))
{
rollTheDice();
}
delay(100);
}
void rollTheDice()
{
int result = 0;
int lengthOfRoll = random(15, 25);
for (int i = 0; i < lengthOfRoll; i++)
{
result = random(0, 6); // result will be 0 to 5 not 1 to 6
show(result);
delay(50 + i * 10);
}
for (int j = 0; j < 3; j++)
{
show(blank);
delay(500);
show(result);
delay(500);
}
}
void show(int result)
{
for (int i = 0; i < 7; i++)
{
digitalWrite(ledPins[i], dicePatterns[result][i]);
}
}

 

Contoh video dadu digital jika sudah jadi

 

 

source: 30 arduino projects for the evil genius

Senin, 22 April 2013

Moody Lamp dengan Arduino

 

Pernahkah anda melihat jam alarm yang dapat berubah-berubah warnanya?

sungguh menarik bukan?

Tutorial kali ini kita akan membuat hal yang sama menggunakan rgb led dan tentu saja arduino uno.

Sebelumnya alangkah baiknya kita untuk mengenal terlebih dahulu mengenai rgb led.

Ada 2 jenis rgb led yaitu:

  • rgb led common cathode
  • rgb led common anode

rgb led schematic

Perbedaanya adalah pada kaki yang paling panjang dari led, dimana rgb led common cathode memiliki kutub negatif, sedangkan rgb led common anode memiliki kutub positif.

Itulah sedikit penjelasan tentang rgb led. Selanjutnya penjelasan tentang pembuatan moody lamp.

Pertama tama kita buat rangkain seperti berikut dengan 3 buah resitor 330 ohm dan sebuah rgb led common anode.

rgb led arduino

Kemudian kita masukkan program berikut:

 

 

int redPin = 12; // Red LED connected to digital pin 12

int greenPin = 11; // Green LED connected to digital pin 11

int bluePin = 10; // Blue LED connected to digital pin 10

// The setup() method runs once, when the sketch starts

void setup() {

// initialize the digital pin as an output:

pinMode(redPin, OUTPUT); //sets the digital pin as output

pinMode(greenPin, OUTPUT); //sets the digital pin as output

pinMode(bluePin, OUTPUT); //sets the digital pin as output

}

// the loop() method runs over and over again,

// as long as the Arduino has power

void loop()

{

digitalWrite(redPin, HIGH); // set the Red LED on

digitalWrite(greenPin, LOW); // set the Green LED on

digitalWrite(bluePin, LOW); // set the Blue LED on

delay(1000); // waits for half a second

digitalWrite(redPin, HIGH); // set the Red LED on

digitalWrite(greenPin, HIGH); // set the Green LED on

digitalWrite(bluePin, LOW); // set the Blue LED on

delay(500); // waits for a qurater of a second

digitalWrite(redPin, LOW); // set the Red LED on

digitalWrite(greenPin, HIGH); // set the Green LED on

digitalWrite(bluePin, LOW); // set the Blue LED on

delay(1000); // waits for half a second

digitalWrite(redPin, LOW); // set the Red LED on

digitalWrite(greenPin, HIGH); // set the Green LED on

digitalWrite(bluePin, HIGH); // set the Blue LED on

delay(500); // waits for a quarter of a second

digitalWrite(redPin, HIGH); // set the Red LED on

digitalWrite(greenPin, LOW); // set the Green LED on

digitalWrite(bluePin, HIGH); // set the Blue LED on

delay(1000); // waits for half a second

digitalWrite(redPin, LOW); // set the Red LED on

digitalWrite(greenPin, HIGH); // set the Green LED on

digitalWrite(bluePin, HIGH); // set the Blue LED on

delay(500); // waits for a quarter of a second

digitalWrite(redPin, LOW); // set the Red LED on

digitalWrite(greenPin, HIGH); // set the Green LED on

digitalWrite(bluePin, LOW); // set the Blue LED on

delay(1000); // waits for half a second

digitalWrite(redPin, HIGH); // set the Red LED on

digitalWrite(greenPin, HIGH); // set the Green LED on

digitalWrite(bluePin, LOW); // set the Blue LED on

delay(500); // waits for a quarter of a second

}

 

Kita bisa mengubah waktu menyala  maupun waktu jeda dari lampu led dengan mengubah nilai delay dari program diatas.

Untuk rangkaian lampu led common kathode kita tinggal merubah posisi kabel dari 5v arduino ke ground.

preview

Minggu, 21 April 2013

Mengenal Arduino

 

Arduino adalah platform prototipe elektronik open source yang fleksibel,mudah dalam penggunaan software maupun hardware.

Arduino ini ditujukan untuk kalangan seniman, desiner, penghoby elektronika maupun siapa saja yang tertarik menciptakan objek interaktif maupun instrumen.

Arduino bisa merasakan lingkungan dengan menerima masukan dari berbagai sensor dan dapat menghasilkan output untuk mengendalikan lampu, motor, dan aktuator lainnya.

Mikrokontroler diprogram menggunakan bahasa pemrograman Arduino (berdasarkan Wiring) dan lingkungan pengembangan Arduino (berdasarkan Processing).

Proyek Arduino dapat berdiri sendiri atau dapat berkomunikasi dengan perangkat lunak yang berjalan pada komputer (misalnya Flash, Pengolahan, MaxMSP).

Board arduino dapat dibuat oleh anda sendiri, perangkat lunak dapat didownload secara gratis. Desain referensi hardware (CAD file) tersedia di bawah lisensi open source, Anda bebas untuk menyesuaikannya dengan kebutuhan Anda.

Arduino menerima penghargaan di bagian Komunitas Digital Ars ​​Electronica Prix tahun 2006.

Tim Arduino adalah: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, dan David Mellis.

MKSP4-2T

gambar arduino uno, salah satu produk arduino.cc

 

 

sumber: arduino.cc

Memainkan Ringtone pada Arduino

 

10 tahun yang lalu, pada saat handphone masih belum secanggih seperti saat sekarang ini kita sering membuat ringtone dengan cara memasukkan kode-kode tertentu sehingga menghasilkan suatu melody. Dan jika sudah selesai, melody itulah yang kita gunakan sebagai ringtone kita.

Dengan menggunakan arduino kitapun juga bisa membuat ringtone seperti pada handphone-handphone jaman dahul (jadul). Caranya adalah kita sisipkan kode ringtone atau istilah resminya RTTTL Code ke dalam program yang sudah kita buat kemudian kita upload programnya ke dalam arduino.

Cara merangkainya seperti gambar di bawah ini:

melody

Dan berikut ini adalah program yang harus dimasukkan ke dalam arduino:

// A fun sketch to demonstrate the use of the Tone library.
// By Brett Hagman
// bhagman@roguerobotics.com
// www.roguerobotics.com

// To mix the output of the signals to output to a small speaker (i.e. 8 Ohms or higher),
// simply use 1K Ohm resistors from each output pin and tie them together at the speaker.
// Don't forget to connect the other side of the speaker to ground!

// You can get more RTTTL (RingTone Text Transfer Language) songs from
// http://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation

#define OCTAVE_OFFSET 0
#define TONE_PIN 8

#define NOTE_C4  262
#define NOTE_CS4 277
#define NOTE_D4  294
#define NOTE_DS4 311
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_FS4 370
#define NOTE_G4  392
#define NOTE_GS4 415
#define NOTE_A4  440
#define NOTE_AS4 466
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_CS5 554
#define NOTE_D5  587
#define NOTE_DS5 622
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_FS5 740
#define NOTE_G5  784
#define NOTE_GS5 831
#define NOTE_A5  880
#define NOTE_AS5 932
#define NOTE_B5  988
#define NOTE_C6  1047
#define NOTE_CS6 1109
#define NOTE_D6  1175
#define NOTE_DS6 1245
#define NOTE_E6  1319
#define NOTE_F6  1397
#define NOTE_FS6 1480
#define NOTE_G6  1568
#define NOTE_GS6 1661
#define NOTE_A6  1760
#define NOTE_AS6 1865
#define NOTE_B6  1976
#define NOTE_C7  2093
#define NOTE_CS7 2217
#define NOTE_D7  2349
#define NOTE_DS7 2489
#define NOTE_E7  2637
#define NOTE_F7  2794
#define NOTE_FS7 2960
#define NOTE_G7  3136
#define NOTE_GS7 3322
#define NOTE_A7  3520
#define NOTE_AS7 3729
#define NOTE_B7  3951

int notes[] = { 0,
NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4,
NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_B5,
NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6, NOTE_E6, NOTE_F6, NOTE_FS6, NOTE_G6, NOTE_GS6, NOTE_A6, NOTE_AS6, NOTE_B6,
NOTE_C7, NOTE_CS7, NOTE_D7, NOTE_DS7, NOTE_E7, NOTE_F7, NOTE_FS7, NOTE_G7, NOTE_GS7, NOTE_A7, NOTE_AS7, NOTE_B7
};

//char *song = "The Simpsons:d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6";
//char *song = "Indiana:d=4,o=5,b=250:e,8p,8f,8g,8p,1c6,8p.,d,8p,8e,1f,p.,g,8p,8a,8b,8p,1f6,p,a,8p,8b,2c6,2d6,2e6,e,8p,8f,8g,8p,1c6,p,d6,8p,8e6,1f.6,g,8p,8g,e.6,8p,d6,8p,8g,e.6,8p,d6,8p,8g,f.6,8p,e6,8p,8d6,2c6";
//char *song = "Entertainer:d=4,o=5,b=140:8d,8d#,8e,c6,8e,c6,8e,2c.6,8c6,8d6,8d#6,8e6,8c6,8d6,e6,8b,d6,2c6,p,8d,8d#,8e,c6,8e,c6,8e,2c.6,8p,8a,8g,8f#,8a,8c6,e6,8d6,8c6,8a,2d6";
//char *song = "Looney:d=4,o=5,b=140:32p,c6,8f6,8e6,8d6,8c6,a.,8c6,8f6,8e6,8d6,8d#6,e.6,8e6,8e6,8c6,8d6,8c6,8e6,8c6,8d6,8a,8c6,8g,8a#,8a,8f";
//char *song = "Bond:d=4,o=5,b=80:32p,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d#6,16d#6,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d6,16c#6,16c#7,c.7,16g#6,16f#6,g#.6";
//char *song = "MASH:d=8,o=5,b=140:4a,4g,f#,g,p,f#,p,g,p,f#,p,2e.,p,f#,e,4f#,e,f#,p,e,p,4d.,p,f#,4e,d,e,p,d,p,e,p,d,p,2c#.,p,d,c#,4d,c#,d,p,e,p,4f#,p,a,p,4b,a,b,p,a,p,b,p,2a.,4p,a,b,a,4b,a,b,p,2a.,a,4f#,a,b,p,d6,p,4e.6,d6,b,p,a,p,2b";
//char *song = "StarWars:d=4,o=5,b=45:32p,32f#,32f#,32f#,8b.,8f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32e6,8c#.6,32f#,32f#,32f#,8b.,8f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32e6,8c#6";
//char *song = "GoodBad:d=4,o=5,b=56:32p,32a#,32d#6,32a#,32d#6,8a#.,16f#.,16g#.,d#,32a#,32d#6,32a#,32d#6,8a#.,16f#.,16g#.,c#6,32a#,32d#6,32a#,32d#6,8a#.,16f#.,32f.,32d#.,c#,32a#,32d#6,32a#,32d#6,8a#.,16g#.,d#";
//char *song = "TopGun:d=4,o=4,b=31:32p,16c#,16g#,16g#,32f#,32f,32f#,32f,16d#,16d#,32c#,32d#,16f,32d#,32f,16f#,32f,32c#,16f,d#,16c#,16g#,16g#,32f#,32f,32f#,32f,16d#,16d#,32c#,32d#,16f,32d#,32f,16f#,32f,32c#,g#";
//char *song = "A-Team:d=8,o=5,b=125:4d#6,a#,2d#6,16p,g#,4a#,4d#.,p,16g,16a#,d#6,a#,f6,2d#6,16p,c#.6,16c6,16a#,g#.,2a#";
//char *song = "Flinstones:d=4,o=5,b=40:32p,16f6,16a#,16a#6,32g6,16f6,16a#.,16f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c6,d6,16f6,16a#.,16a#6,32g6,16f6,16a#.,32f6,32f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c6,a#,16a6,16d.6,16a#6,32a6,32a6,32g6,32f#6,32a6,8g6,16g6,16c.6,32a6,32a6,32g6,32g6,32f6,32e6,32g6,8f6,16f6,16a#.,16a#6,32g6,16f6,16a#.,16f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c.6,32d6,32d#6,32f6,16a#,16c.6,32d6,32d#6,32f6,16a#6,16c7,8a#.6";
//char *song = "Jeopardy:d=4,o=6,b=125:c,f,c,f5,c,f,2c,c,f,c,f,a.,8g,8f,8e,8d,8c#,c,f,c,f5,c,f,2c,f.,8d,c,a#5,a5,g5,f5,p,d#,g#,d#,g#5,d#,g#,2d#,d#,g#,d#,g#,c.7,8a#,8g#,8g,8f,8e,d#,g#,d#,g#5,d#,g#,2d#,g#.,8f,d#,c#,c,p,a#5,p,g#.5,d#,g#";
//char *song = "MahnaMahna:d=16,o=6,b=125:c#,c.,b5,8a#.5,8f.,4g#,a#,g.,4d#,8p,c#,c.,b5,8a#.5,8f.,g#.,8a#.,4g,8p,c#,c.,b5,8a#.5,8f.,4g#,f,g.,8d#.,f,g.,8d#.,f,8g,8d#.,f,8g,d#,8c,a#5,8d#.,8d#.,4d#,8d#.";
//char *song = "MissionImp:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d";
//char *song = "KnightRider:d=4,o=5,b=125:16e,16p,16f,16e,16e,16p,16e,16e,16f,16e,16e,16e,16d#,16e,16e,16e,16e,16p,16f,16e,16e,16p,16f,16e,16f,16e,16e,16e,16d#,16e,16e,16e,16d,16p,16e,16d,16d,16p,16e,16d,16e,16d,16d,16d,16c,16d,16d,16d,16d,16p,16e,16d,16d,16p,16e,16d,16e,16d,16d,16d,16c,16d,16d,16d";
char *song = "MacGyver:d=4,o=6,b=150:8b4,8e5,8a5,8b5,a5,8e5,8b4,8p,8e5,8a5,8b5,8a5,8e5,b4,8p,8e5,8a5,8b5,a5,8e5,8b4,8p,8a5,8d,8c,8d,8c,8b5,8a5,8b4,8e5,8a5,8b5,a5,8e5,8b4,8p,8e5,8a5,8b5,8a5,8e5,b4,8p,8e5,8a5,8b5,a5,8e5,8b4,8p,8a5,8d,8c,8d,8c,8b5,8a5,b5,8p,2b5,8p,b5,8p,a5,d.,b5,8p,2b5,8p,8b5,8p,2a5,p,8c,8c,8c,8c,8c,8c,2b5,16p,8f#5,8a5,8p,2g5,8p,8c,8c,8p,b5,8a5,8b5,8a5,8g5,8p,e,2a5,16p,8c,8c,8p,2b5,8p,8f#5,8a5,8p,2g5,8p,8c,8c,8p,4b5,8a5,8b5,8a5,8g5,8p,4e,2a5,2b5,32p,8c,8b5,8a5,c,8b5,8a5,8d,8c,8b5,d,8c,8b5,e,8d,8e,f#,b5,g,8p,f#,f,b5,8g,8e,8b5,8f#,8d,8a5,8e,8c,8g5,8d,8b5,8g5,8c,8e5,8b5,8d5,8c,8b5,8a5,8g5,a#5,a5,8g,8g5,8d,8g5,8d#,8d#5,8a#5,8a5,8g5,8g4,8d5,8g4,8d#5,8g4,8a#4,8a4,8g4,8g4,8g4,8g4,8g4,8g4,8g4";
//char *song = "knockin:d=4,o=6,b=56:16f.,16f.,32f.,32d#.,d#,32d#.,32c#.,2d#,p,16f.,16f.,32f.,16d#,8d#.,32d#.,32c#.,16c#.,2a#5,p,16f.,16f.,32f.,32d#.,d#,32d#.,32c#.,2d#,p,16f.,16f.,32f.,2d#.,8d#.,32d#.,32c#.,c#,p";

void setup(void)
{
  Serial.begin(9600);
}

#define isdigit(n) (n >= '0' && n <= '9')

void play_rtttl(char *p)
{
  // Absolutely no error checking in here

  byte default_dur = 4;
  byte default_oct = 6;
  int bpm = 63;
  int num;
  long wholenote;
  long duration;
  byte note;
  byte scale;

  // format: d=N,o=N,b=NNN:
  // find the start (skip name, etc)

  while(*p != ':') p++;    // ignore name
  p++;                     // skip ':'

  // get default duration
  if(*p == 'd')
  {
    p++; p++;              // skip "d="
    num = 0;
    while(isdigit(*p))
    {
      num = (num * 10) + (*p++ - '0');
    }
    if(num > 0) default_dur = num;
    p++;                   // skip comma
  }

  Serial.print("ddur: "); Serial.println(default_dur, 10);

  // get default octave
  if(*p == 'o')
  {
    p++; p++;              // skip "o="
    num = *p++ - '0';
    if(num >= 3 && num <=7) default_oct = num;
    p++;                   // skip comma
  }

  Serial.print("doct: "); Serial.println(default_oct, 10);

  // get BPM
  if(*p == 'b')
  {
    p++; p++;              // skip "b="
    num = 0;
    while(isdigit(*p))
    {
      num = (num * 10) + (*p++ - '0');
    }
    bpm = num;
    p++;                   // skip colon
  }

  Serial.print("bpm: "); Serial.println(bpm, 10);

  // BPM usually expresses the number of quarter notes per minute
  wholenote = (60 * 1000L / bpm) * 4;  // this is the time for whole note (in milliseconds)

  Serial.print("wn: "); Serial.println(wholenote, 10);

  // now begin note loop
  while(*p)
  {
    // first, get note duration, if available
    num = 0;
    while(isdigit(*p))
    {
      num = (num * 10) + (*p++ - '0');
    }
    if(num) duration = wholenote / num;
    else duration = wholenote / default_dur;  // we will need to check if we are a dotted note after

    // now get the note
    note = 0;

    switch(*p)
    {
      case 'c':
        note = 1;
        break;
      case 'd':
        note = 3;
        break;
      case 'e':
        note = 5;
        break;
      case 'f':
        note = 6;
        break;
      case 'g':
        note = 8;
        break;
      case 'a':
        note = 10;
        break;
      case 'b':
        note = 12;
        break;
      case 'p':
      default:
        note = 0;
    }
    p++;

    // now, get optional '#' sharp
    if(*p == '#')
    {
      note++;
      p++;
    }

    // now, get optional '.' dotted note
    if(*p == '.')
    {
      duration += duration/2;
      p++;
    }
    // now, get scale
    if(isdigit(*p))
    {
      scale = *p - '0';
      p++;
    }
    else
    {
      scale = default_oct;
    }

    scale += OCTAVE_OFFSET;

    if(*p == ',')
      p++;       // skip comma for next note (or we may be at the end)

    // now play the note

    if(note)
    {
      Serial.print("Playing: ");
      Serial.print(scale, 10); Serial.print(' ');
      Serial.print(note, 10); Serial.print(" (");
      Serial.print(notes[(scale - 4) * 12 + note], 10);
      Serial.print(") ");
      Serial.println(duration, 10);
      tone(TONE_PIN, notes[(scale - 4) * 12 + note]);
      delay(duration);
      noTone(TONE_PIN);
    }
    else
    {
      Serial.print("Pausing: ");
      Serial.println(duration, 10);
      delay(duration);
    }
  }
}

void loop(void)
{
  play_rtttl(song);
  Serial.println("Done.");
  while(1);
}

 

 

 

Kodenya lumayan panjang memang, itu karena kode di atas terdiri dari beberapa lagu. Kita bisa memilih lagunya dengan cara menghilangkan tanda // di depan //char *song.

Kitapun bisa menambahkan lagu-lagu yang lain asalkan kita tahu kode RTTTL dari lagu tersebut. Untuk mencarinya kita bisa menggunakan bantuan mesin pencari GOOGLE dengan keyword RTTTL CODE.

Sabtu, 20 April 2013

Tutorial “Hello World” Arduino

 

Hello world  adalah program paling sederhana yang dibuat untuk seorang programmer untuk menampilkan kata “hello world” pada layar. Setiap bahasa pemrograman memiliki kode hello world tersendiri.

Arduino, sebagai alat yang bisa diprogram tentu memiliki program hello world, namun karena arduino tidak memiliki layar sebagai output untuk menampilkan program yang paling sederhana maka digunakan led sebagai penggantinya.

Rangkaiannya adalah sebagai berikut:

led1

kode program arduino:

/* Blinking LED
* ------------
*
* turns on and off a light emitting diode(LED) connected to a digital
* pin, in intervals of 2 seconds. Ideally we use pin 13 on the Arduino
* board because it has a resistor attached to it, needing only an LED

*
* Created 1 June 2005
* copyleft 2005 DojoDave <http://www.0j0.org>
* http://arduino.berlios.de
*
* based on an orginal by H. Barragan for the Wiring i/o board
*/

int ledPin = 13; // LED connected to digital pin 13

void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}

void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}


 



Pada bagian kode yang berwarna biru bisa kita ubah-ubah nilainya untuk mengubah waktu delai dan waktu menyala dari lampu led. Nilai 1000 berarti 1000 milisekon atau satu detik. jika ingin mengubah durasi menyala lampu led menjadi 2 detik maka tinggal kita rubah nilai pada digitalWrite(ledPin, HIGH); menjadi 2000.

Jumat, 19 April 2013

Fritzing

 

Fritzing adalah software gratis yang digunakan oleh desainer, seniman, dan para penghoby elektronika untuk perancangan berbagai peralatan elektronika.

Biasanya sebelum menggunakan program fritzing mereka akan membuat sebuah prototype dengan menggunakan komponen elektronika yang sebenarnya.

Prototype ini dibuat di atas papan breadboard sehingga jika terjadi kesalahan mudah diperbaiki. Selain itu juga bisanya dihubungkan dengan arduino jika prototype tersebut memerlukan program tambahan. Setelah prototype jadi dan tidak terdapat kesalahan maka dibuat rancangan dengan program .

Cara penggunaan program fritzing juga sangat mudah. Kita hanya tinggal meniru prototype yang sudah dibuat pada software fritzing. Drag and drop komponen yang disediakan pada software fritzing pada area kerja. Komponen yang disediakan pun lumayan lengkap, dari komponen dasar seperti resistor dan kapasitor sampai komponen yang lebih kompleks semisal ic dan berbagai mikrokontroller.

Tampilan softwarenya seperti berikut:

frt1

Dalam pembuatan skema dan jalur Pcb  dapat dilakukan software ini secara otomatis kita tinggal klik pada tab schematic/pcb untuk melihatnya. Juka jalur skema maupun jalur pcb masih belum sesuai dengan yang kita inginkan tinggal klik tombol reroute untuk menyesuaikannya.

fritzing2

frt3

berikut ini adalah penjelasan video dari website aslinya

 

sumber : fritzing.org