Showing posts with label ARDUINO. Show all posts
Showing posts with label ARDUINO. Show all posts

Tuesday, 8 April 2014

Projek siram pokok tanaman automatik

Haaa...
Ini projek baik punya... untuk siram sayur-sayur kat laman rumah aku incase aku cuti balik kampung seminggu... mau kering pokok sayur aku tu.. terutamanya pokok serai aku... Ni ade skit video pasal barang yang aku nak gunakan (SOLENOID 12V + RELAY + POWER SUPPLY) untuk projek tersebut.. hehehhe.. actually dah test dah skit..
Nanti kalau setel nanti aku update barangannya beserta pokok2 sayur aku tuh..

Pastu, masukkan alat nih, boleh cover banyak area cume kene control pressure je nanti

So, nanti nak kene beli paip, socket untuk attach kat kawasan penyiraman... Perlu guna Arduino + RTC clock module untuk siram waktu pagi (7:00) dan waktu petang (6:00). Untuk aplikasi ni, aku rase pro mini dah cukup... Kalau nak lagi best, pakai solar panel, memang green lah... eheheheeheh.. RTC aku ade jual, nanti stok sampai... Kalau nak jimat duit, guna adapter power supply 12V pon dah cukup. Pastu untuk masuk ke arduino, guna LM7805 + 2 x 10uf electrolytic capacitor untuk dapatka output 5V. LM7805 memang accurate sgt sebab aku measure guna multimeter, output 5V exactly kalau power supply dalam range 7-16 Volt. Tapi untuk SOLENOID 12V, boleh tap 12V dari power supply ke RELAY dan terus ke SOLENOID. RELAY Perlu untuk ON kan SOLENOID VALVE pada trigger tertentu bergantung kepada code. Sama ada nak GUNA RTC atau MANUAL TRIGGER pon boleh (Guna PUSHBUTTON) atau SOIL MOISTURE SENSOR.

Bagi aku, lagi elok guna RTC dari guna SOIL MOISTURE sebab kalau SOIL MOISTURE detector tu trigger waktu tengah hari, mau mati pokok aku tu ( Info untuk yang tak tau : Pokok sayur boleh Melecur/Mati jika disiram waktu panas/tengahhari). Combine RTC dengan Soil MOISTURE lagi bagus tapi bergantung kepada modal korang..


Thursday, 3 April 2014

