Skocz do zawartości

Enkoder absolutny 8-bit kod Graya implementacja ARDUINO


Pomocna odpowiedź

Napisano (edytowany)

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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...