gerar um grafico no display 128x64

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

gerar um grafico no display 128x64

Mensagempor cristian » 27 Set 2010 13:32

estou me batendo pra gerar um grafico com retas no display 128x64

como é feita a entrada de dados nele , ou seja , pixel a pixel ou grupos de 8bytes ...

eu pensei em mapear os pixell , mas nao faço ideia

o grafico seria tipo esse com pontos contendo o valor e uma linha traçando estes pontos
[url]
http://www.google.com.br/imgres?imgurl= ... 62&bih=583
[/url]
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor Francys Reymer » 27 Set 2010 14:41

cristian seja mais específico em sua dúvida, tipo vc já sabe mexer com este display (digo o controlador)?

prq kra é isso mesmo mapeie os pixels e atribui uma faixa d valores pra cada um, acho q sua dúvida deve ser depois q vc escreveu os pontos (ex.:1600,2000,2535,etc.) como traçar a reta entre eles, seria isso? prq ai acho q vc teria q trabalhar com a equação da reta para traçar uma reta sempre a cada dois pontos:

y = ax + b;

de uma olhada aqui:
http://www.infoescola.com/geometria-ana ... s-da-reta/
Avatar do usuário
Francys Reymer
Byte
 
Mensagens: 102
Registrado em: 10 Dez 2009 15:21

Mensagempor cristian » 27 Set 2010 15:03

trabalhei muito com o display grafico do nokia 3310 , com este é a primeira vez e ainda estou esperando chegar


e sim seira isso de traçar uma reta entre os valores , entao se o valor cair a reta vai junto
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor barboza » 27 Set 2010 15:09

Essa função ai traça uma linha entre os dois pontos passados.

Usei para plotar gráficos conforme você disse.

Código: Selecionar todos
/************************************************************************
   FUNCAO:      GLCD_line
   PARAMETROS: x1, y1, x2, y2, toggle
   RETORNO:   NENHUM
   DESCRICAO:   IMPRIME UMA LINHA NO DISPLAY NOS INTERVALOS PASSADOS
            SE toggle = 1, APAGA O PIXEL SE JÁ SETADO
*************************************************************************/
void   GLCD_line   (uint32_t x1, uint32_t y1, uint32_t x2, uint32_t y2, uint32_t toggle)
{
int32_t   dy ;
int32_t dx ;
int32_t stepx, stepy, fraction;

   dy = y2 - y1;
   dx = x2 - x1;

   if (dy < 0)
   {
      dy = -dy;
      stepy = -1;
   }
   else
   {
      stepy = 1;
   }

   if (dx < 0)
   {
      dx = -dx;
      stepx = -1;
   }
   else
   {
      stepx = 1;
   }

   dy <<= 1;
   dx <<= 1;
   SED1335_pixel_on (x1, y1, toggle);

   if (dx > dy)
   {
      fraction = dy - (dx >> 1);
      while (x1 != x2)
      {
         if (fraction >= 0)
         {
            y1 += stepy;
            fraction -= dx;
         }
         SED1335_pixel_on (x1, y1, toggle);
         x1 += stepx;
         fraction += dy; 
      }
   }
   else
   {
      fraction = dx - (dy >> 1);
      while (y1 != y2)
      {
         if (fraction >= 0)
         {
            x1 += stepx;
            fraction -= dy;
         }
         SED1335_pixel_on (x1, y1, toggle);
         y1 += stepy;
         fraction += dx;
      }
   }
}
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor barboza » 27 Set 2010 15:10

Essa função ai traça uma linha entre os dois pontos passados.

Usei para plotar gráficos conforme você disse.

Código: Selecionar todos
/************************************************************************
   FUNCAO:      GLCD_line
   PARAMETROS: x1, y1, x2, y2, toggle
   RETORNO:   NENHUM
   DESCRICAO:   IMPRIME UMA LINHA NO DISPLAY NOS INTERVALOS PASSADOS
            SE toggle = 1, APAGA O PIXEL SE JÁ SETADO
*************************************************************************/
void   GLCD_line   (uint32_t x1, uint32_t y1, uint32_t x2, uint32_t y2, uint32_t toggle)
{
int32_t   dy ;
int32_t dx ;
int32_t stepx, stepy, fraction;

   dy = y2 - y1;
   dx = x2 - x1;

   if (dy < 0)
   {
      dy = -dy;
      stepy = -1;
   }
   else
   {
      stepy = 1;
   }

   if (dx < 0)
   {
      dx = -dx;
      stepx = -1;
   }
   else
   {
      stepx = 1;
   }

   dy <<= 1;
   dx <<= 1;
   SED1335_pixel_on (x1, y1, toggle);

   if (dx > dy)
   {
      fraction = dy - (dx >> 1);
      while (x1 != x2)
      {
         if (fraction >= 0)
         {
            y1 += stepy;
            fraction -= dx;
         }
         SED1335_pixel_on (x1, y1, toggle);
         x1 += stepx;
         fraction += dy; 
      }
   }
   else
   {
      fraction = dx - (dy >> 1);
      while (y1 != y2)
      {
         if (fraction >= 0)
         {
            x1 += stepx;
            fraction -= dy;
         }
         SED1335_pixel_on (x1, y1, toggle);
         y1 += stepy;
         fraction += dx;
      }
   }
}
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor cristian » 27 Set 2010 15:16

valeu barboza pelo codigo , agora vou estudar pra entender como e pq , funciona ....
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x