µPhone, min mobiltelefon
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µPhone, min mobiltelefon
Så, nu kan jag spara bilder (rgb565) från datorn via usb kontakten på sdkortet och visa bilderna på skärmen.
Har inte fotat ännu då jag inte orkar gå ur sängen.(Laptops FTW!)
Det är inte så snabbt, det tar ca 0.3sekunder att öppna en bild som täcker hela skärmen.
Har inte fotat ännu då jag inte orkar gå ur sängen.(Laptops FTW!)
Det är inte så snabbt, det tar ca 0.3sekunder att öppna en bild som täcker hela skärmen.
Re: µPhone, min mobiltelefon
Kul
0.3 sekunder är ganska snappt. Om jag fick upp menyn på min Android så snabbt skulle jag vara glad. Sen ska vi inte prata om tiden det tar att öppna galleriet, nästan 10 sek!
Fast när man väl har kommit så långt går det faktiskt fort att visa bilden.

0.3 sekunder är ganska snappt. Om jag fick upp menyn på min Android så snabbt skulle jag vara glad. Sen ska vi inte prata om tiden det tar att öppna galleriet, nästan 10 sek!
Fast när man väl har kommit så långt går det faktiskt fort att visa bilden.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µPhone, min mobiltelefon
Jag kan nog få ner tiden en hel del men jag måste av någon anledning vänta ca 8µs mellan varje data byte till oled-skärmen. Sedan kan jag öka en buffer och få ner antalet läsningar från kortet.
Men härnäst ska jag nog försöka lista ut varför jag behöver vänta så "lång" tid mellan byten.
Om jag inte väntar eller väntar för kort tid så tar den inte emot alla pixlar.
Om någon vill hjälpa mig så kommer oled koden nedan:
Men härnäst ska jag nog försöka lista ut varför jag behöver vänta så "lång" tid mellan byten.
Om jag inte väntar eller väntar för kort tid så tar den inte emot alla pixlar.
Om någon vill hjälpa mig så kommer oled koden nedan:
Kod: Markera allt
#include "global_phone.h"
#include "oled.h"
#include "spi.h"
#include "font.h"
#include <math.h>
unsigned char oledOn=0;
unsigned char oledTermBuffer[128],oledTermX=0,oledTermY=0;
unsigned short oledTermColors[128];
void initOled()
{
unsigned char i;
OLED_CE=1;
OLED_SCK=1;
OLED_RESET=1;
__delay_ms(10);
OLED_RESET=0;
__delay_ms(100);
OLED_RESET=1;
oledCommand(0xAE);
OLED_12V_EN=1;
__delay_ms(100);
oledCommand(0xA0);
oledCommand(0x72);
oledCommand(0xA1);
oledCommand(0x00);
oledCommand(0xA2);
oledCommand(0x00);
oledCommand(0xA4);
oledCommand(0xA8);
oledCommand(0x3F);
oledCommand(0xAD);
oledCommand(0x8E);
oledCommand(0xB0);
oledCommand(0x0B);
oledCommand(0xB1);
oledCommand(0x31);
oledCommand(0xB3);
oledCommand(0xF0);
oledCommand(0x8A);
oledCommand(0x64);
oledCommand(0x8B);
oledCommand(0x78);
oledCommand(0x8C);
oledCommand(0x64);
oledCommand(0xBB);
oledCommand(0x3A);
oledCommand(0xBE);
oledCommand(0x3E);
oledCommand(0x87);
oledCommand(0x04);
oledCommand(0x81);
oledCommand(0x91);
oledCommand(0x82);
oledCommand(0x50);
oledCommand(0x83);
oledCommand(0x7D);
oledCommand(0xAF);
oledCommand(0x15);
oledCommand(0);
oledCommand(95);
oledCommand(0x75);
oledCommand(0);
oledCommand(63);
oledRectFill(0,0,95,63,0,0);
for(i=0;i<128;i++)
oledTermBuffer[i]=' ';
__delay_ms(1);
//oledOn=1;
}
void exitOled()
{
oledCommand(0xAE);
__delay_ms(200);
OLED_12V_EN=0;
__delay_ms(100);
}
void oledCommand(unsigned char cmd)
{
OLED_DC=0;
OLED_CE=0;
WriteSPI2(cmd);
while(SPI2_Tx_Buf_Full);
__delay_us(10);
OLED_CE=1;
}
void oledData(unsigned short cmd)
{
OLED_DC=1;
OLED_CE=0;
WriteSPI2((cmd&0xFF00)>>8);
while(SPI2_Tx_Buf_Full);
__delay_us(8);
OLED_CE=1;
OLED_CE=0;
WriteSPI2(cmd&0x00FF);
while(SPI2_Tx_Buf_Full);
__delay_us(8);
OLED_CE=1;
}
void oledRectFill(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned short colorLine, unsigned short colorFill)
{
oledCommand(0x26);
oledCommand(0x01);
oledCommand(0x22);
oledCommand(x1);
oledCommand(y1);
oledCommand(x2);
oledCommand(y2);
oledCommand((colorLine&0xF800)>>10);
oledCommand((colorLine&0x001F)<<1);
oledCommand((colorLine&0x07E0)>>5);
oledCommand((colorFill&0xF800)>>10);
oledCommand((colorFill&0x001F)<<1);
oledCommand((colorFill&0x07E0)>>5);
}
void oledRect(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned short colorLine)
{
oledCommand(0x26);
oledCommand(0x00);
oledCommand(0x22);
oledCommand(x1);
oledCommand(y1);
oledCommand(x2);
oledCommand(y2);
oledCommand((colorLine&0xF800)>>10);
oledCommand((colorLine&0x001F)<<1);
oledCommand((colorLine&0x07E0)>>5);
oledCommand(0);
oledCommand(0);
oledCommand(0);
}
void oledLine(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned short colorLine)
{
oledCommand(0x21);
oledCommand(x1);
oledCommand(y1);
oledCommand(x2);
oledCommand(y2);
oledCommand((colorLine&0xF800)>>10);
oledCommand((colorLine&0x001F)<<1);
oledCommand((colorLine&0x07E0)>>5);
}
void oledBatt(unsigned char level)
{
unsigned char boxes=ceil(level/20.0),i;
oledRect(73,5,74,9,0xFFFF);
oledRect(75,2,94,12,0xFFFF);
oledRectFill(76,3,93,11,0xFFFF,0);
if(level==200)
{
oledLine(86,5,88,5,0xFFFF);
oledLine(85,6,90,6,0xFFFF);
oledLine(79,7,88,7,0xFFFF);
oledLine(85,8,90,8,0xFFFF);
oledLine(86,9,88,9,0xFFFF);
}
else
{
for(i=0;i<5;i++)
{
if(boxes)
{
boxes--;
oledRect(90-(i*3),5,91-(i*3),9,0xFFFF);
}
else
oledRect(90-(i*3),5,91-(i*3),9,color(12,23,12));
}
}
}
void oledCSQ(unsigned char level)
{
unsigned char boxes=ceil(level/6.0),i;
for(i=0;i<5;i++)
{
if(boxes)
{
boxes--;
oledRect(2+(i*3),10-(i*2),3+(i*3),12,0xFFFF);
}
else
oledRect(2+(i*3),10-(i*2),3+(i*3),12,color(12,23,12));
}
}
void oledPutChar(unsigned char x, unsigned char y, unsigned char chr, unsigned short color)
{
unsigned char i,byte,j;
oledCommand(0xA0);
oledCommand(0x73);
oledCommand(0x15);
oledCommand(x*6);
oledCommand(x*6+4);
oledCommand(0x75);
oledCommand(y*8);
oledCommand(y*8+7);
for(i=0;i<5;i++)
{
byte=font[(chr-' ')*5+i];
for(j=0;j<8;j++)
{
if((byte<<j)&0x80)
oledData(color);
else
oledData(0);
}
}
}
void oledPutStr(unsigned char x, unsigned char y, char *str, unsigned short color)
{
while(*str)
oledPutChar(x++,y,*str++,color);
}
void oledPushStr(char *str, unsigned short color)
{
unsigned char i,j;
while(*str)
{
switch(*str)
{
case '\n':
oledTermX=0;
/*for(i=oledTermX;i<16;i++)
{
oledTermBuffer[oledTermX+oledTermY*16]=' ';
oledPutChar(oledTermX+i,oledTermY,' ',0);
}*/
oledTermY++;
*str++;
break;
default:
oledTermBuffer[oledTermX+oledTermY*16]=*str;
oledTermColors[oledTermX+oledTermY*16]=color;
oledPutChar(oledTermX++,oledTermY,*str++,color);
break;
}
if(oledTermX>15)
{
oledTermX=0;
oledTermY++;
}
if(oledTermY>7)
{
oledTermY=7;
for(j=0;j<7;j++)
{
for(i=0;i<16;i++)
{
oledTermBuffer[i+j*16]=oledTermBuffer[i+j*16+16];
oledTermColors[i+j*16]=oledTermColors[i+j*16+16];
oledPutChar(i,j,oledTermBuffer[i+j*16],oledTermColors[i+j*16]);
}
}
for(i=0;i<16;i++)
oledPutChar(i,7,' ',0);
}
}
}
Re: µPhone, min mobiltelefon
Ericsson R310 använde(r) Gore-Tex.zekkexavior skrev:
Antar att du skulle kunna lösa högtalardelen med nåt slags envägsmembran? Annars kanske du kan föra över ljudet med hjälp av resonans, vem vet?
Den klarar att vara under vatten i flera veckor.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µPhone, min mobiltelefon
Riktigt nice! Jag kanske missat det tidigare i tråden och ber då om ursäkt, men hur ska du kunna knappa in nummer osv på den?
Re: µPhone, min mobiltelefon
Blir det någon form av app-miljö som inte drar ur batterierna på mindre än två dygn?
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µPhone, min mobiltelefon
Jag kommer inte ha onödigt bös som tex appar.
Jag hatar det ordet med hela mitt hjärta.
Nej, nu ska jag nog programmera meny system.
Jag hatar det ordet med hela mitt hjärta.
Nej, nu ska jag nog programmera meny system.
- Anahka1975
- Inlägg: 1295
- Blev medlem: 30 augusti 2006, 21:49:46
- Ort: Säffle
Re: µPhone, min mobiltelefon
app suger nog. Fast man kanske något sätt så att man enkelt kan programmera in funktioner man vill ha.
C-interpreterad Java på en processor som drivs med batteri kan kosta på en del batteritid..
C-interpreterad Java på en processor som drivs med batteri kan kosta på en del batteritid..
Re: µPhone, min mobiltelefon
Det bör nog avgränsas med något API.
Blir lätt rörigt annars om man byter CPU, kringkretsar osv..
Blir lätt rörigt annars om man byter CPU, kringkretsar osv..
Re: µPhone, min mobiltelefon
Synd att skalet blir så ofantligt stort i förhållande till telefonen.
Vi har en Thing-O-Matic (http://www.makerbot.com/) på jobbet, om jag säger att jag ska skriva ut ett skal till en telefon är det nog ok att låna den för sådant här.
Så om du har en CAD-ritning på ett skal Victor, så kan jag nog skriva ut en prototyp.
Det blir ju inte en helt slät yta, men med lite slipning och sprutspackel kan man nog få en bra finish på den.
/M
Vi har en Thing-O-Matic (http://www.makerbot.com/) på jobbet, om jag säger att jag ska skriva ut ett skal till en telefon är det nog ok att låna den för sådant här.
Så om du har en CAD-ritning på ett skal Victor, så kan jag nog skriva ut en prototyp.
Det blir ju inte en helt slät yta, men med lite slipning och sprutspackel kan man nog få en bra finish på den.
/M
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µPhone, min mobiltelefon
Hmm, låter mycket intressant!
Är det ABS-plast vi talar om?
Vad är minsta tjocklek på väggar? funkar ca 1mm?
Blir biten någorlunda stabil? Blir det som en solid bit ABS?
Är det ABS-plast vi talar om?
Vad är minsta tjocklek på väggar? funkar ca 1mm?
Blir biten någorlunda stabil? Blir det som en solid bit ABS?