LED DOT MATRIX V1.2 (3 LED MATRIX + 3 MAX7219 + Pro mini + Breadboarpower supply

Huh...

Rasenye lame gile dah aku tak update blog nih....hmm, sorilah sebab lame tak update... bz sgt sebab kenduri kawin situ sini, bz buat table top sendiri ( banyak kali runtuh..ekekekeke.), pastu memang banyak keje sangat.... so skarang nih aku nak bagi satu video terbaru pasal ARDUINO dan LED DOT MATRIX.... Ahah... Marilah menonton video ini..  sekian....


Thursday, 20 March 2014

Mini CNC with Arduino pro mini (work like charm again !!!)

Salam dan Selamat tengah hari

Arini aku mencuba produk baru, ARDUINO PRO MINI untuk projek CNC aku. Guess What!!!???, working like charm!!!... Evidence is here...White man say " A picture represent one thousand words ", But i say " A video represent a MILLION words ". So, let have a look guys... Sebelum bukak video nih, aku nak warning kat korang (PLEASE TURN DOWN VOLUME, takut2 tersakit plak telinge bunyi bising)
Yang nih proses kali pertama


Yang ni untuk dapatkan part (guna kardbod je)

Dan ini picturenye...


Monday, 17 March 2014

LED DOT MATRIX Mesej bergerak

Ha... projek ni kira tak susah sgt atau tak senang sangat, moderate ajer gitu. nih ade video yang aku dah buat, connection dan code aku bagitau kendian kalau ade org yang berminat nak tgk detail. Kalau nak tgk detail connection, sila komen. Link barang untuk dijual ade kat sini atau pergi ke site saya...http://www.mudah.my/rizmie-electronic



Thursday, 13 March 2014

Nokia LCD 5110 using Arduino

Salam dan Selamat Sejahtera

OK, sekarang aku nak share kat korang pasal projek aku LCD nokia... Nokia ni connection senang je cume tahap kepeningan codingnya amatlah memeningkan... tapi jangan risau... semua dah ade, tu yang best pakai arduino nih, copy-paste-edit..ahaha.... student2 memang suke sangat la nih.. nih aku tunjuk video skit..


Dan bahan2 yang diperlukan , macam biase, jumper wire, breadboard, UNO (aku pakai sparkfun) tp mane2 same je janji UNO based dan Nokia LCD (nanti aku bagi link-aku pon jual..hehehehe).
Connection nanti aku update kendian...
Link Nokia (kalu nak beli boleh cari kat store saya or SINI

Dan ini codenya...
//Basic code by MSIDRIS for NOKIA LCD 5110 84x48 ( Edit FROm ICSTATION)
// Using NOKIA LCD 5110 84x48 and Arduino uno..

//Function: This procedure applies to the Arduino driver NOKIA 5110 LCD.
//Time:September 4,2012
#define PIN_SCE   7 // CE
#define PIN_RESET 6 // RST
#define PIN_DC    5 // DC
#define PIN_SDIN  4 //DIN
#define PIN_SCLK  3 // CLK
// VCC = 3.3V, jangan guna 5V sebab nanti skrin jadi gelap skit
// Sambung GND ke GND
// Sambung LIGHT KE GROUND JUGAK

//The DC pin tells the LCD if we are sending a command or data
#define LCD_COMMAND 0 
#define LCD_DATA  1
#define LCD_C     LOW
#define LCD_D     HIGH
int count=0;
int time=0;
char dat[4];
char disp_tab[]={'0','1','2','3','4','5','6','7','8','9'};
#define LCD_X     84
#define LCD_Y     48
char buf[72]="A_simple_example_of_interfacing_with_the_84_x_48_pixel_Nokia_3310_LCD!!";
static const byte ASCII[][5] =
{
 {0x00, 0x00, 0x00, 0x00, 0x00} // 20  
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c £¤
,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j 
,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ¡û
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f ¡ú
};
char bismillah [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0x1E,
0xBE, 0xFD, 0xFD, 0x3E, 0x1E, 0xE0, 0xF0, 0xE0, 0x00, 0x10, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x0E, 0x0F, 0x3F,
0xFE, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7E, 0x7E, 0x77, 0x77, 0x73, 0x7B,
0xFF, 0xFF, 0xF8, 0xF0, 0xF0, 0x7F, 0x7F, 0xFC, 0xF0, 0xF1, 0xFF, 0x7F, 0x1F, 0x00, 0x03, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFE, 0xDE, 0xFE, 0xFE, 0xFC, 0x78, 0x78, 0x70, 0xF0,
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
0x70, 0x70, 0x70, 0x70, 0x78, 0x78, 0x78, 0x38, 0x3C, 0x7C, 0xFC, 0xF0, 0xF0, 0x78, 0x7C, 0xF8,
0xF0, 0x7C, 0x7E, 0x78, 0x78, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x3C,
0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
0x30, 0x30, 0x38, 0x19, 0x1D, 0x1C, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x39, 0x39, 0x3D, 0x3D, 0x1F,
0x0E, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xCF, 0xEF, 0xFF, 0x7E, 0x78, 0x38, 0x3C, 0x1C, 0x0E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
};
char CAG[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, 0x20, 0x60, 0x60, 0x40,
0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40,
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0xC0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0C, 0x06, 0x01, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFC, 0xFE,
0x3E, 0x1C, 0x38, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x3C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F,
0xFE, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x18, 0x06, 0x03,
0x01, 0x00, 0x00, 0xF0, 0xFC, 0xFC, 0xFE, 0x3C, 0x1C, 0x38, 0xE0, 0x03, 0x07, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x60, 0xE0, 0xE0, 0xE0, 0xF7, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1C, 0x01, 0x00, 0x00, 0x70, 0x7F, 0x7C,
0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0x40, 0x41, 0x7C,
0x70, 0x70, 0x70, 0x70, 0x70, 0x7F, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x7C, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x80, 0xE0, 0x1E, 0x02, 0x02, 0x03,
0x83, 0xFF, 0xFD, 0xF9, 0xF1, 0xE1, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0E, 0x01, 0x00, 0x00, 0xF0,
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0,
0x80, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xC0,
0x07, 0x04, 0x8C, 0x70, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFC, 0xFF, 0xFF, 0x7F, 0x7E, 0x00,
0x00, 0x00, 0x01, 0x07, 0x0C, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xF0,
0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0x7F, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x3E, 0x71, 0xF1, 0xF0, 0xF0,
0xF0, 0xF0, 0xF0, 0xF0, 0xF1, 0xF3, 0xFF, 0xFF, 0xF1, 0xF1, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
0xF0, 0xF1, 0xF1, 0xFF, 0xFF, 0xFE, 0xF8, 0x00, 0x00, 0x00, 0x03, 0x0E, 0x1C, 0x38, 0x70, 0x70,
0xF0, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF0, 0xF0, 0xF8, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 
};

void LcdCharacter(char character)
{
  LcdWrite(LCD_D, 0x00);
  for (int index = 0; index < 5; index++)
  {
    LcdWrite(LCD_D, ASCII[character - 0x20][index]);
  }
  LcdWrite(LCD_D, 0x00);
}

void LcdClear(void)
{
  for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
  {
    LcdWrite(LCD_D, 0x00);
  }
}

void LcdInitialise(void)
{
  pinMode(PIN_SCE, OUTPUT);
  pinMode(PIN_RESET, OUTPUT);
  pinMode(PIN_DC, OUTPUT);
  pinMode(PIN_SDIN, OUTPUT);
  pinMode(PIN_SCLK, OUTPUT);
  digitalWrite(PIN_RESET, LOW);
  digitalWrite(PIN_RESET, HIGH);
  LcdWrite(LCD_C, 0x21 );  // LCD Extended Commands.
  LcdWrite(LCD_C, 0xB1 );  // Set LCD Vop (Contrast). 
  LcdWrite(LCD_C, 0x04 );  // Set Temp coefficent. //0x04
  LcdWrite(LCD_C, 0x14 );  // LCD bias mode 1:48. //0x13
  LcdWrite(LCD_C, 0x0C );  // LCD in normal mode.
  LcdWrite(LCD_C, 0x20 );
  LcdWrite(LCD_C, 0x0C );
}

void LcdString(char *characters)
{
  while (*characters)
  {
    LcdCharacter(*characters++);
  }
}

void LcdWrite(byte dc, byte data)
{
  digitalWrite(PIN_DC, dc);
  digitalWrite(PIN_SCE, LOW);
  shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
  digitalWrite(PIN_SCE, HIGH);
}
void gotoXY(int x, int y)
{
  LcdWrite( 0, 0x80 | x);  // Column.
  LcdWrite( 0, 0x40 | y);  // Row.  

}
void setup(void)
{
  LcdInitialise();
  LcdClear();
  gotoXY(0, 0);
  LCDBitmap(bismillah);
  delay(2000);
  LcdClear();
  gotoXY(0, 2);
  LcdString("Produced by");
  delay(3000);
  LcdClear();
  gotoXY(0, 0);
  LCDBitmap(CAG);
  delay(3000);
  LcdClear();
  gotoXY(0, 2);
  LcdString("LOADING");
  delay(1000);
  gotoXY(0, 2);
  LcdString("LOADING.");
  delay(1000);
  gotoXY(0, 2);
  LcdString("LOADING..");
  delay(1000);
  gotoXY(0, 2);
  LcdString("LOADING...");
  delay(1000);
  gotoXY(0, 2);
  LcdString("LOADING....");
  delay(1000);
  gotoXY(0, 2);
  LcdString("LOADING.....");
  delay(1000);
  LcdClear();
  
  //LcdString("The count is");
  //gotoXY(0, 3);
  //LcdString("++++++++++++");
  //LcdString("----over----");
  //LcdString("--- over ---");
  //LcdClear();
  //LcdString(buf);
}
void dispcountt(int count)
{
  //LcdCharacter(disp_tab[count/10000]);
  //LcdCharacter(disp_tab[count/1000%10]);
  LcdCharacter(disp_tab[count/100%10]);
  LcdCharacter(disp_tab[count%100/10]);
  LcdCharacter(disp_tab[count%10]);
}
void disptime(int count)
{
  //LcdCharacter(disp_tab[count/10000]);
  //LcdCharacter(disp_tab[count/1000%10]);
  LcdCharacter(disp_tab[count%100/10]);
  LcdCharacter(disp_tab[count%10]);
}
void LCDBitmap(char my_array[]){
  for (int index = 0 ; index < (LCD_X * LCD_Y / 8) ; index++)
    LCDWrite(LCD_DATA, my_array[index]);
}
void LCDClear(void) {
  for (int index = 0 ; index < (LCD_X * LCD_Y / 8) ; index++)
    LCDWrite(LCD_DATA, 0x00);
  gotoXY(0, 0); //After we clear the display, return to the home position
}
void LCDWrite(byte data_or_command, byte data) {
  digitalWrite(PIN_DC, data_or_command); //Tell the LCD that we are writing either to data or a command

  //Send the data
  digitalWrite(PIN_SCE, LOW);
  shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
  digitalWrite(PIN_SCE, HIGH);
}
void loop(void)
{
  LcdInitialise();
  //LcdClear();
  LcdString("CNC MONITOR");
  
  gotoXY(0, 1);
  LcdString("X:"); gotoXY(20, 1); dispcountt(count); LcdString(" mm");
  count++;
  gotoXY(0, 2);
  LcdString("Y:"); gotoXY(20, 2); dispcountt(count); LcdString(" mm");
  count++;
  gotoXY(0, 3);
  LcdString("Z:"); gotoXY(20, 3); dispcountt(count); LcdString(" mm");
  count++;
  gotoXY(0, 4);
  LcdString("TEMP: "); gotoXY(38, 4); dispcountt(count); LcdString("oC");
  count++;
  gotoXY(0, 5);
  LcdString("TIME: "); gotoXY(38, 5); disptime(count); LcdString(":");disptime(count); 
 
 // delay(000);
 
  //gotoXY(0, 2);
  //LcdString("==");
  //gotoXY(16, 2);
  //dispcountt(count);
  //count++;
  //LcdString("==");
  delay(1000);
 // LCDClear();
 // LCDBitmap(CAG);
 // delay(3000);
  

}
tekan sekali untuk jalan dan tekan sekali lagi untuk stop...



Lukis Spiral guna CNC

Salam,

Ok yang nih abang Nasrul request... so ini hasilnya

So, lepas nih ade lagi projek yang nak buat tapi tak lukis dah. Terus mesin, ehehe... nak buat gear tapi pening dengan equation...ade sape leh tolong???



Manual Control stepper motor using EASYDRIVE + ARDUINO

Salam,OK, nih ade tutorial acannne nak control stepper motor secare manual... Bile abam zairi suruh tunjuk skit. so sini video die abam zairi


Untuk control stepper motor ni kene ade

  1. Stepper motor (mane2 tak kisah tapi yang aku jual memang bole masuk)
  2. Arduino board (Mega, UNO, Mini @ Nano.. yang lain maybe boleh)
  3. Easy Driver  (aku ade jual gak)
  4. Breadboard/ Circuit board pon boleh
  5. Jumper wire 
  6. Tactile switch, yang switch aku tekan tu la ( ade jual jugak, tgk store aku)


Dan ini codenya...
//Basic code by MSIDRIS for Manual control stepper motor
// Using Easy driver and Arduino uno..

int delays;  
const int ManPosY = 4; //Manual input from switch to control + direction
const int ManNegY = 5; //Manual input from switch to control - direction
const int DirY = 8; 
const int LocY = 9; 
float buttonPushCounterPosy,buttonPushCounterNegy = 0;// counter for the number of button presses
int buttonStatex = 0;  
int buttonStatePosy, buttonStateNegy,buttonStatePosx = 0; // current state of the button
int lastButtonStatePosy,lastButtonStateNegy = 0;

void setup() { 
Serial.begin(9600);  
  pinMode(ManPosY, INPUT); //override y +ve
  pinMode(ManNegY, INPUT); //override y -ve
  pinMode(DirY, OUTPUT);     
  pinMode(LocY, OUTPUT);
  digitalWrite(DirY, LOW);
  digitalWrite(LocY, LOW);
}

void loop() {
  buttonStatePosy = digitalRead(ManPosY);
  buttonStateNegy = digitalRead(ManNegY);
  
  if ((digitalRead(ManPosY)==HIGH)){
   buttonPushCounterPosy++;
   delay(200); 
     while(round(buttonPushCounterPosy/2-round(buttonPushCounterPosy/2))!=0){
     if (digitalRead(ManPosY)==HIGH){buttonPushCounterPosy++;}
     delays=100;
     digitalWrite(DirY,LOW) ;
     digitalWrite(LocY, HIGH);delayMicroseconds(delays);          
     digitalWrite(LocY, LOW);delayMicroseconds(delays);
     }
    delay(200);}
     
   if ((digitalRead(ManNegY)==HIGH)){
   buttonPushCounterNegy++;
   delay(200); 
     while(round(buttonPushCounterNegy/2-round(buttonPushCounterNegy/2))!=0){
      if (digitalRead(ManNegY)==HIGH){buttonPushCounterNegy++;}
     delays=100;
     digitalWrite(DirY,HIGH) ;
     digitalWrite(LocY, HIGH);delayMicroseconds(delays);          
     digitalWrite(LocY, LOW);delayMicroseconds(delays);
     }
    delay(200);}
}
tekan sekali untuk jalan dan tekan sekali lagi untuk stop...

TUTORIAL ARDUINO LCD + SERIAL INTERFACE BOARD(2 PIN je)

Hi.

Kembali lagi membuat tutorial, kali ini pasal LCD + SERIAL MODULE...

Ok, Alat ni name die "Serial Interface Board Module Port for Arduino 1602LCD Display" walaupun mahal sikit tapi jimat la pin dan tak payah serabut ngan wayar. Kalau pakai LCD module sahaje, 8 pin diperlukan... tapi kalau guna serial board module nih hanya 4 Pin diperlukan. Gambar alat ni ade kat bawah

Kalau schematic pemasangan pulak camnih.... Taknak guna Breadboard pon boleh..

Pakai 2 Pin je, A4 dan A5 (Yang memang jarang pakai !!!!!)

Contoh code (dari geetech.wiki), Kat bawah nih camne nak sambung
1602I2C table.jpg

Library LiquidCrystal_I2C.h, boleh download sini dan tampal kat Arduino punye library..

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
 lcd.init();                      // initialize the lcd 
 // Print a message to the LCD.
 lcd.backlight();
 lcd.print("Hello, world!");
}
void loop()
{
}

anda jimat banyak pin... kalau nak control kecerahan, guna screwdriver ejas yang warna biru tu...




Projeck CNC SIAP!!!!!! (tapi pahat masih bunyik)

Salam...

Ahah... lame dah tak update blog... Bisnes makin rancak pastu bizi sangat ngan arduino so arini nak update pasal keje aku iaitu projek CNC.... Let the Video tell you all...

Ini die projeck yang dah siap
Yang ni bile projek dah jalan 3AXIS




Okey... Ini aje yo...

Monday, 6 January 2014

TUTORIAL ARDUINO LCD

OK, kalu korang nak tau macam mane nak ubah tulisan dalam LCD16x2 panel arduino, korang kene ade barang dulu antaranya

  1. Bread Board
  2. Arduino Board ( UNO, MEGA, MINI)
  3. Laptop
  4. LCD Panel 16x02 
  5. Jumper wire 
  6. Potentiometer (untuk kawal kecerahan Backlight)
Contoh LCD PANEL

Lepas tu kene download software dari arduino.cc sebab latest update banyak kat situ. Ni link nye
pastu pilih la korang pakai MAC or WINDOWS. Dalam tu sume dah ade library pastu boleh la try. Code lebih kurang macam nih. Schematic ade kat bawah



#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2); // Pin pin yang penting

void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0,0); // Baris atas
  lcd.print("HELLO DUNIA");
  lcd.setCursor(0,1); // baris bawah
  lcd.print("TAIP LA APE AJE");

 }
