Stap 3: Programmering stap
In dit project, moet u 4 programma voor interfacing op DC Motor, Servo Motor, PING Sensor en LCD-scherm.
Het programma kan worden als deze
#include < mega8535.h >
#include < delay.h >
#include < alcd.h >
#include < stdio.h >
#define DDR_PING DDRB.0
#define PORT_PING PORTB.0
#define PIN_PING PINB.0
int i, j, k; unsigned char kata [16];
float jarak;
int baca_jarak()
{
unsigned int hitung = 0;
DDR_PING = 1;
PORT_PING = 1;
delay_us(5);
PORT_PING = 0;
DDR_PING = 0;
PORT_PING = 1;
terwijl (PIN_PING == 0) {}
terwijl (PIN_PING == 1)
{
hitung ++;
delay_us(1);
}
jarak = (niet-ondertekende int)(((float)hitung)/25);
Return(jarak); }
VOID putar_servo(void)
{
voor (k = 1; k < = 27; k ++)
{
PORTA.7=1;
voor (j = 1; j < = ik; j ++)
delay_us(10);
PORTA.7=0;
TIFR & = 0x40;
TCNT2 = 0XB1;
terwijl (! () TIFR & 0x40 =));
TIFR & = 0x40;
}
}
void main (void)
{
PORTA = 0X00;
DDRA = 0XFF;
PORTC = 0X00;
DDRC = 0XFF;
PORTD = 0X00;
DDRD = 0XFF;
TCCR2 = 0X07;
ASSR = 0X00;
lcd_init(16);
terwijl (1)
{
sprintf (kata, "% 3d cm",baca_jarak());
Als (jarak < = 29)
{
PORTD.3 = 1;
PORTD.4 = 0;
lcd_clear();
sprintf (kata "% 3d cm", baca_jarak());
lcd_gotoxy(0,0);
lcd_puts(Kata);
lcd_gotoxy(0,1);
lcd_puts ("TRASH");
delay_ms(100);
}
Als (jarak > = 30)
{
PORTD.3 = 0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("Trash");
lcd_gotoxy(0,1);
lcd_puts("detected");
delay_ms(100);
Ik = 205;
putar_servo();
PORTD.3=1;
delay_ms(1000);
PORTD.3=0;
Ik = 45;
putar_servo();
}
}
}