4. Internet Tablets
O que são?
Dispositivos móveis capazes de conectar-se a internet através
de redes wireless ou bluetooth (agora também com 3g!)
5. Internet Tablets
O que são?
Dispositivos móveis capazes de conectar-se a internet através
de redes wireless ou bluetooth.
Hardware
Tela resolução de 800x480
Processador ARM-Based (330mhz ~ 600mhz)
1GB~128MB Memória RAM
WLAN (bg) e Bluetooth
Telas Sensíveis ao toque
Teclado QWERTY embutido (em alguns)
9. Quem usa?
Ångström
Distribuição mais “madura” do OE
Dispositivos que aceitam essa distro:
Nokia 770 Internet Tablet
HTC Universal / iMate JasJar
Motorola A780
Psion| Teklogix NetBook Pro
Gumstix and Kouchuk-Bars
Beagle Board
Pandora
10. Quem usa?
BeagleBoard
● HW baseado em OMAP3
● Baixo custo
– $ 149
● Baixo consumo de energia
– Máximo 2W
● http://beagleboard.org
– Esquema de HW aberto o/
15. Internet Tablets
Projetos e Softwares
Mozilla Fennec (Firefox pra Mobile)
Brisa UPnP
Canola
CarMan
Tapioca Framework
Maemo Community (No Google Summer of Code)
18. ● O que é?
É um projeto de Hardware e
Software Livre voltado para
artistas, designers, hobbystas ou
qualquer um interessado em criar
objetos e ambientes interativos.
Arduino
19. ● O que é?
Arduino Programming Language (Baseada em Wiring)
Arduino Development Environment (IDE baseada em Processing)
Pode ser feito a mão (Paperduino, Severino, Toscoduino, etc)
Múltiplas derivações
Comunicação fácil
Ciclo de desenvolvimento rápido
Barato!
Arduino
20. ● Hardware
Microcontrolador Atmega168
RISC (131 instruções)
24 Mhz
NVM de 16KBytes (2k usados no bootloader)
1KByte de SRAM
Portas AD
UART
6v – 20v (Recomendado 7v a 12v)
Arduino
29. PyGame
A Classe bouncer
class Bouncer(pygame.sprite.Sprite):
def __init__(self, startpos):
pygame.sprite.Sprite.__init__(self)
#direcao: 1=direita, -1=esquerda
self.direction = 1
#carrega a imagem e a posiciona na tela
self.image, self.rect = load_image('bouncer.gif')
self.rect.centerx = startpos[0]
self.rect.centery = startpos[1]
def update(self):
#multiplicamos x por 3 pro bouncer mover-seum pouco mais rápido!
self.rect.move_ip((self.direction*3,0))
#se o bouncer atingir os limites da tela, invertemos a sua direcao
if self.rect.left < 0:
self.direction = 1
elif self.rect.right > width:
self.direction = -1
30. PyGame
A Classe ball
class Ball(pygame.sprite.Sprite):
"""classe para a bola"""
def __init__(self, startpos):
pygame.sprite.Sprite.__init__(self)
self.speed = [2,2]
#carrega a imagem e a posiciona na tela
self.image, self.rect = load_image('ball.gif')
self.rect.centerx = startpos[0]
self.rect.centery = startpos[1]
#salva a posicao inicial para ser reutilizada
#quando a bola sair da tela pelo fundo
self.init_pos = startpos
def update(self):
self.rect.move_ip(self.speed)
#se a bola atingir os lados da tela, inverte a
#direcao horizontal (x)
if self.rect.left < 0 or self.rect.right > width:
self.speed[0] = -self.speed[0]
#se a bola atingir o topo da tela, inverte a
#posicao vertical (y)
if self.rect.top < 0:
self.speed[1] = -self.speed[1]
#se a bola atingir o fundo da tela, reseta
#a sua posicao
if self.rect.bottom > height:
self.rect.centerx = self.init_pos[0]
self.rect.centery = self.init_pos[1]
31. PyGame
Checando eventos (já no mainloop!)
#checa eventos de teclado
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
bouncer.direction = -1
if event.key == pygame.K_RIGHT:
bouncer.direction = 1
32. PyGame
Reagindo a colisões
if bouncer.rect.colliderect(ball.rect):
if ball.speed[1] > 0:
ball.speed[1] = -ball.speed[1]
33. PyGame
Atualizando a tela e redesenhando
#atualiza os objetos
ball.update()
bouncer.update()
#redesenha a tela
screen.fill(black)
screen.blit(ball.image, ball.rect)
screen.blit(bouncer.image, bouncer.rect)
pygame.display.flip()