void loop()
{
}

UNTUK SPECIAL CHARACTER @ CUSTOM, TUNGGU POST SETERUSNYA....

Nanti aku update resultsnye dan barangannya
ni la resultnyer.

Tapi kalau korang rase serabut dengan wayar, boleh guna SERIAL BOARD, dan kurang la sikit penggunaan jumlah pin.

Wednesday, 30 October 2013

MY CNC Project

Huh... Ok, this entry i put it in english so that all people around the world could read and get benefit from reading it. For Bahasa, maybe i put another entry if i'm not lazy la...

Fuhh... ok, for starter, CNC is computer numerical control which you can control the position of a work piece/cutting tool automatically. There are many type of CNC equipment and mostly know is cnc milling and turning(lathe) and a lot of DIY (Do it yourself) instruction over the internet. I love CNC so much because my first job was CNC engineer!!! and I enjoy Programming subject the most.


Actually, there are a lot of CNC equipment in the market nowadays but the price cost thousands RM5-6 k (for mini CNC mill)..click here (Malaysian Product) in RM but according to my friend (Mr. Google), there are a lot of backyard DIY instruction saying the total cost is less than hundreds USD..huh...very interesting... and i thought that i can produce one DIY CNC lathe below than RM1k and let see the results later on. The problem is, some of the equipment not available/manufactured in Malaysia such as stepper Motor and special bearings.
In this post, i'm going to share my experience on my own DIY project for CNC lathe (2 axis only). There are three parts:
  1. Mechanical Parts.
  2. Electrical Parts.
  3. Software Parts.

