Skocz do zawartości

Eposas

Użytkownicy
  • Zawartość

    6
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O Eposas

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Witanowice
  • Zainteresowania
    Elektronika robotyka
  • Zawód
    Elektronik
  1. Witam, mam problem może i prosty do rozwiązania ale ja go akurat nie widzę. Chodzi mi kod do zliczania impulsów z silnika krokowego bipolarnego, przysyłam wam mój program w którym chce własnie taki licznik w którym będzie wyświetlał mi na lcd ilosc kroków czyli impulsów. #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/pgmspace.h> #include "LCD/lcd44780.h" #include "MK_ENCODER2/mkencoder.h" #define BUZ (1<<PB0) #define BUZ_OFF PORTB &= ~BUZ #define BUZ_ON PORTB|= BUZ #define BEEP BUZ_ON; _delay_ms(5); BUZ_OFF #define BEEP1 BUZ_ON; _delay_us(500); BUZ_OFF #define LED_PIN (1<<PC7) // definicja pinu do którego podłączona jest dioda #define LED_PIN1 (1<<PC6) #define LED_TOG PORTC ^= LED_PIN // makrodefinicja – zmiana stanu diody #define LED_TOG1 PORTC ^= LED_PIN1 static void kroki_lewo(void); static void kroki_prawo(void); uint8_t rep; /* przydatne definicje pinów sterujących */ #define A1 (1<<PD4) // 4 #define B1 (1<<PD5) // 8 #define B2 (1<<PD6) // 16 #define A2 (1<<PD7) // 32 /* definicje kroków sterujących pracą silnika */ #define KROK1 PORTD |= A1|B1; PORTD &= ~(A2|B2) // 12 >> HEX: 0xC #define KROK2 PORTD |= A2|B1; PORTD &= ~(A1|B2) // 40 >> HEX: 0x28 #define KROK3 PORTD |= A2|B2; PORTD &= ~(A1|B1) // 48 >> HEX: 0x30 #define KROK4 PORTD |= A1|B2; PORTD &= ~(A2|B1) // 20 >> HEX: 0x14 void enkoderek( int8_t edir, int value ); void przycisk( void); // główna funkcja programu int main( void ) { /* ustawiamy piny sterujące L293D jako wyjścia */ DDRD |= A1|A2|B1|B2; DDRC |= LED_PIN | LED_PIN1; // kierunek pinu PC7 – wyjściowy DDRB |= BUZ; BUZ_OFF; mk_encoder_init(); register_enc_event_callback( enkoderek); register_enc_event_sw_callback( przycisk ); // wyświetlacz LCD DDRA |= ( 1 << PA7 ); PORTA |= ( 1 << PA7 );// podświetlenie LCD lcd_init(); lcd_str_P( PSTR( "bipolar" ) ); sei(); // globalne zezwolenie na przerwania while ( 1 ) { ENCODER_EVENT(); // zdarzenie enkodera } } void przycisk( void ) { BEEP1; } void enkoderek( int8_t edir, int value ) { BEEP1; if(edir==-1)kroki_prawo() ; // else kroki_lewo(); } /* funkcja wykonująca cyklicznie kroki (obrót w lewo) */ static void kroki_lewo(void) { static uint8_t kr; if( kr == 0 ) { KROK1; } if( kr == 1 ) { KROK2; } if( kr == 2 ) { KROK3; } if( kr == 3 ) { KROK4; } if( ++kr > 3 ) kr=0; } /* funkcja wykonująca cyklicznie kroki (obrót w prawo) */ static void kroki_prawo(void) { static uint8_t kr; if( kr == 0 ) { KROK4; } if( kr == 1 ) { KROK3; } if( kr == 2 ) { KROK2; } if( kr == 3 ) { KROK1; } if( ++kr > 3 ) kr=0; } komentarzami się nie przejmujcie bo nie miałem je kiedy poprawić, a po za tym kiedy przekręcam enkoderem to i tak silnik nie rusza :) i nie wiem w czym jest błąd
  2. właśnie takie odp szukałem, dzięki zaraz biorę sie za poszukiwania.
  3. Taką postawę to ja rozumiem, sytuacja wygląda tak ostatnio zrobiłem robota analogowego gdyż jestem z starej daty. Jednak teraz chciałbym zrobić coś ambitnego z użyciem mikrokontrolerów, cena to jest do 10 tysięcy. Pracuję jako elektryk i miałem kiedyś plan aby zrobić coś fajnego a dokładniej robotą jeżdżącego według schematu i wykonującego proste operacje. Muszę przyznać że nie dawno się zabrałem za programowanie więc z tego jestem raczej zielony. Postawię go w odpowiednim punkcie włączę i niech jeździ tka jak ma zaprogramowane czyli np zatrzymuje sie przy puszce robi otwór a nastąpienie według schematu jedzie dalej do następnej. Wszystko dzieje się na parterze bez zadnych schodów i przeszkód, jak na razie. Czy da się coś z tego zrobić jak masz inny pomysł to napisz może będzie lepszy łatwiejszy.
  4. Skończyłem zawodówkę malarską, dopiero poznaje co to jest rezystor jeszcze nie kupiłem lutownicy... Kolego ja wiem że czujesz wyższość na tym portalu i jeśli tak piszesz do reszty początkujących robotyków to nie dziwię się dlaczego nie którzy skarżą się na ten portal . oczekuję odpowiedzi tylko czy takie coś da się zrobić jak najprościej. Wgrywam schemat i on porusza się według niego. Tyle resztę sam sobie wykombinuje w końcu skończyłem zawodówkę malarską...
  5. Chodzi mi o to że wgrywam schemat "elektryczny" i ten ów robot przetwarza go tak aby poruszał sie np do puszki. Jeśli na schemacie jest 2 metry do puszki to chce zeby tyle w rzeczywistości przeszedł robot i zatrzymał się.
  6. Witam, zacznę od razu bez owijania w bawełnę, otóż mam taki plan aby zbudować robota do którego będę chciał wgrać schemat np elektryczny i chodzi mi o to aby ten robot poruszał się według tego schematu. Nie wiem jak to lepiej ująć, dlatego piszę tutaj. Głównie chodzi mi o koncepcję bo myślę że problem jest w zaprogramowaniu. POZDRAWIAM
×
×
  • Utwórz nowe...