Boa tarde à todos.

Estou tentando funcionar um display com funções através de um encoder, informo que já peguei o código fonte de terceiro e estou analisando para certificar-me que atende as necessidades do projeto, trata-se de um simulador de ECUs para linha diesel, ao tentar compilar na ide do arduino, ocorreram erros nas seguintes declarações:  

//U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* Enable=*/35, /* RW=*/32, /* RS=*/33, /* reset=*/ 34);
U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* Enable=*/25, /* RW=*/32, /* RS=*/33, /* reset=*/ 34);

Erros apontados:

Arduino: 1.8.9 (Windows 10), Placa:"ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

SimuladorEcuDiesel:17:33: error: redefinition of 'U8G2_ST7920_128X64_1_SW_SPI u8g2'

U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* Enable=*/25, /* RW=*/32, /* RS=*/33, /* reset=*/ 34);

^

C:\Users\ednilzodeSouza\Desktop\Oficina\RepairECU\EletrAutos\Projects\ProjetoSimulador\SimuladorCaseiro\SimuladorEcuDiesel.ino\SimuladorEcuDiesel\SimuladorEcuDiesel.ino:16:29: note: 'U8G2_ST7920_128X64_1_SW_SPI u8g2' previously declared here

U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, /* Enable=*/35, /* RW=*/32, /* RS=*/33, /* reset=*/ 34);

^

exit status 1
redefinition of 'U8G2_ST7920_128X64_1_SW_SPI u8g2'

Este relatório teria mais informações com
"Mostrar a saida detalhada durante a compilação"
opção pode ser ativada em "Arquivo -> Preferências"

Se eu deixar uma das linhas com comentários, roda normalmente. A duvida é que não sei se funcionará sem uma das linhas declaradas.

Segundo erro: Aponta para esta linha do código,  Serial.println(encoder.getCount());

Se eu deixar como comentários, roda normalmente, não sei qual a finalidade de imprimir este resultado, segue o terecho desse código e os erros apresentados.

void TelaMenuECU(){ //
u8g2.firstPage();

_idMenuECU = map(encoder.getCount(),0,25,0,5);

if(encoder.getCount() >25) encoder.setCount(25);
if(encoder.getCount() <0) encoder.setCount(0);

Serial.println(encoder.getCount());

int item = 0;
if(_idMenuECU>3){
item = _idMenuECU-3;
}
do {
int x = 0, y = 0;
u8g2.setFont(u8g_font_helvB08);
u8g2.drawStr(30, 0, "Modelo da Central");
u8g2.drawLine(x,y+=12,128,y);
u8g2.setFont(u8g2_font_6x10_mf);
u8g2.setDrawColor(1);
y-=9;
for (int i=0; i < 4; i++) {
if (i+item == _idMenuECU) {
u8g2.setDrawColor(1);
u8g2.drawBox(x, y += 12, 125, 11);
u8g2.setDrawColor(0);
u8g2.setCursor(x, y);
u8g2.print(itensMenuECU[i+item]);
u8g2.setDrawColor(1);
//_idMenu=i+item;
} else {
u8g2.setCursor(x, y += 12);
u8g2.print(itensMenuECU[i+item]);
}
}
} while (u8g2.nextPage());
}

Erros apresentados:

Arduino: 1.8.9 (Windows 10), Placa:"ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

C:\Users\ednilzodeSouza\Desktop\Oficina\RepairECU\EletrAutos\Projects\ProjetoSimulador\SimuladorCaseiro\SimuladorEcuDiesel.ino\SimuladorEcuDiesel\SimuladorEcuDiesel.ino: In function 'void TelaMenuECU()':

SimuladorEcuDiesel:378:36: error: call of overloaded 'println(int64_t)' is ambiguous

Serial.println(encoder.getCount());

^

In file included from C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Stream.h:26:0,

from C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Arduino.h:153,

from sketch\SimuladorEcuDiesel.ino.cpp:1:

C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Print.h:91:12: note: candidate: size_t Print::println(char)

size_t println(char);

^

C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Print.h:92:12: note: candidate: size_t Print::println(unsigned char, int)

size_t println(unsigned char, int = DEC);

^

C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Print.h:93:12: note: candidate: size_t Print::println(int, int)

size_t println(int, int = DEC);

^

C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Print.h:94:12: note: candidate: size_t Print::println(unsigned int, int)

size_t println(unsigned int, int = DEC);

^

C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Print.h:95:12: note: candidate: size_t Print::println(long int, int)

size_t println(long, int = DEC);

^

C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Print.h:96:12: note: candidate: size_t Print::println(long unsigned int, int)

size_t println(unsigned long, int = DEC);

^

C:\Users\ednilzodeSouza\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32/Print.h:97:12: note: candidate: size_t Print::println(double, int)

size_t println(double, int = 2);

^

exit status 1
call of overloaded 'println(int64_t)' is ambiguous

Este relatório teria mais informações com
"Mostrar a saida detalhada durante a compilação"
opção pode ser ativada em "Arquivo -> Preferências"

Agradeço a todos que puderem colaborar.

Exibições: 426

As respostas para este tópico estão encerradas.

Respostas a este tópico

Qual display está usando? e qual o esquema de ligação? o primeiro erro se refere a isso, comente a linha que não corresponde a sua ligação com o display.

o segundo erro, é necessário printar isso na serial? se for, experimente printar transformando para String 

Serial.println(String(encoder.getCount(),0));

Boa noite caro professor SaidPef.

O display utilizado, será o da descrição do tópico, display gráfico 128X64, vou determinar as gpios selecionando uma destas linhas e eliminar a outra, quanto ao segundo erro, analisarei com mais atenção para verificar a necessidade do print. 

Conforme o avanço e as dificuldades apresentadas, postarei neste espaço, até a conclusão do projeto, não esquecendo de dar crédito aos  nobres colaboradores.

Grato pela contribuição de informações, uma excelente noite, saúde e paz.

Este não é o modelo, estas são as características, mas acredito que seja um display ST7920, número referente a controladora do display, e qual é o esquema de ligação usado?

Bom dia caro SayidPef.

Confirmo que o display é o ST7920, conforme declarado no código e confirmado pelo fornecedor. Em relação o esquema de ligação, estou repassando todas gpios, para verificar se não haverá conflito entre os componentes que fazem parte do projeto. 

Informo que já determinei a segunda linha para as ligações do display e deixei as demais linhas que apresentavam erros como comentários, feito isso a compilação foi concluída com êxito.

Grato por suas considerações.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço