Skip to content
Extraits de code Groupes Projets
encoder.cpp 1,48 ko
Newer Older
  • Learn to ignore specific revisions
  • #include <stdio.h>
    
    Damien Wiame's avatar
    Damien Wiame a validé
    #include <stdlib.h>
    #include <unistd.h>
    #include <iostream>
    #include <string.h>
    
    #include <math.h>
    
    Damien Wiame's avatar
    Damien Wiame a validé
    #include <wiringPi.h>
    
    #include <wiringPiSPI.h>
    
    Damien Wiame's avatar
    Damien Wiame a validé
    using namespace std;
    
    const int BYTE_len=4;
    const int SPI_CHANNEL=1;
    unsigned char rawData[BYTE_len];
    unsigned char rawData_delayed[BYTE_len];
    float count;
    
    float clock_count;
    
    float count_delayed;
    float speed;
    
    int freq=500000;
    int res = 2048;
    
    Damien Wiame's avatar
    Damien Wiame a validé
    int main(int argc, char const *argv[])
    {   
    
        
        rawData_delayed[0]=0x00;
        rawData_delayed[1]=0x00;
        rawData_delayed[2]=0x00;
        rawData_delayed[3]=0x00;
    
    
    Diego de Fauconval's avatar
    Diego de Fauconval a validé
        if (wiringPiSetup() == -1) {
            printf("WiringPiSetup failed\n");
            exit(EXIT_FAILURE);
        }
    
        //memset(rawData,0x01,BYTE_len);
        //rawData[0]=0x0F;
    
        rawData[3]=0x00;
        rawData[2]=0x00;
        rawData[1]=0x00;
        rawData[0]=0x00;
    
        int fd = wiringPiSPISetup(SPI_CHANNEL, 500000);
    
    Diego de Fauconval's avatar
    Diego de Fauconval a validé
    
    
        //for (int i=0; i<4; i++){
               //printf("%02X \n", rawData[i]); 
    
    Damien Wiame's avatar
    Damien Wiame a validé
            //}
    
    
       while(1) { 
    
            int result = wiringPiSPIDataRW(SPI_CHANNEL, rawData, BYTE_len);
    
            printf("\r%d %d %d %d", rawData[0], rawData[1], rawData[2], rawData[3]); 
            fflush(stdout);
    
            //printf("\n");
    
            count=(rawData[0]*pow(16, 4))+(rawData[1]*pow(16, 2))+(rawData[2]*pow(16, 0));
    
    Damien Wiame's avatar
    Damien Wiame a validé
            
    
            speed=freq*(2*3.1415/res)*(count-count_delayed);
    
            //printf("\r%lf", count); 
            //fflush(stdout);
            count_delayed=count;
            //printf("\n");
    
            //sleep(0.5);
    
    Damien Wiame's avatar
    Damien Wiame a validé
        }
           
    
        return 0;
    
    Damien Wiame's avatar
    Damien Wiame a validé