Mechanical Part
X-Y mini side table (the cheaper on), around (USD 140-210 ) + shipping (USD40-80) + Money transfer cost (Moneygram/Western Union/Paypal)+ custom taxes OR you can try to find it in Malaysia which is difficult to obtain...If you can do so, put some comment below
 expensive

 cheaper

or by DIY X-Y slide table/cross table but you need the following things
  1. Linear bearing (cheap one, RM15-30, expensive RM 35-50) depend on size and grade..maybe not required... depend on your sliding design)
  2. Radial bearing ( cheap one RM 2-4, expensive RM 10-20) depend on size and grade
  3. flexible coupling (using just rubber hose and hose clip) - cheap. less than RM10... good one is expensive (RM 20-50)
  4. full thread rod (cheapest), lead screw (cheaper), ball screw ( expensive)
  5. The table structure ( Maybe RM 100 or more )
  6. Guide shaft, solid rod difficult to find in regular hardware store... (Maybe RM 50)
  7. Bolt and Nuts (a lot) (RM30)
  8. The cutter, chuck, tool post, clamp (lathe equipment),etc (RM 200-300), DIY or find any used parts.
  9. Machine and expertise
  10. Patience and Passion..
(Bearings i bought from SLS bearings (any branch in Malaysia), for Lead screw and linear bearing, I bought from SLS bearings, Petaling Jaya. I did not buy any leadscrew (RM80-100++, depend on size and length, from my survey at SLS @ball screw), but full thread screw from Central Bolt and Nuts, Kuantan (because i live here) and allen key bolt as well (allen key bolt also difficult to find in any regular hardware store)

I shall update my sliding table later on once it is finished. Still gathering the materials though.

The Electrical part

1. Stepper motor (cheaper but some said no feedback) or Servo motor ( expensive but with feed back)... But for me, due to money constraint, i buy steepper 0.9 Nm (enough for mini) 56mm size from myduino.com  for RM150 and including the driver (Easydriver) for RM50... but i think i can get cheaper one but i was so hasty (Sekarang dah jumpa yang murah..mintak maaplah incik myduino)
2. The power supply (adjustable is better), Around Rm 200-400, depend on the brand and capability.. cheap one also can be bought but for fixed current only. Refer to the motor specification first before buying these power supplies. (Actually adapter 12V pon ok, cari kat kedai hardware dan kalau korang asal KUANTAN, COWBOY sesuai cari, RM11Jer)
3. Arduino Uno R3 ( Because i want to use Arduino to control the CNC lathe) or any controller available in the market. (The brain of CNC)
4. DC motor for spindle turning or sewing machine motor (controllable)
Some of the parts in CNC
The software part

My case using arduino software
or any CAD/CAM software for example
  1. before machining, you must know the model. There are a lot of software for product design such as AutoCad, Solidworks, Unigraphics, etc but these are non free software (CAD software), if you want freeware, you might want to try google sketchup or any software you already know.
  2. Once the model finished, using CAM software such as MasterCAM, CAM BAM,, to translate into G codes ( i love this) or FREEMILL (Free software - CAD and CAM)
  3. CNC control software, control using computer or ARDUINO
Method 1&2, you can do it using conventional method if the part to be milled/lathed is very easy (old school method)

Thats it for now... once finished, i shall upload my project