Étape 3: Étape de programmation
Dans ce projet, vous devriez faire 4 programme d’interfaçage à moteur DC, moteur Servo, capteur de PING et écran LCD.
Le programme peut être comme celles-ci
#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] ;
flotteur 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 ;
même si (PIN_PING == 0) {}
même si (PIN_PING == 1)
{
hitung ++ ;
delay_us(1) ;
}
Jarak = (unsigned int)(((float)hitung)/25) ;
Return(Jarak) ; }
Sub putar_servo(void)
{
pour (k = 1; k < = 27; k ++)
{
PORTA.7=1 ;
pour (j = 1; j < = i; j ++)
delay_us(10) ;
PORTA.7=0 ;
TIFRER & = 0 x 40 ;
TCNT2 = 0XB1 ;
tandis que (! () TIFRER & = 0 x 40)) ;
TIFRER & = 0 x 40 ;
}
}
void main (void)
{
PORTA = 0 X 00 ;
DDRA = 0XFF ;
PORTC = 0 X 00 ;
DDRC = 0XFF ;
PORTD = 0 X 00 ;
DDDR = 0XFF ;
TCCR2 = 0 X 07 ;
ASSR = 0 X 00 ;
lcd_init(16) ;
while (1)
{
sprintf (kata, "% cm",baca_jarak()) 3d ;
Si (jarak < = 29)
{
PORTD.3 = 1 ;
PORTD.4 = 0 ;
lcd_clear() ;
sprintf (kata, « % cm 3d », baca_jarak()) ;
lcd_gotoxy(0,0) ;
lcd_puts(Kata) ;
lcd_gotoxy(0,1) ;
lcd_puts ("TRASH") ;
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) ;
J’ai = 205 ;
putar_servo() ;
PORTD.3=1 ;
delay_ms(1000) ;
PORTD.3=0 ;
J’ai = 45 ;
putar_servo() ;
}
}
}