Pada rangkaian di atas digunakan metode PWM (Pulse Width Modulation) untuk mengatur kecepatan putaran motor DC. Bentuk PWM memiliki waktu tinggi dan rendah yang dapat diubah, perubahan lama sinyal tinggi dan lama sinyal rendah akan mempengaruhi besar tegangan rata-rata dari sinyal PWM tersebut.
- SW2 ditekan, motor berputar dengan kecepatan separuh kecepatan penuh ke kanan (searah jarum jam).
- SW3 ditekan, motor berputar dengan kecepatan separuh kecepatan penuh ke kiri (berlawanan arah jarum jam).
- SW4 ditekan, motor berputar ke kanan dengan kecepatan penuh selama 5 detik, kemudian berhenti 5 detik, kemudian berputar ke kiri dengan kecepatan penuh selama 5 detik lagi, kemudian berhenti 5 detik, dst.
List Program :
#include <mega16.h>
#include <delay.h>
int i=0;
#define SW2 PINB.0
#define SW3 PINB.1
#define SW4 PINB.2
#define LED1 PORTC.0
#define LED2 PORTC.1
#define OUT1 PORTD.4
#define OUT2 PORTD.5
// Declare your global variables here
void main(void)
{
DDRA=0x00;
PORTA=0x00;
DDRB=0x00;
PORTB=0xFF;
DDRC=0xFF;
PORTC=0x00;
DDRD=0xFF;
PORTD=0x00;
while (1)
{
LED1=0;
LED2=0;
OUT1=0;
OUT2=0;
if (SW2==0)//Jika tombol SW2 ditekan
{
while (i<1)
{
LED1=1;
LED2=0;
OUT1=1;
OUT2=0;
delay_ms(50);
OUT1=0;
OUT2=0;
delay_ms(50);
}
}
if (SW3==0)//Jika tombol SW3 ditekan
{
while (i<1)
{
LED1=0;
LED2=1;
OUT1=0;
OUT2=1;
delay_ms(50);
OUT1=0;
OUT2=0;
delay_ms(50);
}
}
if (SW4==0)//Jika tombol SW4 ditekan
{
while (i<1)
{
LED1=1;
LED2=0;
OUT1=1;
OUT2=0;
delay_ms(5000);
LED1=0;
LED2=0;
OUT1=0;
OUT2=0;
delay_ms(5000);
LED1=0;
LED2=1;
OUT1=0;
OUT2=1;
delay_ms(5000);
LED1=0;
LED2=0;
OUT1=0;
OUT2=0;
delay_ms(5000);
}
}
}
}
Comments
Post a Comment