Paso 3: Paso de programación
En este proyecto, se debe hacer 4 programa para conectarse a Motor de la C.C., Motor Servo, Sensor PING y pantalla LCD.
El programa puede ser como estos
#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];
jarak de flotador;
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;
mientras que (PIN_PING == 0) {}
mientras que (PIN_PING == 1)
{
hitung ++;
delay_us(1);
}
jarak = (unsigned int)(((float)hitung)/25);
Return(jarak); }
void putar_servo(void)
{
para (k = 1; k < = 27; k ++)
{
PORTA.7=1;
para (j = 1; j < = i; j ++)
delay_us(10);
PORTA.7=0;
TIFR & = 0 x 40;
TCNT2 = 0XB1;
mientras (! () TIFR & = 0 x 40));
TIFR & = 0 x 40;
}
}
void main (void)
{
PORTA = 0 X 00;
DDRA = 0XFF;
PORTC = 0 X 00;
DDR = 0XFF;
PORTD = 0 X 00;
DDRD = 0XFF;
TCCR2 = 0X07;
ASSR = 0 X 00;
lcd_init(16);
mientras (1)
{
sprintf (kata, "% 3d cm",baca_jarak());
Si (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 ("basura");
delay_ms(100);
}
Si (jarak > = 30)
{
PORTD.3 = 0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("Trash");
lcd_gotoxy(0,1);
lcd_puts("Detected");
delay_ms(100);
i = 205;
putar_servo();
PORTD.3=1;
delay_ms(1000);
PORTD.3=0;
i = 45;
putar_servo();
}
}
}