Skocz do zawartości

[LineFollower]Dosyć standardowo, ATMega8+L293D


mpsk2

Pomocna odpowiedź

Witam

Proszę o pomoc w sprawdzeniu tego co skleciłem z wiedzy własnej i internetu. Szczególnie program i płytki

Chciałbym wiedzieć takie rzeczy jak "czy będzie działać" zanim zrobię.

Zasilanie 7,2V pewnie, minimum 6V (akumulatorki)

#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>

//porty C robią za sterowanie silnikiem

//porty D robią za wejście czujnika linii i wyjście 3 diod

//

//int SPT(); //silnik prawy tył
//int SPP(); //silnik prawy przód
//int SPS(); //silnik prawy stop
//int SLT(); //silnik lewy tył
//int SLP(); //silnik lewy przód
//int SLS(); //silnik lewy stop
int TYL(int); //jazda do tyłu - napisana
int PRZ(int); //Jazda do przodu - napisana
int SWL(); //skręć w lewo - napisana
int SWP(); //skręć w prawo - napisana
//int ZAW(); //zawróć - narazie musze miec roota, by wiedziec jak on się obraca (miejscu czy nie)
int RNS(); //stop - napisana
int PKR(); //procedura kierowania robota - napisana
int POP(); //procedura obsłógi programu - napisana
int PTL(); //przypisuje moim ułatwieniom numerki - napisane 
int ZTL(); //zeruje je - napisana


int c1,c2,c3,c4; //zmienne definiowane globalnie mają pierwotnie wartość 0, zmienne numerowane od lewej
int A;//info, tam była linia 0-nie było, 1-po lewej, 2-prawo, dla obu każę mu zawsze skręcać w lewo, narazie


int main()
{

DDRD=0xF0;//4 pierwsze wejścia, 4 następne wyjścia - czujnik lini i 3 sygnalizatory - diody
DDRC=0xFF;//8 wyjść, 6 pierwszych do sterowania silnikiem, następne 2 bez celu
//pętla nieskończona

POP();

return 0;
}
int POP(){
while(PKR()){_delay_ms(25);}
return 1;
}

int ZTL(){c1=0;c2=0;c3=0;c4=0; return 1;}

int PTL(){
if(PINC & 0x01)c1=1; 
if(PINC & 0x02)c2=1; 
if(PINC & 0x04)c3=1; 
if(PINC & 0x08)c4=1; return 1;}

int PKR(){
//dla ułatwienia rozpiszę piny wejścia na zmienne

PTL();

//w naszym przypdku wszystkie czujniki ustawione są w jednej lini

//jeżeli 2 środkowe wskazują, że jest ok, a pozostałe, że nie to znaczy, że jest ok
if((c2==c3==1) && (c1==c4==0)) {PRZ(); ZTL(); return 1;}
//jeżeli 1 z 2 lewe działają to skręca w lewo
if((c2==1 || c1==1) && (c3==c4==0)) {SWL(); ZTL(); return 1;}
//jeżeli 1 z 2 prawe działają to skręca w prawo
if((c2==c1==0) && (c3==1 || c4==1)) {SWP(); ZTL(); return 1;}
//jeżeli żaden to pojedz 2s do przodu, 
//jak będzie po drodze to jazda, a jak nie to klapa, koniec (narazie bez zawracania)
if(c1==c2==c3==c4==0){PRZ(); for(int i = 0 ; i < 8; i++){_delay_ms(255); 
		PTL(); if(c1==1 || c2==1 || c3==1 || c4==1){ ZTL();return 1;} } ZTL(); return 0;}

//3 linie po lewej
if(c1==c2==c3==1 && c4==0 && A==0) {A=1; PRZ(2); PTL(); 
		if(c1==c2==c3==c4==0){ TYL(2); ZTL();} else{PRZ();return 1;} }

if(c1==c2==c3==1 && c4==0 && A==1) {SWL();for(int i = 0 ; i < 4; i++)_delay_ms(255);A=0; return 1; }
//3 linie po prawej
if(c4==c2==c3==1 && c1==0 && A==0) {A=2; PRZ(2); PTL(); 
		if(c1==c2==c3==c4==0){ TYL(2); ZTL();} else{PRZ();return 1;} }

if(c4==c2==c3==1 && c1==0 && A==2) {SWP();for(int i = 0 ; i < 4; i++)_delay_ms(255); return 1; }

//4 czujniki - skręca w lewo
if(c4==c2==c3==c1==1 && A==0) {A=1; PRZ(2); PTL(); 
		if(c1==c2==c3==c4==0){ TYL(2); ZTL();} else{PRZ();return 1;} }

if(c4==c2==c3==c1==1 && A==1) {SWL();for(int i = 0 ; i < 4; i++)_delay_ms(255); return 1; }


}

int RNS(){
PORTC=0x00; // stop
}

nt SWL(){ PORTD|=0x80;
PORTC=0x78; // w prawy przód, lewy tył
}

int SWP(){PORTD|=0x40;
PORTC=0xD4; // w prawy tył, lewy przód
}

int PRZ(int x=-1){PORTD|=0xC0;
PORTC=0xD8;
if(x==-1)return 1;
x*=4;
while(x--)_delay_ms(255);
return 1;
}

int TYL(int x=-1){
PORTC=0x74;
if(x==-1)return 1;
x*=4;
while(x--)_delay_ms(255);
return 1;
}
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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.