Ben arrivato! Fate login o registratevi per fruire di tutte le funzionalità del forum e del sito.
Se eri già registrato e non ti ricordi la password usa questo link per recuperare l'accesso
Sito e forum dedicati al fermodellismo, il nostro hobby viene praticato in molte maniere diverse, tutte ugualmente valide: hai un plastico? oppure sei un collezionista? oppure un semplice appassionato? Non esitare a scrivere nel forum, tutti gli interventi sono benvenuti ... Postate foto e video del vostro plastico e chiedete aiuto per ogni problema o curiosità inerente al nostro hobby.

display 12864ZW-10

Area di lavoro per portare all'attenzione degli appassionati, soluzioni pratiche che fanno uso della piattaforma Arduino e Processing.

Moderatore: liftman

Messaggio
Autore
Avatar utente
elav_vale
Messaggi: 4
Iscritto il: domenica 14 marzo 2021, 0:09
Nome: Rinaldo
Regione: Bergamo
Città: alzano
Stato: Non connesso

display 12864ZW-10

#1 Messaggio da elav_vale »

Ciao a tutti ho un aiuto da chiedere
ho un display 12864zw-10 con encoder(tolto da una ender3)
il display ho capito come programmarlo con Spi e ho trovato i pin per collegarlo al mio arduino nano fin qui tutto ok
ho tovato i pin ENC_A ENC_B e il tasto ENC_SW
ma non trovo un tutorial che mi spieghi come fare per gestire l'encoder in modo che io possa muovermi su e giu nel display

potete aiutarmi
grazie


Rinaldo

Avatar utente
Andrea
Socio GAS TT
Messaggi: 22741
Iscritto il: mercoledì 26 ottobre 2011, 19:42
Nome: Andrea
Regione: Lombardia
Città: Segrate
Ruolo: Amministratore
Stato: Non connesso

Re: display 12864ZW-10

#2 Messaggio da Andrea »

Ciao Rinaldo, lo Staff del forum ti invita a presentarti nell'apposita sezione, serve per darti il benvenuto e per conoscersi meglio.
Grazie.
Andrea - “I fermodellisti sono tanti e legati da un'amicizia sincera, che esplode in una cordialità ormai rara nel mondo rumoroso ed incerto di oggi”. La valle incantata

Avatar utente
elav_vale
Messaggi: 4
Iscritto il: domenica 14 marzo 2021, 0:09
Nome: Rinaldo
Regione: Bergamo
Città: alzano
Stato: Non connesso

Re: display 12864ZW-10

#3 Messaggio da elav_vale »

un aiutinooo
Rinaldo

Avatar utente
MrPatato76
Socio GAS TT
Messaggi: 4996
Iscritto il: lunedì 27 agosto 2012, 11:14
Nome: Roberto
Regione: Lombardia
Città: Nova Milanese
Stato: Non connesso

Re: display 12864ZW-10

#4 Messaggio da MrPatato76 »

Roberto - Socio GasTT - Socio CMP

Avatar utente
elav_vale
Messaggi: 4
Iscritto il: domenica 14 marzo 2021, 0:09
Nome: Rinaldo
Regione: Bergamo
Città: alzano
Stato: Non connesso

Re: display 12864ZW-10

#5 Messaggio da elav_vale »

grazie della risposta
ti allego il codice che non mi funziona perche quando ruito l'encoder non mi cambia il valore mentre il tasto se lo premo va bene

#include "U8glib.h"

#define encoderPin1 2 //ENC_A
#define encoderPin2 3 //ENC_B
#define pinEncButt 4 //ENC_SW

volatile int lastEncoded = 0;
volatile long encoderValue = 10;

long lastencoderValue = 0;

int lastMSB = 0;
int lastLSB = 0;

float rad2grad=57.295779513;

U8GLIB_ST7920_128X64 u8g(13, 11, 10); //spi com visualizza lo schermo

void draw(void) {
u8g.setFont(u8g_font_fub11);
u8g.drawStr( 0, 12, "Test Encoder");

u8g.setFont(u8g_font_fub11);

char buf[8];
sprintf(buf, "%d<>%d",digitalRead(pinEncButt),(encoderValue/4)); //pinEncButt tasto encoderValue rotazione trimmer
u8g.drawStr( 10, 40, buf);

u8g.drawCircle(96, 34, 19);//disegna trimmer
u8g.drawCircle(96, 34, 20);

// genera la Linea
// enc 20 step = 360/20 = 18°
float ang = (((encoderValue/4)*18)/rad2grad);
byte x = (96+(sin(ang)*19));
byte y = (34-(cos(ang)*19));
u8g.drawLine(96, 34, x, y);

// firma
u8g.setFont(u8g_font_6x12);
u8g.drawStr( 0, 63, "www.mauroalfieri.it");
}

void updateEncoder(){
int MSB = digitalRead(encoderPin1);
int LSB = digitalRead(encoderPin2);

int encoded = (MSB << 1) |LSB;
int sum = (lastEncoded << 2) | encoded;

if(sum==0b1101||sum==0b0100||sum==0b0010||sum==0b1011) encoderValue++;
if(sum==0b1110||sum==0b0111||sum==0b0001||sum==0b1000) encoderValue--;

lastEncoded = encoded; //store this value for next time
}

void setup(void) {
Serial.begin(9600);


pinMode(encoderPin1, INPUT);//legge can A
pinMode(encoderPin2, INPUT);//legge can_B
pinMode(pinEncButt, INPUT);//legge tasto

digitalWrite(encoderPin1, HIGH);
digitalWrite(encoderPin2, HIGH);
digitalWrite(pinEncButt, HIGH);

attachInterrupt(0, updateEncoder, CHANGE);
attachInterrupt(1, updateEncoder, CHANGE);
}


void loop(void) {
// Serial.println( digitalRead(pinEncButt) ), ( digitalRead(encoderValue) );
Serial.println ( digitalRead(encoderPin1)),( digitalRead(encoderPin2));

u8g.firstPage();
do { draw(); } while( u8g.nextPage() );

delay(500);
}
Rinaldo

Torna a “GAS TT LAB”