I-Trash bil Prototype (3 / 6 steg)
Steg 3: Programmering steg
I detta projekt, bör du göra 4 program för gränssnitt på DC Motor, Servo Motor, PING Sensor och LCD-skärmen.
Programmet kan vara som dessa
#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 avstånd;
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;
medan (PIN_PING == 0) {}
medan (PIN_PING == 1)
{
hitung ++;
delay_us(1);
}
avstånd = (osignerade int)(((float)hitung)/25);
Return(Jarak); }
void putar_servo(void)
{
för (k = 1; k < = 27; k ++)
{
PORTA.7=1;
för (j = 1; j < = jag, j ++)
delay_us(10);
PORTA.7=0;
TIFR & = 0x40;
TCNT2 = 0XB1;
medan (! () 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);
samtidigt (1)
{
sprintf (kata, "% 3d cm",baca_jarak());
om (avstånd < = 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 ("skräp");
delay_ms(100);
}
om (avstånd > = 30)
{
PORTD.3 = 0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("trash");
lcd_gotoxy(0,1);
lcd_puts("detected");
delay_ms(100);
Jag = 205;
putar_servo();
PORTD.3=1;
delay_ms(1000);
PORTD.3=0;
Jag = 45;
putar_servo();
}
}
}