Skocz do zawartości

QTR-3RC pololu atmega8


zag102

Pomocna odpowiedź

Witam wszystkich od kilku dni walczę z wspomnianym cyfrowym czujnikiem i atmega8 i c++ posiłkowałem się bibliotekami z oficjalnej strony pololu https://www.pololu.com/docs/0J20/3.k ale wywala mi errory po kompilacji pisze że:

Error 1 undefined reference to `qtr_rc_init'

Error 2 undefined reference to `qtr_calibrate'

Error 3 undefined reference to `delay_ms'

Prosze o pomoc może ktoś coś takiego programował.

Link do komentarza
Share on other sites

#include <avr/io.h>
#include <util/delay.h>
#include <pololu/orangutan.h>

//Dioda LED
#define LED (1<<PD2)
#define DIODA PORTD ^= LED
//Przycisk
#define KEY (1<<PD6)
#define PRZYCISK !(PIND & KEY)
uint8_t klawisz_wcisniety(void);
//silnik 1 (LEWY) - wejscia
#define BIN1_1 PD1
#define AIN2_1 PD0
//silnik 2 (PRAWY) - wejscia
#define AIN1_2 PB0
#define BIN2_2 PD7
//PWM
#define PWM_A    (1<<PB1)
#define PWM_B    (1<<PB2)
//Prędkośc max
int predkosc_max = 60;
//Prędkośc min
int predkosc_min = 30;
int predkosc_atak = 200;
void jazda_tyl(void) {
DDRD |= (1<<BIN1_1);
PORTD &= ~ (1<<BIN1_1);
DDRD |= (1<<AIN2_1);
PORTD |= (1<<AIN2_1);
OCR1B = predkosc_max;

DDRD |= (1<<BIN2_2);
PORTD &= ~ (1<<BIN2_2);
DDRB |= (1<<AIN1_2);
PORTB |= (1<<AIN1_2);
OCR1A = predkosc_max;

}

//Zatrzymanie silników
void motor_stop(void) {
OCR1B = 0;
DDRD |= (1<<BIN1_1);
PORTD &= ~(1<<BIN1_1);
DDRD |= (1<<AIN2_1);
PORTD &= ~(1<<AIN2_1);
OCR1A = 0;
DDRD |= (1<<BIN2_2);
PORTD &= ~ (1<<BIN2_2);
DDRB |= (1<<AIN1_2);
PORTB &= ~(1<<AIN1_2);
}
//Jazda do przodu
void jazda_przod(void) {
DDRD |= (1<<BIN1_1);
PORTD |= (1<<BIN1_1);
DDRD |= (1<<AIN2_1);
PORTD &= ~(1<<AIN2_1);
OCR1B = predkosc_max;

DDRD |= (1<<BIN2_2);
PORTD |= (1<<BIN2_2);
DDRB |= (1<<AIN1_2);
PORTB &= ~(1<<AIN1_2);
OCR1A = predkosc_max;


}
void jazda_przod_atak(void) {
DDRD |= (1<<BIN1_1);
PORTD |= (1<<BIN1_1);
DDRD |= (1<<AIN2_1);
PORTD &= ~(1<<AIN2_1);
OCR1B = predkosc_atak;

DDRD |= (1<<BIN2_2);
PORTD |= (1<<BIN2_2);
DDRB |= (1<<AIN1_2);
PORTB &= ~(1<<AIN1_2);
OCR1A = predkosc_atak;


}

uint8_t klawisz_wcisniety(void)
{
if(PRZYCISK)
{
	_delay_ms(80);
	if(PRZYCISK)
	return 1;
}
return 0;
}


int main( void ){

/* USTAWIANIE WYJŚĆ */
DDRB |= (PWM_A|PWM_B);    
/* INICJALIZACJA PWM */
TCCR1A |= (1<<WGM10);                    
TCCR1B |= (1<<WGM12);
TCCR1A |= (1<<COM1A1)|(1<<COM1B1) ;
TCCR1B |= (1<<CS10)|(1<<CS11);            

OCR1A = 0;         
OCR1B = 0;        

DDRD |= LED;
PORTD |= LED;
DDRD &= ~KEY;
PORTD |= KEY;
DDRD |= (1<<PD2);
DDRC &= ~(1<<PC0);
DDRC &= ~(1<<PC1);
DDRC &= ~(1<<PC2);

PORTC |= (1<<PC0);
PORTC |= (1<<PC1);
PORTC |= (1<<PC2);

// initialize  QTR sensors jak to dodam poniżej te dwie linijki to wywala błędy
// bez nich czujnik reaguje tylko na zbliżenie i oddalenie czyli kreci kołami w przód lub w tył
// i błędów nie ma 
 unsigned char qtr_rc_pins[] = {IO_C0, IO_C1, IO_C2};
 qtr_rc_init(qtr_rc_pins, 3, 2000, 255);

while(1)
{

	if(klawisz_wcisniety()) {
		while(1)
		{

			if( ( PINC & (1<<PC0) ) )
			{
				jazda_przod();
			}
			else
			{
				jazda_tyl();
			}
			if( ( PINC & (1<<PC1) ) )
			{
				jazda_przod();
			}
			else
			{
				jazda_tyl();
			}
			if( ( PINC & (1<<PC2) ) )
			{
				jazda_przod();
			}
			else
			{
				jazda_tyl();
			}

		}//while
	}//przycisk
}//while glowny
}

to co dodałem w opisie co wywala błedy

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.