Bene, mi fa piacere vedere che hai accettato il fatto di scomporre il problema e cercare almeno di capire come si gestisce un encoder con arduino prima di andare avanti per tentativi.
Leggiti il file README presente nel link della libreria, è spiegato come settare alcuni parametri relativi al bottone e agli scatti dell' encoder in questione.
Progetto arduino spot welder...ma non ne vengo fuori.
46 messaggi
• Pagina 4 di 5 • 1, 2, 3, 4, 5
0
voti
Ora tra tutti gli incidenti di percorso forse il peggiore: quando connetto al Mac L'Arduino mi va in kernel panico e si riavvia in automatico
Poi ho cambiato porta USB, cambiato cavetto, cambiato Arduino... sempre la stessa cosa! Poi ho collegato un data logger che avevo li a portata di mano e...zac! Riavviato.
Quindi ora ho l'impressione che dovrò formattare il Mac e reinstallare da zero, un po' di ore di tempo perso.
Per tornare al nostro sketch clickencodertest.ino, leggendolo ho capito che i pin interessati sono A1, A0 e A2. Ma sull'encoder come vanno su clk, dt e sw? Ho notato che non sono elencati nell'ordine naturale 0, 1 e 2. Forse A1->clk / A0->dt/ A2->sw?
Poi ho cambiato porta USB, cambiato cavetto, cambiato Arduino... sempre la stessa cosa! Poi ho collegato un data logger che avevo li a portata di mano e...zac! Riavviato.
Quindi ora ho l'impressione che dovrò formattare il Mac e reinstallare da zero, un po' di ore di tempo perso.
Per tornare al nostro sketch clickencodertest.ino, leggendolo ho capito che i pin interessati sono A1, A0 e A2. Ma sull'encoder come vanno su clk, dt e sw? Ho notato che non sono elencati nell'ordine naturale 0, 1 e 2. Forse A1->clk / A0->dt/ A2->sw?
0
voti
Un encoder ottico tradizionale ha 2 uscite in quadratura A e B, in aggiunta una uscita per un pulsante normalmente aperto.
Dall'include della libreria:
In primi due sono i due segnali in quadratura, il terzo è il pulsante. I due segnali in quadratura possono essere scambiati, cambia il verso di rotazione rilevato se orario o anti orario.
P.S. Non ho un MAC ma controlla i driver USB della seriale devono essere installati correttamente e compatibili col chip presente nella board di Arduino che usi.
Dall'include della libreria:
- Codice: Seleziona tutto
ClickEncoder(uint8_t A, uint8_t B, uint8_t BTN
In primi due sono i due segnali in quadratura, il terzo è il pulsante. I due segnali in quadratura possono essere scambiati, cambia il verso di rotazione rilevato se orario o anti orario.
P.S. Non ho un MAC ma controlla i driver USB della seriale devono essere installati correttamente e compatibili col chip presente nella board di Arduino che usi.
0
voti
Grazie per l'info, ho parecchie difficoltà a decifrare il significato del codice dello sketch, spero di aver capito correttamente. Per il Mac il problema è più grave: non è una questione di driver, anche quando inserisco altri dispositivi USB va in crash!!!!!
0
voti
Aggiornamento: ho fatto il test dell'encoder usando il monitor seriale come suggerito, e funziona. Riconosce sia il click che l'accelerazione. L'unica cosa che ho notato è che ad ogni step di rotazione (cioè ogni segmento in cui è frazionata la rotazione completa) sul monitor avanza di 4 unità (0 ; 4 ; 8 ; 12 ; 8 ; 4 ; 0 ; -4 ; -8 etc).
Secondo voi potrebbe essere questa cosa a mandare in tilt il progetto? Come dovrei correggerlo?
Secondo voi potrebbe essere questa cosa a mandare in tilt il progetto? Come dovrei correggerlo?
1
voti
Se (come ti è stato consigliato piu volte) avessi letto la documentazione della libreria che stai usando, nel famoso file README, tra le altre cose avresti trovato questo:
Depending on the type of your encoder, you can define use the constructors parameter stepsPerNotch an set it to either 1, 2 or 4 steps per notch, with 1 being the default.
If you have trouble with certain encoders, try
#define ENC_DECODER (1 << 2)
to use a table-based decoder, which can then be tuned using
#define ENC_HALFSTEP
The default is ENC_HALFSTEP 1.
0
voti
In pratica prima dell'include della libreria nei sorgenti:
inserisci questo define:
e vedi se funziona correttamente.
- Codice: Seleziona tutto
...
#include <ClickEncoder.h>
...
inserisci questo define:
- Codice: Seleziona tutto
...
#define ENC_DECODER ENC_FLAKY
#include <ClickEncoder.h>
...
e vedi se funziona correttamente.
0
voti
Ciao, comincio con lo scusarmi per tutto il tempo che è passato senza che rispondessi, ma prima di farlo volevo avere qualche verifica per le mani da sottoporvi. Non parliamo del mac che ho dovuto reinstallare da zero per riuscire a venirne a capo, o del fatto che all'improvviso tre schede arduino nano non ne volevano sapere di caricare codice
Chiedo scusa per questo piccolo OT: che spiegazione esiste per il fatto che prima le schede le configuravo come ATmega328P e funzionavano ed ora funzionano solo se seleziono "old bootloader"?????? fine OT
@lucaking: io il file readme lo avevo letto, ma da qui a capire come mettere in pratica quelle informazioni purtroppo ce ne passa un po'...
@xyz: vediamo se ho capito...nel sorgente del file ClickEncoderTest, praticamente dopo il #define WITH_LCD e prima del #include <ClickEncoder.h> devo aggiungere il #define ENC_DECODER ENC_FLAKY, che chiede alla libreria parametri specifici per un encoder non standard...è questo il senso?
perché se ho capito giusto ho provato a caricare lo sketch ma il risultato non cambia: ogni step aumenta i valori sul monitor di 4.
Seguendo lo stesso principio ho fatto altre prove, seguendo i suggerimenti di lucaking e leggendo anche il listato della libreria.
ecco le varie prove:
A meno che io non abbia completamente frainteso i vostri suggerimenti, tutte queste modifiche non hanno cambiato il comportamento dell'encoder. Rimane aperto il discorso della configurazione degli steps.
ecco cosa dice il file readme:
"Depending on the type of your encoder, you can define use the constructors parameter stepsPerNotch an set it to either 1, 2 or 4 steps per notch, with 1 being the default."
Ma leggendo il listato della libreria si legge che è settato ad 1
P.S. nelle prove ho utilizzato sia l'encoder ky-040 che il più classico ec-11
cosa ne pensate? Nel frattempo continuerò a studiarci su
ciao
Chiedo scusa per questo piccolo OT: che spiegazione esiste per il fatto che prima le schede le configuravo come ATmega328P e funzionavano ed ora funzionano solo se seleziono "old bootloader"?????? fine OT
@lucaking: io il file readme lo avevo letto, ma da qui a capire come mettere in pratica quelle informazioni purtroppo ce ne passa un po'...
@xyz: vediamo se ho capito...nel sorgente del file ClickEncoderTest, praticamente dopo il #define WITH_LCD e prima del #include <ClickEncoder.h> devo aggiungere il #define ENC_DECODER ENC_FLAKY, che chiede alla libreria parametri specifici per un encoder non standard...è questo il senso?
perché se ho capito giusto ho provato a caricare lo sketch ma il risultato non cambia: ogni step aumenta i valori sul monitor di 4.
Seguendo lo stesso principio ho fatto altre prove, seguendo i suggerimenti di lucaking e leggendo anche il listato della libreria.
ecco le varie prove:
- #define ENC_DECODER ENC_FLAKY
#include <ClickEncoder.h>
- #define ENC_FLAKY (1 << 2)
#include <ClickEncoder.h>
- #define ENC_DECODER (1 << 2)
#include <ClickEncoder.h>
- #define ENC_DECODER (1 << 2)
#define ENC_HALFSTEP 1
- #define ENC_DECODER (1 << 2)
#define ENC_HALFSTEP 2
A meno che io non abbia completamente frainteso i vostri suggerimenti, tutte queste modifiche non hanno cambiato il comportamento dell'encoder. Rimane aperto il discorso della configurazione degli steps.
ecco cosa dice il file readme:
"Depending on the type of your encoder, you can define use the constructors parameter stepsPerNotch an set it to either 1, 2 or 4 steps per notch, with 1 being the default."
Ma leggendo il listato della libreria si legge che è settato ad 1
- public:
ClickEncoder(uint8_t A, uint8_t B, uint8_t BTN = -1,
uint8_t stepsPerNotch = 1, bool active = LOW);
P.S. nelle prove ho utilizzato sia l'encoder ky-040 che il più classico ec-11
cosa ne pensate? Nel frattempo continuerò a studiarci su
ciao

0
voti
Ragazzi, credo di aver risolto!!!! Per pura fortuna chiaramente...
Ho modificato il valore dello stepsPerNotch direttamente nel listato della libreria ClickEncoder.h prima con un 2, e a quel punto avanzava di 2 unità per step, poi a 4 ed ora funziona a meraviglia!!!
Sicuramente ho completamente frainteso i vostri suggerimenti
Ora, appena avrò un'altra mezz'oretta di tempo si tratta di spostare questa lezione sul progetto principale del controller per lo spot welder e capire se il problema era questo.
Vi tengo sicuramente aggiornati.
Ho modificato il valore dello stepsPerNotch direttamente nel listato della libreria ClickEncoder.h prima con un 2, e a quel punto avanzava di 2 unità per step, poi a 4 ed ora funziona a meraviglia!!!
- public:
ClickEncoder(uint8_t A, uint8_t B, uint8_t BTN = -1,
uint8_t stepsPerNotch = 4, bool active = LOW);
Sicuramente ho completamente frainteso i vostri suggerimenti
Ora, appena avrò un'altra mezz'oretta di tempo si tratta di spostare questa lezione sul progetto principale del controller per lo spot welder e capire se il problema era questo.
Vi tengo sicuramente aggiornati.

0
voti
Modificare un include di una libreria non propria di solito non è la soluzione migliore.
Esiste una soluzione corretta dal punto di vista della programmazione, basta aggiungere il parametro "stepsPerNotch" al costruttore dell'oggetto di una classe "ClickEncoder".
Ad esempio, se nel codice viene creato l'oggetto in questo modo:
basta aggiungere il parametro da modificare (4) rispetto al valore di default (1):
o in un modo più pulito:
Esiste una soluzione corretta dal punto di vista della programmazione, basta aggiungere il parametro "stepsPerNotch" al costruttore dell'oggetto di una classe "ClickEncoder".
Ad esempio, se nel codice viene creato l'oggetto in questo modo:
- Codice: Seleziona tutto
...
encoder = new ClickEncoder(A1, A0, A2);
...
basta aggiungere il parametro da modificare (4) rispetto al valore di default (1):
- Codice: Seleziona tutto
...
encoder = new ClickEncoder(A1, A0, A2, 4);
...
o in un modo più pulito:
- Codice: Seleziona tutto
...
#define SPN 4
...
...
encoder = new ClickEncoder(A1, A0, A2, SPN);
...
46 messaggi
• Pagina 4 di 5 • 1, 2, 3, 4, 5
Chi c’è in linea
Visitano il forum: Nessuno e 3 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




