collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: PAP - SONDA MOVEL - explorUino [CONCLUÍDO]  (Lida 57266 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: PAP - SONDA MOVEL - explorUino
« Responder #105 em: 11 de Junho de 2010, 14:36 »
Eu não tenho a certeza se a função font.render() aceita no primeiro argumento um byte.

Sabes que a funçao Read da bilbioteca serial te retorna um byte. Agora tens de construir uma String para passar como argumento à função render().

penso que basta fazeres:
text = font.render(""+temp, True, (255,255, 255), (159, 182, 205))

O Python vai concatenar um byte a uma String nula e o resultado é uma string.

Não sei se será disto, mas pelo menos despistamos já esta hipótese.

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #106 em: 11 de Junho de 2010, 14:44 »
é so substituir isso ?? ou tenho de fazer mals alguma coisa?

è que ja substitui e da a mesma cena :(

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: PAP - SONDA MOVEL - explorUino
« Responder #107 em: 11 de Junho de 2010, 14:57 »
Então vamos lá ver outra coisa...
Qual é o número da tua porta COM?

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #108 em: 11 de Junho de 2010, 14:59 »
é a porta 3

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: PAP - SONDA MOVEL - explorUino
« Responder #109 em: 11 de Junho de 2010, 15:11 »
é a porta 3
Eu não tenho a certeza, mas como tens no código estás a usar a 2...
Esquece... Estás a usar a 3.

Código: [Seleccione]
import serial
ser = serial.Serial(2)  # abrir a porta 3
print ser.portstr       # check which port was really used

temp = 0

while true:
  if(ser.inWaiting() > 0):
    temp = int(ser.read(1))
    print ""+temp

ser.close()             # close port

Experimenta este código... Na consola.
« Última modificação: 11 de Junho de 2010, 15:18 por microbyte »

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #110 em: 11 de Junho de 2010, 15:40 »
Citar
Traceback (most recent call last):
  File "C:/Documents and Settings/Zé Pedro/Desktop/test.py", line 10, in <module>
    while true:
NameError: name 'true' is not defined

nao da :(

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #111 em: 11 de Junho de 2010, 15:44 »
Citar
import serial


ser = serial.Serial(2)  # abrir a porta 3
print ser.portstr       # check which port was really used
#ser.baudrate (9600)
temp = 0

while 1:# true:
  if(ser.inWaiting() >0):
    temp = int(ser.read(1))
    print ""+temp

ser.close()             # close port

pus assim

agora da.me este erro:

Citar
COM3

Traceback (most recent call last):
  File "C:/Documents and Settings/Zé Pedro/Desktop/test.py", line 11, in <module>
    temp = int(ser.read(1))
ValueError: invalid literal for int() with base 10: '\x18'
>>>

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: PAP - SONDA MOVEL - explorUino
« Responder #112 em: 11 de Junho de 2010, 19:27 »
Citar
import serial


ser = serial.Serial(2)  # abrir a porta 3
print ser.portstr       # check which port was really used
#ser.baudrate (9600)
temp = 0

while 1:# true:
  if(ser.inWaiting() >0):
    temp = int(ser.read(1))
    print ""+temp

ser.close()             # close port

pus assim

agora da.me este erro:

Citar
COM3

Traceback (most recent call last):
  File "C:/Documents and Settings/Zé Pedro/Desktop/test.py", line 11, in <module>
    temp = int(ser.read(1))
ValueError: invalid literal for int() with base 10: '\x18'
>>>

Muda para:
Citar
import serial


ser = serial.Serial(2)  # abrir a porta 3
print ser.portstr       # check which port was really used
#ser.baudrate (9600)
temp = 0

while 1:# true:
  if(ser.inWaiting() >0):
    temp = ord(ser.read(1))
    print ""+temp

ser.close()             # close port

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #113 em: 11 de Junho de 2010, 21:33 »
ja da!! mas tive que mudar o print""+temp para print temp

ahahah :D aleluia :D

Citar
import serial


ser = serial.Serial(2)  # abrir a porta 3
print ser.portstr       # check which port was really used
#ser.baudrate (9600)
temp = 0

while 1:# true:
  if(ser.inWaiting() >0):
    temp = ord(ser.read(1))
    print temp

ser.close()         

obrigado micro!! ;)




Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: PAP - SONDA MOVEL - explorUino
« Responder #114 em: 11 de Junho de 2010, 22:03 »
Ainda bem!  ;D

Siga a marinha!  :P

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #115 em: 12 de Junho de 2010, 13:14 »
bem ja esta tudo a funcionar a 100% :D em termos de temperatura claro lool o controle do carro começo a fazer teste para a proxima semana è quando chega  o resto do material!

python :

Citar
# -*- coding: iso-8859-15 -*-

import serial # biblioteca pyserial
import time # biblioteca do tempo para o relogio
import pygame # biblioteca pygame
import os
import sys
from pygame.locals import *
from pygame import joystick, event

i = 0 # variavel inicial do botao btn_2 (luz on)
a = 0 # variavel inicial da botao btn_1 (luz off)

b = 1 # tentativas esgotadas
c = 3 # numero de tentativas

s = 1 # variavel do while para a porta serie
p = 0 # variavel do while da porta serie

temp = 0
#--------------------------------------------------------------------------------------------------------------------------------

 ##########
#-PASSWORD-#
 ##########

pw = 9999 # Password
print "AVISO\n\nTEM 3 TENTATIVAS" # imprime o numero de tentativas no inicio
password = raw_input ("\nInserir Password:")# valor inserido na password

   
while password != str(pw): # enquando a password nao foi correcta imprime "pass errada" e permite colocar outra vez nova password

    c = c - 1 # menos uma tentativa
    print ("\nPassword Errada\n___________________________________")

    if c == 1: #se o numero de tentativa for = 1
        print "\nAVISO\n\nTEM", c, "TENTATIVA" # imprime "tentativa"
    else:
        if c != 0: #se for diferente de 0
            print "\nAVISO\n\nTEM", c, "TENTATIVAS" #imprime "tentativas" 
   
    if (b == 3): #se o numero de tentativas utilizadas for = 3
       
        print ("\n\nNUMERO DE TENTATIVAS ESGOTADAS")
        time.sleep(2)
        os._exit(1) # para o python shell e nao avança mais

    else: # se nao
        b = b + 1 # incrementa 1
       
   
    password = raw_input ("\nInserir Password:") # inserir de novo a password
       
print "\n\nPASSWORD CORRECTA\n\n___________________________________"     
       

       
   
#---------------------------------------------------------------------------------------------------------------------------------

# normalizar os valores do joystick de -1 e 1 para 1 e 2

def normalizar(num):
    if num == -1:
        num = 1
    elif num == 1:
        num = 2
    return num



def load_image(name, colorkey=None):
    fullname = os.path.join('images', name)
    try:
        image = pygame.image.load(fullname)
    except pygame.error, message:
        print 'Cannot load image:', name
        raise SystemExit, message
    image = image.convert()
    if colorkey is not None:
        if colorkey is -1:
            colorkey = image.get_at((0,0))
        image.set_colorkey(colorkey, RLEACCEL)
    return image, image.get_rect()

#---------------------------------------------------------------------------------------------------------

#########################
""" Porta Série setup """
#########################

print ("\nPORTA SÉRIE")
#porta1 = raw_input("\nNumero da porta: ") # inserir o numero da porta
porta1 = 3
porta = int(porta1) - 1 # numero que inserido menos 1 para dar o numero verdadeiro da porta

try:
    ser = serial.Serial(porta)  # abre a porta usb
    print '\nA usar a porta',ser.portstr       # diz qual é a porta realmente usada
except:
    print '\nERRO: Porta nao encontrada ou em uso.'
   

ser.baudrate = 9600 # velocidade de transmissao 9600 bps



#-----------------------------------------------------------------------------------------------------------------

# ################# #
""" Setup Inicial """
# ################# #

pygame.init()

background = pygame.image.load(os.path.join('images', "bem_V.png")) # imagem de inicio "bem vido!"
backgroundRect = background.get_rect()
size = (width, height) = background.get_size() # Tira as dimensões da imagem de fundo
#size = (640, 480)
screen = pygame.display.set_mode(size) # Cria uma janela do tamanho da imagem de fundo
#screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
screen.blit(background, backgroundRect)

pygame.display.flip()
pygame.display.set_caption('ExplorUino - Painel de Controlo') # coloca o nome do projecto na barra do windows

#pygame.mouse.set_visible(1) # rato visivel

#OK = [pygame.JOYBUTTONDOWN, pygame.JOYHATMOTION, pygame.JOYAXISMOTION ]#pygame.KEYDOWN

clock = pygame.time.Clock()
screen.blit(background, (0, 0))
pygame.display.flip()

time.sleep(3)

# Fim do Setup

#------------------------------------------------------------------------------------------------------------------   

img_fundo = pygame.image.load(os.path.join('images', "fundo.png")) # coloca a imagem de fundo
background.blit(img_fundo, (0, 0))


# declara as variaveis do joystick (esquerda) para comandar o sentido e a direcçao do carro
eixox = 0
eixoy = 0

# declara as variaveis do joystick (direita) para comandar a direcçao da camara
rot1 = 0
rot2 = 0

# declara as variaveis dos botoes do comando
btn_1 = a # luz off
btn_2 = i # luz on
btn_3 = 0 # start


try:
   j = pygame.joystick.Joystick(0) # create a joystick instance
   j.init() # init instance
   print '\nEnabled joystick: ' + j.get_name()
except pygame.error:
   print '\nAVISO: Nao foi encontrado nenhum joystick.'

while 1:
    clock.tick(60)
    time.sleep(0.05)
    pygame.event.pump()
    for evento in pygame.event.get():
       
        if evento.type == pygame.JOYAXISMOTION: # se os joystick apresentarem um valor

            # faz uma aproximaçao de 0 casas decimais para evitar o ruido e o tremor dos joysticks
            eixox = round(j.get_axis(0), 0)
            eixoy = round(j.get_axis(1), 0)
            rot1 = round(j.get_axis(2), 0)
            rot2 = round(j.get_axis(3), 0)

            # vai "normalizar" os valores dos joysticks de -1 ou 1 para 1 ou 2
            eixox = normalizar(int(eixox))
            eixoy = normalizar(int(eixoy))
            rot1 = normalizar(int(rot1))
            rot2 = normalizar(int(rot2))

        elif evento.type == pygame.JOYBUTTONDOWN or evento.type == pygame.JOYBUTTONUP:# se os botoes do comando apresentarem algum valor

            #declara quais sao os botoes das variaveis
            btn_1 = j.get_button(3)
            btn_2 = j.get_button(2)
            btn_3 = j.get_button(9)
           
       

           
           
   
#------------------------------------------------
   
    ###############
    # Porta Série #
    ###############
   
    ser.write("*")         
    ser.write(str(eixoy))   #0
    ser.write(str(eixox))   #1
    ser.write(str(btn_1))   #2 b1
    ser.write(str(btn_2))   #3 b2
    ser.write(str(rot1))    #4
    ser.write(str(rot2))    #5   
   
   
   
#-------------------------------------------------------------------------------------------   

   
   
    print "\nX=", eixox, " Y=", eixoy, " B1=", btn_1, " B2=", btn_2, " B3=", btn_3, "rot1=", rot1, "rot2=", rot2,"T=", temp,  # valores das variaveis do comando
    pygame.draw.rect(background, (255, 255, 255), pygame.Rect(49, 90, 550, 350), 0)

   
#Parte da Direccao do Carro
   
    if eixox == 1:
        img_dir = pygame.image.load(os.path.join('images', "esq.png"))
    elif eixox == 2:
        img_dir = pygame.image.load(os.path.join('images', "dir.png"))
    else:
        img_dir = pygame.image.load(os.path.join('images', "0.png"))
    background.blit(img_dir, (50, 110))

#Motores
   
    if eixoy == 1:
        img_mot = pygame.image.load(os.path.join('images', "frent.png"))
    elif eixoy == 2:
        img_mot = pygame.image.load(os.path.join('images', "tras.png"))
    else:
        img_mot = pygame.image.load(os.path.join('images', "parado.png"))

    background.blit(img_mot, (25, 290))

#Luz

    if ((btn_2 == 1) or ((btn_1 == 0) and (i == 1) and (a == 1))):
        i = 1
        a = 1
        img_luz = pygame.image.load(os.path.join('images', "luz_on.png"))
        background.blit(img_luz, (350, 130))
       
    else:
        if ((btn_1 == 1) or ((btn_2 == 0) and (i == 0)and (a == 0))):
            i = 0
            a = 0
            img_luz = pygame.image.load(os.path.join('images', "luz_off.png"))
            background.blit(img_luz, (350, 130))

#Relógio
   
    font = pygame.font.Font(None, 16) # tipo de letra e tamanho
    curtime = time.strftime("%d %B %Y  %H:%M:%S") # como vai ser colocadas a hora e a data
    txt_time = font.render(curtime, 1, (255, 255, 255), (0,0,0))# cor da letra
    pygame.draw.rect(background, (0, 0, 0), pygame.Rect(500, 30, 150, 20), 0)
    background.blit(txt_time, (495, 459))#posiçao da hora e da data

   
#Sensor

    img_sensor = pygame.image.load(os.path.join('images', "sensores.png")) # coloca a imagem de fundo
    background.blit(img_sensor, (430, 245))
   
    #if(ser.inWaiting() >0):

    temp = ord(ser.read(1))
    font2 = pygame.font.Font(None, 15)
    text = font.render(str(temp), True, (0,0, 0), (227, 108, 10))
       
    background.blit(text, (456, 267))
     
       
       

    if (btn_3)== 0: # se o botao do start nao for pressionado
        screen.blit(background, (0, 0))
        pygame.display.flip()# executa o ciclo de novo
   

    else: # se for pressionado
        pygame.quit()# sai da janela do projecto
        os._exit(1)# para o python shell

   

esta +- assim



Uploaded with ImageShack.us

opinioes!!! aceitam-se :)

imagens do pyhton em anexo para quem quizer

cump.
ze pedro
« Última modificação: 12 de Junho de 2010, 13:20 por _ze_pedro_ »

Offline AcidDagger

  • Mini Robot
  • *
  • Mensagens: 364
  • Make Bits, Making robotics in Portugal
    • Make Bits
Re: PAP - SONDA MOVEL - explorUino
« Responder #116 em: 12 de Junho de 2010, 13:39 »
Muito bom mesmo  :D

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.631
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re: PAP - SONDA MOVEL - explorUino
« Responder #117 em: 12 de Junho de 2010, 13:42 »
Altamente, a humidade e pressão vais medir com o que?
já tinha houvido falar de python, mas nunca tinha visto código, nem nada feito com ele, acho que lhe vou dar um test drive.

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #118 em: 12 de Junho de 2010, 13:45 »
os sensores de humidade e pressao ainda nao sei se vou por agora ta ai so por uma questao de imagem para ver como fica

so o sensor de temperatura esta a funcionar

depende do tempo e se a escola estiver disponivel para comprar

ha sensores de pressao e humidade è so procurares eu ainda tenho de procurar uns nao muito caros  lool

mais uma vez obrigado micro por tudo ;)

cump.
ze pedro

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #119 em: 12 de Junho de 2010, 13:57 »
sensor de pressao
http://aliatron.com/loja/catalog/product_info.php?products_id=728
sensor de humidade
http://aliatron.com/loja/catalog/product_info.php?products_id=821

mas acho isso muito caro vou ter que procurar

se alguem souber de sensores mais baratos que me diga algo ;)

lol

cump.