• Welcome to LusoRobótica - Robótica em Português.
 

PAP - SONDA MOVEL - explorUino [CONCLUÍDO]

Started by _ze_pedro_, 10 de November de 2009, 19:44

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

senso

Se vais ler a temperatura no pc e é lá que a vais ver, envia só o valor lido da adc e faz as contas para a conversão no pc, operações matemáticas em virgula flutuante, principalmente divisões demorarm centenas de ciclos de relógio, assim ficas com o programa mais leve.
Avr fanboy

_ze_pedro_

#76
hum... yah tens razao lool

mas pronto entao tenho aqui uma duvida

eu leio o adc e envio logo o valor nao è?

mas depois no python como vou ler essee valor essa è a minha duvida maior
Quote
temp = analogRead(tempPin);           //read the value from the sensor
Serial.print(byte(temp));

basicamente no arduino pode ser assim ne?

AcidDagger


_ze_pedro_

ja postei uma na outra pagina

eu agora tenho estado mais na programaçao quando acabar o meus estagio è que vou começar na parte "mecanica" da coisa lol


AcidDagger


_ze_pedro_

#80
foram os stores da minha escola que mandaram vir acho que foi da aliatron

para a semana vai chegar a shield para o arduino e o xbee explore usb

_ze_pedro_

#81
Quote from: _ze_pedro_ on 10 de June de 2010, 19:14
hum... yah tens razao lool

mas pronto entao tenho aqui uma duvida

eu leio o adc e envio logo o valor nao è?

mas depois no python como vou ler essee valor essa è a minha duvida maior
Quote
temp = analogRead(tempPin);           //read the value from the sensor
Serial.print(byte(temp));


basicamente no arduino pode ser assim ne?

eu ja estive a tentar ler o dado e escreve.lo no ecra no python nao consegui...:S

help me!! :P


microbyte

Quote from: _ze_pedro_ on 10 de June de 2010, 22:04
Quote from: _ze_pedro_ on 10 de June de 2010, 19:14
hum... yah tens razao lool

mas pronto entao tenho aqui uma duvida

eu leio o adc e envio logo o valor nao è?

mas depois no python como vou ler essee valor essa è a minha duvida maior
Quote
temp = analogRead(tempPin);           //read the value from the sensor
Serial.print(byte(temp));


basicamente no arduino pode ser assim ne?

eu ja estive a tentar ler o dado e escreve.lo no ecra no python nao consegui...:S

help me!! :P

Calma aí... Que o que estás a fazer não faz muito sentido...

Relembrando... O analogRead() devolve valores entre 0 e 1023...
Um byte vai de 0 a 255, ao fazeres um cast do valor para um byte, eu não faço ideia do que o que o Arduino faz.

Divide por 8 para mapeares para um valor que possa ser recebido por um byte (e quando fores a calcular tens de fazer os respectuvos ajustes na fórmula), ou então tenta enviar um inteiro.

_ze_pedro_

#83
pois tens razao micro  ::)

eu ontem estive em busca da soluçao a noite toda loool

eu vou por aqui os programas que tenho

eu acho que so tenho o problema è em ler o byte e depois escrever o numero  porque de resto acho que esta bem no python da uma olhada ;)

pyhton:
Quote# -*- coding: cp1252 -*-
import pygame
import sys
import serial

temp = "0"

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

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

ser.baudrate = 9600

pygame.init()

temp = ser.read()



screen = pygame.display.set_mode((256, 256))

screen.fill((159, 182, 205))

# Create a font
font = pygame.font.Font(None, 17)

# Render the text
text = font.render(temp, True, (255,
255, 255), (159, 182, 205))

# Create a rectangle
textRect = text.get_rect()

# Center the rectangle
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery

# Blit the text
screen.blit(text, textRect)

pygame.display.update()

while True:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         sys.exit()

arduino:
Quotefloat tempC;
int tempPin = 0;

void setup()
{
  Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
}

void loop()
{
  tempC = analogRead(tempPin);           //read the value from the sensor
  tempC = (5.0 * tempC * 100.0)/1024.0;  //convert the analog data to temperature
  //Serial.println(tempC);
  Serial.print((byte)tempC);             //send the data to the computer
  delay(1000);                           //wait one second before sending new data
}

estes sao os programas em que tou a fazer os testes so nao consigo mesmo è ler no python o valor

cump.
ze pedro

microbyte

Tu meteste a função que lê da porta de série no arranque do programa...
O ser.read() devia estar dentro do while...

Mas deve haver uma função que vê se há alguma coisa para ler da porta de série, porque tal como no arduino só faz sentido correr a funcao de leitura se houver algo para ler.

_ze_pedro_

hum...tou a perceber +- ha algum exemplo disso? por ai?

microbyte

Quote from: _ze_pedro_ on 11 de June de 2010, 09:56
hum...tou a perceber +- ha algum exemplo disso? por ai?

Não precisas de exemplos... Basta consultares as referências das bilbiotecas que estás a usar...
Só pesquisei por "pyserial", apareceu-me logo a página da bilbioteca, fui às classes:
http://pyserial.sourceforge.net/pyserial_api.html#classes

Encontrei uma:
QuoteinWaiting()
    Return the number of chars in the receive buffer.

Ora, se inWaiting() for maior que 0, há qualquer coisa para ler.

_ze_pedro_

eu ja andei por ai a ler mas nao percebi muito bem certas coisas loool  ::)

è o que da ser "maçarico" lool

vou experimentar ja te digo algo ;)

microbyte

Quote from: _ze_pedro_ on 11 de June de 2010, 10:10
eu ja andei por ai a ler mas nao percebi muito bem certas coisas loool  ::)

è o que da ser "maçarico" lool

vou experimentar ja te digo algo ;)
Lol, o objectivo era perceberes que eu também não sei estas coisas de cor, e explicar-te como cheguei à resposta...
Saber procurar as coisas também é importante.

_ze_pedro_

eu sei e eu ando a procura :D

passo os dias a procura de coisas ahahah algumas vao funcionando outras nem por isso lool mas vou conseguindo ;)