Test encoder a quadratura

encoder potenziometro

Esempio d’impiego, della libreria “Encoder a Quadratura”, in un programma di polling (gestione ciclica delle periferiche), per gestire il potenziometro-encoder con integrato un pulsante a pressione, usato per richiamare un sotto programma; questo sistema impegna tre piedini del microcontrollore, due per le uscite dell’encoder e una per il pulsante.

oggetti da inserire nel 3D System panel

DIAGRAMMA DI FLUSSO

encoder test 3DS
  • Dal menu Outputs seleziono il display LCDI2C, mantenendo le “properties” predefinite.
  • Dal menu Inputs, seleziono il QuadEncoder e lo collego ai pin 0 e 1 della porta B.
  • Dal menu Input, seleziono il pulsante Sw_push e lo collego al pin 0 della porta B.
encoder test variabili

Variabili da utilizzare nel programma

  • Variabile “CambiaStato: di tipo Bool, contiene il valore dello stato logico dell’uscita A dell’encoder.
  • Variabile Count: di tipo Int con valori da -32768 a +32767. Contiene il valore del corrispondente al numero di volte che l’encoder ha cambiato stato logico.
  • Variabile Delay di tipo UINT, valore compreso tra 0 e 65535; contiene il numero di volte che può essere ripetuto il ciclo , sostituisce la funzione Delay.
  • Variabile SW: di tipo Bool, contiene il valore del pulsante: premuto = 1, non premuto =0.
encoder test flusso1
  • inizializzo il display LCD, con il Component Macro e la funzione “Start”.
  • Abilito l’encoder con il component Macro e la funzione “Enable”.
encoder test flusso2

CICLO PRINCIPALE

  • Inserisco la Funzione

 Loop: While = 1

  • Inserisco la Funzione Input: connesso al pulsante dell’encoder; pin 7 della porta B.
encoder test flusso3

If Sw = 0

Se l’encoder è in movimento, la funzione Decisione

 CambiaStato = 1

legge il contenuto della variabile Count:

Count=QuadEncoder::ReadCounter

I due pulsanti dell’encoder, incrementano o diminuiscono la variabile Count , la libreria ReadCounter, memorizza il contenuto del contatore e visualizza sul display LCD il valore , con il segno (+ o -) della variabile Count.

Il programma esegue il Ciclo di ritardo per 2000 volte.

Calcolo = Delay = delay + 1

Superati i 2000 cicli, esegue il percorso di destra:

  • LCDI2C::Clear; pulisce il display LCD
  • LCDI2C::PrintNumber(Count); stampa il valore della variabile “Count”, sul display LCD
  • Delay = 0; azzera il valore della variabile “Delay”.
encoder test flusso4

 

If Sw = 1

Quando premo il pulsante connesso al pin 7 della porta B, il programma esegue le istruzioni:

  • QuadEncoder::resetCounter(); azzera il contatore dell’encoder.
  • LCDI2C::Cursor(0,1); posiziona la stringa contenuta in PrinString, alla posizione 0 della linea 1
  • LCDI2C::PrintString(“menu”); contenuto della stringa da visualizzare sul display.
  • Delay = 1 sec; visualizza la scritta “menu” per 1 secondo.
  • Count =0; azzero la variabile “Count”, che contiene il numero di impulsi generati quando si attiva l’encoder.

C Code

rick 3Riccardo Monti