Showing posts sorted by date for query arduino-for. Sort by relevance Show all posts
Showing posts sorted by date for query arduino-for. Sort by relevance Show all posts

Friday 13 May 2016

BAHASA PEMROGRAMAN ARDUINO

A.Struktur
Dalam penulisan Program/ Sketch Menggunakan Arduino, ada dua fungsi yang harus ada hal ini dikarenakan arduino memiliki struktur dasar/ standart penulisan yaitu void setup, dan void loop, namun Arduino juga memiliki beberapa fungsi tambahan seperti komentar satu bari ( // ), Blok komentar (/*…*/), kurung kurawal ( { } ), Titik Koma ( ; ).

1.void setup( ) {   }
Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya/ di-Reset

Contoh ;
int LED = 3;
void setup(){
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop(){
}

2.void loop( ) {   }
Fungsi ini akan dijalankan setelah void setup  selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan dengan kata lain program yang ada di dalam kurung kurawal void loop akan mengunlang secara terus menerus.

3.Fungsi()
Digunakan untuk membuat sekumpulan program dengan memberikan label/ nama tertentu yang dapat dipanggil sewaktu- waktu dan fungsi ini biasanya digunakan untuk sekumpulan program yang akan sering dipanggil / dijalankan, sehingga program akan jauh lebih sederhana.

4.//(komentar satu baris)
Kadang diperlukan untuk memberi catatan pada diri sendiri apa arti dari kode-kode yang dituliskan. Cukup menuliskan dua buah garis miring dan apapun yang kita ketikkan dibelakangnya akan diabaikan oleh program.

5./*  */(Blok Komentar)
Jika anda punya banyak catatan, maka hal itu dapat dituliskanpada beberapa baris sebagai komentar. Semua hal yang terletak di antara dua simbol tersebut akan diabaikan oleh program.

6.{   }(kurung kurawal)
Digunakan untuk mendefinisikan kapan blok program mulai dan berakhir (digunakan juga pada fungsi dan pengulangan).

7.;(titk koma)
Hamper baris kode pada Arduino harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang maka program tidak akan bisa dijalankan/ eror.

B.Struktur Pengaturan

Program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya, berikut ini adalah elemen dasar pengaturan Arduino.

1.If dan Else
Berfungi untuk melakukan pengetesan atau pengujian kondisi sehingga apabila sebuah kondisi telah terpenuhi maka program/ sketch akan menjalankan Pernyataan yang berada di dalam kurung kurawal, namun jika tidak maka program akan melewati pernyataan tersebut, if sendiri memiliki beberapa bentuk dalam penulisannya 
-Bentuk pertama;
ini adalah bentuk if tunggal yang digunakan hanya untuk 1 kondisi, sehingga bila sudah tercapai kondisi tersebut jalankan pernyataan jika tidak lewati pernyataan.

Format penulisan :
If(kodisi){
pernyataan}

Contoh :
If (SensorPin > 100){
digitalWrite(13, HIGH);}

Program diatas menyatakan jika nilai Sensor Pin besar dari 100 maka nyalakan LED pada pin 13.

-Bentuk kedua;
Ini adalah bentuk kedua yang digunakan untuk kondisi if dengan satu pengecualian, jadi apabila if dalam kondisi tersebut program akan menjalankan  pernyataan1 jika tidak program akan menjalankan pernyataan2.

Format Penulisan :
if (kodisi){
Peryataan1}
else{
peryataan2}

Contoh :
If (SensorPin > 100){
digitalWrite (13, HIGH);}
else{
digitalWrite (13,LOW);}

-Bentuk Ketiga;
Pada bentuk ketiga ini if memiliki beberapa pengecualian, sehingga apabila dalam kondisi1 program akan menjalankan pernyataa1, jika tidak cek kondisi2 jika dalam kondisi2 jalankan pernyataan2 jika tidak cek kondisi 3 jika dalam kondisi 3 maka jalankan pernyataan3, jika tidak ada sama dengan kondisi1, kondisi2, kondisi3 maka jalankan pernyataan4.

Format Penulisan:
If(kondisi1){
Pernyataan1}
else if(kondisi2){
Pernyataan2}
else if(kondisi3){
Pernyataan3}
else {Pernyataan4}

Contoh :
If (SensorPin > 20){
digitalWrite (13, HIGH);}
else if(SensorPin > 40){
digitalWrite (12, HIGH);}
else if(SensorPin > 60){
digitalWrite (11 HIGH);}
else{ digitalWrite (11 HIGH);}

2.For
Digunakan bila anda ingin melakukan pengulangan kode didalam kurung kurawal beberapa kali, namun untuk melakukanya dibutuhkan sebuah counter, baik itu counter up ( i++ ), ataupun counter down ( i-- ), sebagai mana yang telah dilihat pada format penulisan i=0 menyatakan posisi awal,sedangkan# untuk jumlah pengulangan dan i++ adalah counter.

Format Penulisan :
for (int i = 0; i < #pengulangan; i++) {
pernyataan}
Contoh
for (int i =0; i <9; i++){    
pinMode(ledPins[i],OUTPUT);
}

3.Switch 
Digunakan untuk menguji suatu nilai pada variable dengan konstanta- konstanta tertentu, konstanta tersebut diawali dengan case dan diakhiri dengan break, jika variable sama dengan konstanta 1 maka jalankan pernyataan 1, jika variable sama dengan konstanta 2 maka jalankan pernyataan 2 dan begitu seterusnya  namun jika variable tidak sama dengan konstanta manapun maka jalankan default.

Format Penulisan :
switch (var) {
case 1:
//pernyataan 1
break;
case 2:
//pernyataan 2
break;
default: 
}

4.while 
Akan menjalankan intruksi yang ada di dalam kurung ()secara terus menerus dan tak terhingga, sampai ekspresi dalam kurung() menjadi salah(false) oleh sebab itu harus ada yang mengubah variable agar dapat keluar dari intruksi ini. 

Format Penulisan:
While(kondisi)
{peryataan(s)
}

5.Do-While
Bekerja dengan cara yang sama seperti while, dengan pengecualian bahwa kondisi ini di uji pada akhir program, sehingga program akan berjalan setidaknya sekali.

Format Penulisan:
do
{pernyataan
}
While(kondisi);


6.Break
Digunakan untuk  keluar dari do while dan while, untuk melewati kondisi normal. Hal ini juga digunakan untuk keluar dari pernyataan switch.

Contoh; 
for(x =0; x <255; x ++){
analogWrite(PWMpin, x);
sens =analogRead(sensor);  
if(sens > threshold){ 
x =0;
break;
}  delay(50);
}

7.Continue
Pernyataan melompati sisa literasi saat (do, for, atau if). Ini akan terus  memeriksa ekspresi kondisional dari loop, dan melanjutkan dengan literasi berikutnya.

Contoh;
for(x =0; x <255; x ++){
 if(x >40&& x <120){      // create jump in values
 continue; }
    analogWrite(PWMpin, x);
    delay(50);
}

8.Return
Return berguna untuk mengembalikan nilai dari fungsi ke  fungsi panggilan, jika diinginkan.
contoh:
int checkSensor(){       
if (analogRead(0) > 400) {
return 1;
else{return 0;}
}

9.go to
adalah intruksi lompat tak bersyarat, instruksi ini mengakibatkan eksekusi dilanjutkan ke alamat yang dituju oleh label .
Contoh;
for(byte r = 0; r < 255; r++){
for(byte g = 255; g > -1; g--){
for(byte b = 0; b < 255; b++){
if (analogRead(0) > 250){ goto Label1;}
Label2}}
}
Label1:

C. Arithmetic
1.Aritmatika 
     Arduino IDE selain mendukung untuk  kompailer juga mendukung operator Aritmatika seperti yang ada dibawah ini.

-Sama dengan ( = )
Membuat sesuatu menjadi sama dengan nilai yang lain (misalnya: x = 10 * 2, x sekarang sama dengan 20).

-Penjumlahan( + )
 Penjumlahan
-Pengurangan( - )
 Pengurangan
-Perkalian( * )
 Perkalian
-pembagian( /)
 Pembagian
-Sisa pembagian ( % )
Menghasilkan sisa dari hasil pembagian suatu angka dengan angka yang lain (misalnya: 12 % 10, ini akan menghasilkan angka 2).

2.Operasor Bitwisee
Operasi bitwise banyak digunakan dalam aplikasi mikrokontroler, misalnya untuk menguji kondisi bit pada Port 1 atau pergeseran bit dll. Ada enam buah operator bitwise diantaranya;

-Operator Geser kiri ( << )
Operator geser kiri akan mengeser ke kiri perbit sehingga bit 0 akan menggeser ke bit 1 dan bit 2 akan menggeser ke bit 3 dan seterunya, Untuk melakukan operasi bitwise geser kiri dibutuhkan dua buah operan, disebelah kiri tanda ( <<) adalah nilai geser dan disebelah kanan adalah jumlah bit yang akan digeser ke kiri.

-Operator Geser kanan ( >> )
Operator geser kanan akan mengeser ke kanan perbit” misalnya bit 8 akan menggeser ke bit7 dan bit 7 akan menggeser ke bit 6 dan seterunya, Untuk melakukan operasi bitwise geser kanan dibutuhkan dua buah operan, disebelah kiri tanda ( <<) adalah nilai geser dan disebelah kanan adalah jumlah bit yang akan digeser ke kiri.

-Operasi Bitwise AND (&)
Operator bitwise and (&) berfungsi untuk melakukan operasi logika AND bit/ bit misalnya  bit 0 akan diproyeksikan dengan bit 0 dan bit 1 diproyeksikan dengan 1 dan seterusnya.

Contoh:
int a = 10 ; // Dalam biner : 1010
int b = 12 ; // Dalam biner : 1100
int c = a & b; // Hasil dalam biner : 1000

-Operasi Bitwise OR(|)
Operator bitwise OR (|) berfungsi untuk melakukan operasi logika OR bit/ bit misalnya  bit 0 akan diproyeksikan dengan bit 0 dan bit 1 diproyeksikan dengan 1 dan seterusnya.

Contoh :
int a = 10 ; // Dalam biner : 1010
int b = 12 ; // Dalam biner : 1100
int c = a | b;   // Hasil dalam biner : 1110

-Operasi Bitwise XOR (^)
Operator bitwise XOR (^) berfungsi untuk melakukan operasi logika XOR bit/ bit misalnya  bit 0 akan diproyeksikan dengan bit 0 dan bit 1 diproyeksikan dengan 1 dan seterusnya.
Contoh :
int a = 12; // Dalam Biner : 1100
int b = 10;   // Dalam Biner : 1010
int c = a ^ b; //HarsilDalam Biner : 0110 

- Operasi Bitwise NOT (~)
Operatr bitwise NOT (~) berfungsi untuk melakukan operasi logika NOT pada bit, misalnya bit yang berlogika 0 berubah menjadi 1 dan logika 1 berubah menjadi0.

Contoh :
int a = 12; // Dalam Biner : 1100
int c = ~a //Hasil Dalam Biner : 0011

3.Operator Relasi/ Pembanding
Operator Relasi digunakan untuk membandingkan dua buah nilai atau kondisi. Operator relasi.

-Sama dengan ( == )
Sama dengan (misalnya: 14 == 10 adalah FALSE (salah) atau 10 == 10 adalah TRUE (benar))

-Tidak sama dengan ( != )
Tidak sama dengan (misalnya: 14 != 10 adalah TRUE (benar) atau 10 != 10 adalah FALSE (salah))

-Kecil dari ( < )
Lebih kecil dari (misalnya: 14< 10 adalah FALSE (salah) atau 14 < 14 adalah FALSE (salah) atau 10< 14 adalah TRUE (benar))

-Besar dari ( > )
Lebih besar dari (misalnya: 14> 10 adalah TRUE (benar) atau 14 > 14 adalah FALSE (salah) atau 12 > 14 adalah FALSE (salah))

-Kecil/ sama dengan ( <= )
Kecil/ sama dengan (misalnya: 14 <= 10 adalah FALSE (salah) atau 14 <= 14 adalah TRUE (benar) atau 10 <= 14 adalah TRUE (benar))

-Besar / sama dengan ( >= )
Lebih besar dari (misalnya: 14 >= 10 adalah TRUE (benar) atau 14 >= 14 adalah TRUE (benar)) atau 12 >= 14 adalah FALSE (salah))

PERHATIAN
dalam penulisan operator relasi tanda tidak boleh salah hal ini dikarenakan kesalahan sedikit dalam penulisan tanda dapat menyebankan program/ sketch tidak berkerja sesuai dengan yang diharapkan misalnya : kita ingin membandingkan sebuah Variable dengan operasi relasi sama dengan (==)  tanda yang harus dituliskan adalah == jika kita hanya menuliskan = sekali saja maka instruksi yang dijalankan bukanya membandingkan malah memberi nilai pada Variable, selain dari itu jika kita ingin menusilkan operasi relasi besar sama dengan ( >= ) kita tidak boleh menulikanya terbalik ( => ), meskipun maknanya sama namun Arduino IDE tidak mengenal hal itu sehingga mengakibatkan eror pada saat Verify ( Kompailer ).

Monday 26 October 2015

Raspberry Pi :: Proyek dan Alat yang menggunakan Raspberry Pi



Update dari artikel sebelumnya mengenai Raspberry Pi yang membahas tentang Review dan Harga Raspberry Pi komputer mungil yang serbaguna kali ini akan membahas proyek dan alat yang mengunakan atau memanfaatkan Raspberry Pi ini. 

Berikut alat-alat yang tersebut :

1. Raspberry Pi Lego Supercomputer
2. Raspberry Pi HomeGuard
3. Raspberry Pi Based Micro Arcade Cabinet 
4. Raspberry Pi Bartendro
5. Mobile Raspberry Pi Computer
Dan berikut satu persatu penjelasan dari alat-alat tersebut :

1. Raspberry Pi Lego Supercomputer

Seperti namanya supercomputer, memang raspberry pi ini adalah benar-benar supercomputer yang di rakit dari 64 raspberry pi  dan Lego oleh team Computational Engineers di Universitas Southampton dan team tersebut dipimpin oleh Professor Simon Cox, consisted of Richard Boardman, Andy Everett, Steven Johnston, Gereon Kaiping, Neil O’Brien, Mark Scott and Oz Parchment, adan anak Professor Cox yang bernama James Cox (usia 6 tahun) yang merupakan spesialis dalam merakit lego juga sebagai testing system.

Supercomputer ini berjalan dengan single 13 Amp socket utama dan menggunakan MPI (Message Passing Interface) untuk menghubungkan antar node dengan menggunakan Ethernet. Total menggunakan 64 processor dan 1 Tb memory (16 Gb SD Card untuk setiap Raspberry Pi). Professor Cox menggunakan free plug-in ‘Python Tools for Visual Studio’ dalam membangun code untuk Raspberry Pi. 

Dokumentasi dan info detail berada di web sang professor berikut :

http://www.southampton.ac.uk/~sjc/raspberrypi/index.htm

2. Raspberry Pi Home Guard

Proyek Raspberry Pi Home Guard ini adalah bertujuan untuk monitoring rumah seperti temperature, sensor listrik dan peralatan rumah seperti sensor pintu dan lain-lain. Detail dan gambar dari alat dan tampilan gambar untuk monitoring bisa di lihat di :

http://www.raspberrypi.org/blog/page/2/#pi-homeguard-staying-independent 

3. Raspberry Pi Based Micro Arcade Machine

Proyek Raspberry Pi Micro Arcade Cabinet ini adalah salah satu contoh pengembangan dari Rasberry Pi yang terinspirasi oleh permainan arcade klasik. Dalam websitenya di Spiritmods, kamu dapat melihat langkah-langkah pembuatannya, serta software dan desain casing yang dapat didownload.

4. Raspberry Pi Bartendro

Proyek Raspberry Pi Bartendro sesuai dengan namanya yang Bartendro atau bartender adalah mesin untuk pembuat minuman otomais yang portable dan dapat dipindah kebaerbagai acara atau pesta dan dapat membuat berbagai variasi minuman koktail hanya dalam waktu 10 detik dan 200 minuman koktail dalam satu malam. Mesin ini menggunakan prosesor yang sama dengan Arduino dan terhubung pada komputer Raspberry Pi melalui konektor RJ-45. Proyek Bartendro telah mendapatkan dukungan dana melalui Kickstarter sehingga dapat diproduksi secara masal. Informasi teknis mengenai Bartendro dapat dilihat di Party Robotic dan Bartendo Source Code

5. Raspberry Pi Computer

Proyek Raspberry Piini merupakan sebuah computer atau laptop mini portabel yang dilengkapi dengan layar dan keyboard, kartu penyimpanan SSD berkapasitas 64GB, bluetooth dan wireless. Baterai yang digunakan adalah baterai laptop yang mampu bertahan selama lebih dari 10 jam. Mobile Raspberry Pi-To-Go ini tampaknya seperti versi portabel komputer Linux. Dalam blognya Nathan Morgan, ia juga menjelaskan dengan baik langkah-langkah pembuatannya.

Dan untuk alat-alat yang lain beserta gambar bisa di lihat di link blog raspberry Pi :

http://www.raspberrypi.org/blog 

atau dari blogger indonesia berikut ini :

http://www.mobgenic.com/2013/10/23/10-proyek-kreatif-dengan-menggunakan-raspberry-pi/

Dari blogger indonesia diantaranya yaitu alat-alat di bawah ini  

  • Raspberry Pi Beat Box
  • Raspberry Pi Retro Rotary Dial Phone
  • Raspberry Pi Mini Nerf Gun Robot
  • Raspberry Pi Home Alarm Plus
  • Raspberry Pi LED Matrix
  • Raspberry Pi Egg Bot
  • Raspberry Pi Black Stripes V-Plotter  
Semoga bermanfaat.

Wednesday 21 October 2015

PROPELLER :: PROPELLER(ROTATING) LED DISPLAY





People often use ARDUINO platforms and other microcontrollers (pic, avr ) for making a propeller led display. If you are from a rural area like me it will be a little difficult to have such good hardware.I am trying to make one using AT89S52 microcontroller (which is very cheep).

i'm using a 11.0592MHz crystal and a 7805 for power supply leds are connected to the PORT0 of the MCU. 8 LED's are used for displaying letters. I used 7 red and 1 blue led to make it look good. you can connect LEDs to the microcontroller in two ways
  1. ACTIVE HIGH (logic '1' on MCU pin will make the LED glow)
  2. ACTIVE LOW (logic '0' on MCU pin will make the LED glow)

It is better to connect the leds in active low configuration(cathode to MCU pin and anode to Vcc through 220ohm resister for current limiting.

The whole arrangement is placed in a wheel using foam plaster so the it sticks on both sides
the wheel is attached to 6mm shaft and 1000RPM metal gare motor.




Keep the arrangement as strong as possible. So that it won't fall out of the high speed rotating platform.Try to make it stable to suppress the vibrations at high speed. I attached the 9V battery using a tape to the circuit board of MCU .It means  I am using "ON BOARD" power supply.

I arranged the LEDs on a separate PCB and connected them to the pinheads and an eight pin female connector is used to connect the 8 LEDs to connect to PORT0 of AT89S52.

I used the KIEL software to program the microcontroller. i prefer to work with C rather than assembly. I am using a USB based programmer to burn the AT89S52 MCU.

 try to make your code flexible so that you can easily modify to display any word
at first every thing was a bit messy
watch the video


   
        looks nice is isn't it.
I'm trying to make a single stand still display. calculation of proper delay is very important in making this project.because speed of  any two motors is not equal.calculate delay as per your motor.motor speed should not be less than 1000.

 for displaying each letter make a standard notation.I'm following 5*7 notation



if your motor is rotating in clock wise direction then the corresponding code will be as follows.
 leds are connected to PORT0 of AT89S52 so the logic will be
                P0=0x81; delay( );//define this function as per your motor
P0=0x6f;  delay( ); 
 P0=0x6f;  delay( );
 P0=0x6f;  delay( );
   P0=0x81;  delay( ); 
                              P0=0xff;  delay( );// to make one column gap between letters 
if it is anti clock wise then
same code in the reverse order
in this example im using the letter "A" which is symetrical
for other letters you need to follow from down to top of the code algorithm discussed above
                                                               P0=0xff;    delay( );// to make one column gap between letters
P0=0x81;  delay( ); 
P0=0x6f;  delay( );  
P0=0x6f;  delay( ); 
P0=0x6f;  delay( ); 
P0=0x81;  delay( );
similarly for active high the following notation must be followed
  so the code will be:

led=0x7e;delay();
led=0x90;delay();
led=0x90;delay();
led=0x90;delay();
led=0x7e;delay();
                                            led=0x00;delay();column gap betwwn 2 letters
so that you can display any word on your moving display

but the question is how much delay we need to use after each and every colum
follow theses calculations..
DELAY CALCULATIONS 
motor speed===1000 RPM
time for one rotation===60 milli seconds
radious =30cm
peremeter=2*3.414*30=204.84~205
width of led column=0.5cm ( this indicated the duration of led glow in terms of length of display)
total num of columns(leds)=205/0.5=410
410 leds=60 milli seconds
one led(column)time=146 micro seconds// 
columns for each letter=6
time for a letter=6*146=876 micro seconds
length for letter=6*0.5=3
total leters=205/3=68
THE CALCULATIONS VARIES ACCORDING  TO THE GLOW TIME OF LED AND RADIUS OF THE ROTATING ARM 
motor speed===1000 RPM
time for one rotation===60 milli seconds
radius =30cm
peremeter=2*3.414*30=204.84~205
width of led column=1cm( this indicated the duration of led glow in terms of length of display)
total num of columns(leds)=205
205 leds=60 milli seconds
one led(column)time=292 micro seconds
columns for each letter=6
time for a letter=6*292=1752 micro seconds
length for letter=6
total leters=205/6=34
THESE ARE ROUGH CALCULATIONS BECAUSE THE MOTOR SPEED IS NOT ALWAYS CONSTANT 
BUT THEY HELP IN APROXIMATING THE DELAY



 if you are a bit good at it
TRY WITH  "RGB" LEDS
ALL THE BEST   
EXAMPLE PROGRAM     
circuit diagram using 8051 
//THIS PROGRAM IS FOR 8051
// in this code i did not used lookup tables for reducing the complexity                                                      
// i just gave code logic for one letter'A' and space ' '                                                                               

#include<reg51.h> 

                                                                                                                            
#define led P0 //port0 will be connected to leds 
                                 
unsigned int del=50//variable to control delay
                                                                                           
void delay(void)
{
 unsigned int i,j;
for(i=0;i<del;i++)
for(j=0;j<1275;j++);

}
void display(unsigned char car); // declaration of a function 

void main()
{
 while(1)
{
  display('A'); // this displays a continious rotating"A  A  A  A"
  display(' '); 
//try to change the del value as per your motor until you get a perfect
//display once you got it then write your code for remaining letters 
//once you did this it will be very easy you can do your own fonts
//like "smily" ,"heart" etc 
//but the main logic is to achieve perfect "delay".once if you refer to the
 //delay calculations you will get it
//direction of rotation is also one important thing(clock wise or anti clock) 
// this "A" is simetrical so works on both directions.
}

}

void display(car)
{
  
  switch(car)

  case 'A' : // letter A
   
   {
    led=0x81;  delay( ); 

    led=0x6f;  delay( );  

    led=0x6f;  delay( ); 

    led=0x6f;  delay( ); 

    led=0x81;  delay( ); 

    led=0xff;  delay( );// to make one column gap between letters  
   } 
    break;
  
   case ' '  : // space
   
   {
    led=0xff;  delay( );

    led=0xff;  delay( ); 

    led=0xff;  delay( );  

    led=0xff;  delay( ); 

    led=0xff;  delay( ); 

    led=0xff;  delay( ); 
    
    led=0xff;  delay( );// to make one column gap between letters 
  
   } break;
  default:
   led=0xfe;
}
// END of program

=======================================================================================



                                             //THIS PROGRAM IS FOR AVR

// in this code i did not used lookup tables for reducing the complexity                                                      
// i just gave code logic for one letter'A' and sapace ' '                                                                              

#include<avr/io.h> 
#define F_CPU 8000000 // crystal frequency used in the circuit this helps in calibration of delay as per your frequency 
#include<util/delay.h> header file for generating delay for
                                                                                                                            
 DDRD=0xff;     //declaring portD as out put  
 #define led PORTD   // the word "led" will be replaced by PORTD at compile time                                                                       
unsigned int del=50 //variable to control delay
                                                                                          

//the delay function is ther as default in util package of winavr so use:  _delay_us( );
void delay(void)
{
 _delay_us(del);
 _delay_us(del);
 _delay_us(del);
 _delay_us(del);
}
 //remaining logic will be same for all microcontroller units

void display(unsigned char car);

void main()
{
 while(1)
{
  display('A'); // this displays a continious rotating"A  A  A  A"
  display(' ');
//try to change the del value as per your motor until you get a perfect
//display once you got it then write your code for remaining letters
//once you did this it will be very easy you can do your own fonts
//like "smily" ,"heart" etc
//but the main logic is to achieve perfect "delay".once if you refer to the
 //delay calculations you will get it
//direction of rotation is also one important thing(clock wise or anti clock)
// this "A" is simetrical so works on both directions.
}

}

void display(car)
{

  switch(car)

  case 'A' : // letter A
  
   {
    led=0x81;  delay( );

    led=0x6f;  delay( ); 

    led=0x6f;  delay( );

    led=0x6f;  delay( );

    led=0x81;  delay( );

    led=0xff;  delay( );// to make one column gap between letters 
   }
    break;

   case ' '  : // space
  
   {
    led=0xff;  delay( );

    led=0xff;  delay( );

    led=0xff;  delay( ); 

    led=0xff;  delay( );

    led=0xff;  delay( );

    led=0xff;  delay( );
   
    led=0xff;  delay( );// to make one column gap between letters

   } break;

 default:
   led=0xfe;
 // gives an underline when no letter to display blue line in the code
}
// END of program

=======================================================================================
i m giving  the example for understanding the logic of this project.you can extend the code by adding number of "switch cases" i made it for active low logic means logic zero indicates led glowing and one indicates off.
with this technique you can make your own custom designs like "heart " "smile"
by changing the "del" variable value you can change the width of a letter.because no two motors are alike.
i prefer you to go for 1000 RPMmotor from vegarobokits. Which will be around 145 Rs


This propeller LED display can be made stable using an interrupt source. An IR sensor can be used to make it stable. Better to use a IR slot sensor as shown in the picture it will be a faster compared to an LM358 based sensor. if your motor is faster than 1500 rpm then this sensor is the best.





observe this video carefully.... you will find a small yellow paper on the base ground which comes in between the slot sensor pins and triggers the display. So your display always starts from a particular point

propeller LED display on sealing fan

in the above pic the fan is shaking due to weight imbalance.

this is due to improper delay between the letters.



the video:





Bluetooth controlled rotating POV LED display 



                                  ALL THE BEST

          +++++++++++++++++++++++++++++++++++++++++++++

=============================================

NOTE: 


  DON'T JUST ASK FOR THE ENTIRE CODE.  


TRY TO


 DEVELOP IT FOR YOUR SELF 


     GO THROUGH THE ARTICLE ONCE AGAIN


 YOU 


WILL FIND EVERY THING  

+++++++++++++++++++++++++++++++++++++++++++++

=============================================

                                                                                                                                 

=========================================================================
=========================================================================  


FOR THOSE WHO WANT TO BUY THE KIT:

FREE SHIPPING ALL OVER INDIA


MAIL US AT
vaabrobotics@gmail.com