Digitalni input

From Razmjenavjestina-wiki
Jump to: navigation, search

Dakle, sve ovo je zapravo dio malo većeg projekta, robota. Ovdje obješnjavam kako koristiti digitalni input na ATmega16-ici...

Napravili smo program koji upali ledicu 1(OUT1) kada je aktivan input 1(INP1), isto za ledicu dva...

Sintaksa:

#include <avr/io.h> 
#include <stdlib.h>

#define OUT1 (1<<PB0)
#define INP1 (1<<PB1)
#define OUT2 (1<<PB2)
#define INP2 (1<<PB3)

void main()
{

        DDRB |= OUT1;
        DDRB |= OUT2;
        DDRB &= ~(INP1);
        DDRB &= ~(INP2);
        PORTB |= INP1; 
        PORTB |= INP2;

        for(;;)
        {
                if((PINB & INP1) != 0)
                {
                        PORTB &= ~(OUT1);        		
                }
                else
                {
                        PORTB |= OUT1;
                }

                if((PINB & INP2) != 0)
                {
                        PORTB &= ~(OUT2);
                }
                else
                {		
                        PORTB |= OUT2;
                }
        }
}
Daklem, najvažniji dio ovog programa je provjeravanje inputa
(PINB & INP1) != 0)
, ako input nije nula, tj. ako je aktivan, ledica će zasvijetliti.

Sljedeći korak je zamijeniti ledice tranzistorima i na njih prišmajhlati motore. Planiram koristiti BD135 tranzistor koji mi je preporučio Davor.

Nakon što osposobim motore, planiram napraviti software koji omogućuje robotu da shvati kako se treba kretati bez obzira na koji mu output spojim motore.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
Razmjena Po Gradovima