tabbi Napisano Grudzień 14, 2010 Udostępnij Napisano Grudzień 14, 2010 Witam, posiadam już gotową płytke z atmega 8 gdzie są zainstalowane czujniki CNY70 - zgodnie z schematem "Przepis na robota" Mam jednak problem z sprawdzeniem działania czujników. Pisze taki program w C: /* ATmega 1MHz */ #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { //wyjscia DDRD=0xff; //wejscia z podłaczeniem do VCC DDRC = 0x00; PORTC = 0xff; while(1){ //wykrywanie w czujniku - dioda ze swieci / czujnik podpiety do PORTC=3 if(!(PINC & 0x04)){ PORTD = 0x40; _delay_ms(800); } else PORTD = 0x00; //wykrywanie w czujniku - dioda ze swieci / czujnik podpiety do PORTC=4 if(!(PINC & 0x40)) { PORTD = 0x40; _delay_ms(800); } else {PORTD = 0x00;} //wykrywanie w czujniku - dioda ze swieci / czujnik podpiety do PORTC=5 if(!(PINC & 0x10)) { PORTD = 0x40; _delay_ms(800); } else {PORTD = 0x00;} } } Dioda jest podpieta do Portu D =6; Wynik działania programu to taki że cały czas świeci dioda niezaleźnie czy przyłoże czarna kartke do czujników czy nie ? Jak sprawdzić stan czujników ? Cytuj Link do komentarza Share on other sites More sharing options...
RaV Grudzień 14, 2010 Udostępnij Grudzień 14, 2010 Jak sprawdzić stan czujników ? Można multimetrem sprawdzić czy czujniki reagują. Czy mógłbyś podać link do schematu bo nie mogę znaleść... Cytuj Link do komentarza Share on other sites More sharing options...
tabbi Grudzień 14, 2010 Autor tematu Udostępnij Grudzień 14, 2010 Multimetrem sprawdzałem wszystko oki, link do schematu: https://www.forbot.pl/forum/topics20/przepis-na-robota-w-pelni-programowalny-line-follower-vt2356.htm a jak sprawdzić kiedy ma być 0 V (nad biała kartką) z czujników mam 4 odnóżki i wokół zwarcia ? Cytuj Link do komentarza Share on other sites More sharing options...
RaV Grudzień 14, 2010 Udostępnij Grudzień 14, 2010 Linijke PORTC = 0xff; można usunąć, masz rezystory podciągające do + na schemacie Jeśli chodzi o pomiar napięcia to najprościej między końcówką portu µkontrolera, a masą, czyli - zasilania. ---- Wydaje mi się, że fototranzystor zmniejsza oporność pod wpływem światła, czyli nad czarną linią dotrze do niego mniej światła. Będzie miał większy opór, więc napięcie na nóżce będzie wyższe, czyli linie oznacza raczej logiczna "1". --- I moim zdaniem czytelniej jest stosować zapis: PORTD |= 1 << 6; niż PORTD = 0x40; operator << oznacza przesunięcie bitów w lewo, czyli 1 zostanie przesunięta z 0 na 6 bit. Dzięki takiemu zapisowi od razu widać jaki pin zmieniamy. Taki zapis przy okazji ma jeszcz dwie inne zalety: -nie zmienia innych bitów -wiele bitów (popatrz w dokumentacji) ma swoje nazwy, te nazwy ma zapisane kompilator i w kodzie zamiast numeru bitu można wpisać jego nazwę. ---- //wykrywanie w czujniku - dioda ze swieci / czujnik podpiety do PORTC=3 if(!(PINC & 0x04)) 0x04= 00000100 76543210 numery bitów sprawdzasz pin 2 a nie 3 podobne błędy masz w innych 1 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
tabbi Grudzień 16, 2010 Autor tematu Udostępnij Grudzień 16, 2010 DZIEKI UDALO SIE __________ Komentarz dodany przez: Sabre Twój post łamie regulamin forum, punkt 3j, proszę o poprawienie treści. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!