Skocz do zawartości

Enkoder absolutny 8-bit kod Graya implementacja ARDUINO


rafisoltys

Pomocna odpowiedź

Witajcie,

Próbuję namówić do współpracy z Arduino 8-bitowy dekoder absolutny wykorzystujący kod Graya. 
Serii swoich porażek w tym temacie nie będę przytaczał 😅, przedstawię na jakim etapie jestem.

Enkoder (kara katalogowa w załączniku) podłączony do Arduino Mega2560 (choć docelowo chciałbym Arduino Nano):

G00  - 5
G01 - 6
G02 - 7
G03 - 8
G04 - 9
G05 - 10
G06 - 11
G07 - 12


Oto kod dla enkodera 10-bit , który próbuję przerobić pod 8 bitowy z moimi komentarzami po $

/* 
10bit Absolute Encoder Gray code decoder Example 
Codding by www.thaiconverter.com
The code is Free of use, feel free to use it ;)
We will happy if you use our code to make our World better.
*/

boolean pin_state[8]; // $zmieniono na 8 (z 10) dla 8-bit
byte input_pin[] = {5,6,7,8,9,10,11,12,}; // Config Pins Input Here bit-1 to 10  $dla8bit zmieniono
int dec_position = 0; // $ deklaracja zmiennej przechowującej pozcyje enkodera
boolean a = 0;  // &nie wiem do czego ta zmienna gdyz nie użyta w kodzie.

void setup() {
Serial.begin(9600);
for(byte i = 0; i <8; i = i +1 ){ // declare pin mode $ustawienie pinów jako wejscie pullup zmieniono z10 na 8
  pinMode(input_pin[i], INPUT_PULLUP);
}
}

void loop() {
 Read_input(); // Read Encoder Signal
 delay(100); //$delay do usunięcia  ???
}

void Read_input(){
  for(byte i = 0; i <8; i = i + 1 ){   //$odczytujemy stan enkodera do tablicy 8 bitowej
    pin_state[i] = !digitalRead(input_pin[i]); // Bitwise for active LOW
  }
  // Gray Code Decoder
  dec_position = pin_state[7]; // $ pin_state[9] dla 10 bit zmieniam na pin_state 7 dla 8 bit ?? 
  
  for( int i = 6; i >= 0; i = i -1){ // $ i=8 zmieniono na i=6 dla 8 bit ? Tego nie rozumiem
    dec_position = (dec_position << 1) | (pin_state[i] ^ (dec_position&0x1));
  }
  // Print 0-1023 position with line feed
  Serial.println(dec_position, DEC); 

Powolny obrót enkoderem daje mi takie dane na wyjściu.

1229995029_Zrzutekranu2021-02-04091948.thumb.png.c2d978b692c9c7e1263ce8078012feb8.png

 

Zastanawiam się, czy problemem tutaj jest kod czy może sprzętowy pull_up nie daje rady. 
 

m400_de.pdf

Edytowano przez rafisoltys
dodanie zdjęcia
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.