Montando um carrinho (L298N)

Ai Jo,

Fiz um teste rápido sem o Arduíno:

Liguei a bateria (VMS e GND) e as pontas do multímetro nos conectores do motor A.

Liguei o ENA ao 5V e o IN1 ao GND.

E cá esta a voltagem, 7,07v (minha bateria não esta totalmente carregada):

Estou com preguiça de fazer o teste com o Arduíno agora ^^, mas acredito que o resultado será o mesmo!

Fala galera.

Finalmente consegui ligar a criança seguindo a orientação do jojorge01. O que estava acontecendo é que no código de exemplo ( GeekOnfire.com is for sale | HugeDomains ) ele utiliza a porta 5 e no meu a porta é a 10. Foi só alterar isso e o carro ligou. :slight_smile: :slight_smile: :slight_smile:

jojorge01:
Quanto aos comandos, vc escreve o programa para ler a serial e fazer as ações de ir para a frente, para trás, esquerda e direita. Estes comando vc dá pela própria IDE o arduino usando o Monitor Serial, quando funcionar vc pensa em um controle remoto, por IR, Bluethooth, ou até mesmo esta interface EZ que vc citou. Se quiser a noite posso te mandar o código que estou usando, ele está em constante evolução, mas te mando sem problemas.

Aproveitando o tópico.... não estou conseguindo de jeito nenhum sair com mais de 5 v na saída para os motores. Já ativei para a plaquina pegar energia do Arduino e deixar a alimentação dos 7,4 só para os motores, mas sempre fica em 5 v, tem como mandar mais que isso? Se alguém tiver alguma opinião ou ajuda eu agradeço!!!

Jo

Jorge gostaria sim que me passasse seu código. Vlw.

O que ainda não ficou claro é a questão de comandar através da IDE (Monitor Serial). Como funciona? Preciso digitar o comando que quero? No caso do carro estar em movimento, para ele parar basta digitar "STOP"?

Vlw mais uma vez pela ajuda, em especial ao Jorge e o Mortis. Um abraço.

jpricaro:
O que ainda não ficou claro é a questão de comandar através da IDE (Monitor Serial). Como funciona? Preciso digitar o comando que quero? No caso do carro estar em movimento, para ele parar basta digitar "STOP"?

Vlw mais uma vez pela ajuda, em especial ao Jorge e o Mortis. Um abraço.

Primeiro, a idéia aqui é ajudar, então denada! =)

Primeiro precisamos "ensinar ao arduino", ou seja, criar o código que vai ler a serial e executar o comando, É exatamente o que tem no link abaixo, a única diferença é que no lugar do digitalWrite(2, HIGH); você vai colocar o código para executar a ação que vc quiser, por exemplo a = direita, b = esquerda, etc

Boa programação ao! :wink:

Mortis:

jpricaro:
O que ainda não ficou claro é a questão de comandar através da IDE (Monitor Serial). Como funciona? Preciso digitar o comando que quero? No caso do carro estar em movimento, para ele parar basta digitar "STOP"?

Vlw mais uma vez pela ajuda, em especial ao Jorge e o Mortis. Um abraço.

Primeiro, a idéia aqui é ajudar, então denada! =)

Primeiro precisamos "ensinar ao arduino", ou seja, criar o código que vai ler a serial e executar o comando, É exatamente o que tem no link abaixo, a única diferença é que no lugar do digitalWrite(2, HIGH); você vai colocar o código para executar a ação que vc quiser, por exemplo a = direita, b = esquerda, etc

http://arduino.cc/en/Tutorial/SwitchCase2

Boa programação ao! :wink:

Pra ilustrar um pouco melhor o que vc var ter que fazer, dê uma olhada no vídeo, este é o primeiro de 3, assista todos que vc vai tirar de letra mais esta heheheh.

Este professor ensina duas coias que vc vai precisar, a primeira é como ligar o Bluethooth, depois pra testar o Bluethooth ele usa o esquema do monitor... é bem simples, qualquer coisa vc nos avisa!!!!

O código eu te passo a noite ok?
Abraço!!
Jo

Mortis:
Ai Jo,

Fiz um teste rápido sem o Arduíno:

Liguei a bateria (VMS e GND) e as pontas do multímetro nos conectores do motor A.
Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.

Liguei o ENA ao 5V e o IN1 ao GND.
Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.

E cá esta a voltagem, 7,07v (minha bateria não esta totalmente carregada):
Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.

Estou com preguiça de fazer o teste com o Arduíno agora ^^, mas acredito que o resultado será o mesmo!

Beleza cara... vou dar mais olha olhada se não fiz m....

Valeu pela informação!!!
Jo

jojorge01:

Mortis:
Ai Jo,

Fiz um teste rápido sem o Arduíno:

Liguei a bateria (VMS e GND) e as pontas do multímetro nos conectores do motor A.
Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.

Liguei o ENA ao 5V e o IN1 ao GND.
Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.

E cá esta a voltagem, 7,07v (minha bateria não esta totalmente carregada):
Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.

Estou com preguiça de fazer o teste com o Arduíno agora ^^, mas acredito que o resultado será o mesmo!

Beleza cara... vou dar mais olha olhada se não fiz m....

Valeu pela informação!!!
Jo

Fala pessoal, desculpe pelo ausência.... tive que fazer uma cirurgia esta semana.... mas já tô bem e em casa.....

Mortis, fiz os testes, realmente "só" os 5v..... fiz até uma ligação igual a sua.... mas somente os 5v!!!!
O que será que tá errado?
Se alguém tiver uma luz eu agradeço!!
Jo

:disappointed_relieved:

Mortis:
Me interessou essa parte: "Apply to be a beta tester when you register for the forum. Contributors get a free forever license for the debugger upgrade when it is released"

É interessante vermos as regras, "free forever" é muito melhor!

Yes, it is "free forever" for all beta contributors (the more the better, hint hint) but it won't cost very much anyway :slight_smile: http://www.visualmicro.com

You can see a slow but detailed overview of the Arduino debugger on youtube
Arduino debugger.

The first couple of minutes is for new Arduino users, the remainder shows basic debugging.

Sorry for using English

Fala ai Jo,

Me desculpe por demorar a entrar, mas as coisas estão corridas por aqui =/

Você tirou a placa fora e fez os testes iguais aos meus? Sem mais nada ligado na placa? Você mediu a bateria ou fonte e ela fornece mais de 5V?

Muito estranho isso, a saída do motor deveria ter a mesma voltagem do VMS... ... Eu seguiria as trilhas da placa para ver se tem algo estranho, sei lá, não imagino como te ajudar.

Mortis:
Fala ai Jo,

Me desculpe por demorar a entrar, mas as coisas estão corridas por aqui =/

Você tirou a placa fora e fez os testes iguais aos meus? Sem mais nada ligado na placa? Você mediu a bateria ou fonte e ela fornece mais de 5V?

Muito estranho isso, a saída do motor deveria ter a mesma voltagem do VMS... ... Eu seguiria as trilhas da placa para ver se tem algo estranho, sei lá, não imagino como te ajudar.

Fala Mortis, quanto a demora nem esquenta.... tranquilo....
Cara eu fiz dos dois jeitos, só coloquei o multímetro na saída do motor (sem os fios ligados, só o multímetro mesmo) e deram os 5v.... ai pensei que o jeito que vc ligou pudesse ter interferido em alguma coisa e desliguei tudo.... só a plaquina controladora.... a bateria e o multímetro nas saídas.... os jumpers tb iguais aos seus.... mas nada mudou... tudo igual.... que decepção.... fazê o que né.... vou esperar as baterias que eu comprei chegarem... ai eu testo de novo!!!!!

Outra coisa que fiz foi medir a corrente do carrinho igual ao colega Filantropic ensinou no outro tópico que eu abri e deu certo... a corrente é de 0,68 A... quem sse interessar procura no tópico que eu postei um vídeo do youtube que o cara ensina a medir....

Outra coisa foi o controle remoto com o N95, deu certo, consegui deixar do jeito que eu queria.... o carrinho só anda para as direções quando vc pressiona a tecla, se soltar ele para... simulando um controle remoto real.... ficou legar.... mas o direcional é muito pequeno.... eu dedo é grande e constantemente aperto as outras teclas em volta e ele sai da aplicação.... ou seja.... o manejo té legal....mas a agilidade tá ruim..... vou pesquiser usar um controle de PS2 que tenho jogado aqui.... quem sabe!!!!

Se algum colega quiser dicas ou o código estou a disposição!!!

Se alguém tiver uma idéia de o porque minha plaquinha não tá "soltando" os 7 v na saída do motor eu agradeço!!!!

Jo

jojorge01:

Mortis:
Fala ai Jo,

Me desculpe por demorar a entrar, mas as coisas estão corridas por aqui =/

Você tirou a placa fora e fez os testes iguais aos meus? Sem mais nada ligado na placa? Você mediu a bateria ou fonte e ela fornece mais de 5V?

Muito estranho isso, a saída do motor deveria ter a mesma voltagem do VMS... ... Eu seguiria as trilhas da placa para ver se tem algo estranho, sei lá, não imagino como te ajudar.

Fala Mortis, quanto a demora nem esquenta.... tranquilo....
Cara eu fiz dos dois jeitos, só coloquei o multímetro na saída do motor (sem os fios ligados, só o multímetro mesmo) e deram os 5v.... ai pensei que o jeito que vc ligou pudesse ter interferido em alguma coisa e desliguei tudo.... só a plaquina controladora.... a bateria e o multímetro nas saídas.... os jumpers tb iguais aos seus.... mas nada mudou... tudo igual.... que decepção.... fazê o que né.... vou esperar as baterias que eu comprei chegarem... ai eu testo de novo!!!!!

Outra coisa que fiz foi medir a corrente do carrinho igual ao colega Filantropic ensinou no outro tópico que eu abri e deu certo... a corrente é de 0,68 A... quem sse interessar procura no tópico que eu postei um vídeo do youtube que o cara ensina a medir....

Outra coisa foi o controle remoto com o N95, deu certo, consegui deixar do jeito que eu queria.... o carrinho só anda para as direções quando vc pressiona a tecla, se soltar ele para... simulando um controle remoto real.... ficou legar.... mas o direcional é muito pequeno.... eu dedo é grande e constantemente aperto as outras teclas em volta e ele sai da aplicação.... ou seja.... o manejo té legal....mas a agilidade tá ruim..... vou pesquiser usar um controle de PS2 que tenho jogado aqui.... quem sabe!!!!

Se algum colega quiser dicas ou o código estou a disposição!!!

Se alguém tiver uma idéia de o porque minha plaquinha não tá "soltando" os 7 v na saída do motor eu agradeço!!!!

Jo

Fala Jo, blz?

Meu querido, se você puder disponibilizar seu código será bem legal. Fala tb qual software está usando no N95 para controlar o carro.

Essa questão de usar o controle do PS2, PS3 é o meu objetivo tb (via bluetooth) , já vi alguns no Youtube mas sem o código fonte. O que não ficou claro é se conectam o controle ao PC ou diretamente ao módulo.

abraço.

Fala cara.... quanto ao código tô pondo os dois no final..... ok... acredito que dá pra customizar para uma melhor performace e aparência (no do N95), mas agora tô fazendo tudo funcionar e depois vou voltar olhando o que pode ser melhorado... sugestões e críticas sào MUITO BEM VINDAS.

Quanto ao controle.... minha idéia é ligar ele o controle de PS2 no arduino... ler os comandos e enviar via bluethoot tb.... preciso pesquisar direitinho como isso funciona.... tb já achei pra compar um shield que é o direcional pronto para ser usado.... tb é uma opção.... ainda voi amadurecer a idéia e continuar postanto aqui.... faça o mesmo vc tb... o nosso tópico já tem bastante coisa legal!!!!!

segue o código:

int ENA=5;//connected to Arduino's port 5(output pwm)
int IN1=2;//connected to Arduino's port 2
int IN2=3;//connected to Arduino's port 3
int ENB=6;//connected to Arduino's port 6(output pwm)
int IN3=4;//connected to Arduino's port 4
int IN4=7;//connected to Arduino's port 7
byte VelocidadeAtual = 255;


void setup()
{
  pinMode(ENA,OUTPUT);//output
  pinMode(ENB,OUTPUT);
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT);
  Serial.begin(9600);

}
void loop()
{
  // ena = velocidade
  // in = direção
  char c = Serial.read();


  // aqui precisa melhorar, tirar os ifs e colocar algo mais eficiente
  if (c == '1')
  {
    // para frente
    AndaParaFrente();
    FuncionaMotor(VelocidadeAtual);
  }

  if (c == '2')
  {
    // para trás    
    AndaParaTraz();
    FuncionaMotor(VelocidadeAtual);
  }


  if (c == '3')
  {
    // direita  
    // começa a funcionar com 90
    ViraDireita();
    FuncionaMotorA(VelocidadeAtual * .4);
    FuncionaMotorB(VelocidadeAtual);
  }


  if (c == '4')
  {
    // direita  
    // começa a funcionar com 90
    ViraEsquerda();
    FuncionaMotorA(VelocidadeAtual);
    FuncionaMotorB(VelocidadeAtual * .4 );
  }


  if (c == '5')
  {
    // para  
    ParaMotores(); 
  }





}


//------------------------------------------------------------------------------------------
// Liga os motores e determina a velocidade
//------------------------------------------------------------------------------------------
void FuncionaMotor(byte Velocidade)
{
  FuncionaMotorA(Velocidade);
  FuncionaMotorB(Velocidade);
}



void FuncionaMotorA(byte Velocidade)
{
  analogWrite(ENA, Velocidade);//start driving motorA
}

void FuncionaMotorB(byte Velocidade)
{
  analogWrite(ENB, Velocidade);//start driving motorA
}

void ParaMotores()
{
  digitalWrite(ENA,LOW);
  digitalWrite(ENB,LOW);//stop driving

}

//------------------------------------------------------------------------------------------
// FIM - Liga os motores e determina a velocidade
//------------------------------------------------------------------------------------------





//------------------------------------------------------------------------------------------
// Direcoes
//------------------------------------------------------------------------------------------


void AndaParaFrente()
{
  // MOTOR 1
  digitalWrite(IN1,LOW); 
  digitalWrite(IN2,HIGH);//setting motorA's directon  

  // MOTOR 2
  digitalWrite(IN3,LOW); 
  digitalWrite(IN4,HIGH);//setting motorB's directon  
}



void AndaParaTraz()
{
  // MOTOR 1
  digitalWrite(IN1,HIGH); 
  digitalWrite(IN2,LOW);//setting motorA's directon  

  // MOTOR 2
  digitalWrite(IN3,HIGH); 
  digitalWrite(IN4,LOW);//setting motorB's directon
}


void ViraEsquerda()
{

  // MOTOR 1
  digitalWrite(IN1,LOW); 
  digitalWrite(IN2,HIGH);//setting motorA's directon  

  // MOTOR 2
  digitalWrite(IN3,HIGH); 
  digitalWrite(IN4,LOW);//setting motorB's directon

}






void ViraDireita()
{

  // MOTOR 1
  digitalWrite(IN1,HIGH); 
  digitalWrite(IN2,LOW);//setting motorA's directon  

  // MOTOR 2
  digitalWrite(IN3,LOW); 
  digitalWrite(IN4,HIGH);//setting motorB's directon

}

Para o N95, isto que estou postando é um script que roda em Python... então precisa ter ele instalado na máquina... vc acha ele aqui: PyS60 download | SourceForge.net o livro que use como base foi este: "Wiley Mobile Python-Rapid prototyping of applications on the mobile platform"... dá pra achar tranquilo, é só procurar.
A idéia é, primeiro se conectar ao bluethoot do carrinho, depois, quando o cara apertar o direcional para cima vai aparecer uma bolinha vermelha no topo da tela para indicar no celular a direção e enquanto vc mantém a tecla pressionada o script fica enviando o caractere "1" que no arduino tá programado para ele andar pra frente.... quando vc solta o direcional ele para de mandar o 1 e desliga os motores!!!! Funciona assim para as quatro direções.

Segue o código:

import appuifw, e32, key_codes, graphics, socket


def choose_service(services):
    names = []
    channels = []
    for name, channel in services.items():
        names.append(name)
        channels.append(channel)

    index = appuifw.popup_menu(names, u"Choose service")
    return channels[index]
	 
def connect():
    global sock
    address, services = socket.bt_discover()
    channel = choose_service(services)
    sock = socket.socket(socket.AF_BT, socket.SOCK_STREAM)

    print "address:", address
    print "channel:", channel

    sock.connect((address, channel))


def frente():
    global sock
    sock.send("1")


def tras():
    global sock
    sock.send("2")


def esquerda():
    global sock
    sock.send("3")


def direita():
    global sock
    sock.send("4")


def desliga():
    global sock
    sock.send("5")




WHITE = (255,255,255)
RED = (255,0,0)
BLUE = (0,0,255)
YELLOW = (255,255,0)



def handle_redraw(rect):
    if img: canvas.blit(img)


def draw_point(pos):
    if pos == 1:
          img.point((125,30), outline = RED, width = 50)
    elif pos == 2:
          img.point((125,285), outline = RED, width = 50)
    elif pos == 3:
          img.point((200,170), outline = RED, width = 50)
    elif pos == 4:
          img.point((35,170), outline = RED, width = 50)









key_down = None
clicked = None



def handle_event(event):
    global clicked, key_down
    if event['type'] == appuifw.EEventKey:
            if key_down:
                    key_down = (event['keycode'], "down")
            else:
                    key_down = (event['keycode'], "pressed")
    elif event['type'] == appuifw.EEventKeyUp and key_down:
            code, mode = key_down
            if mode == "pressed":
                    clicked = code
            key_down = None
            desliga()
            img.clear(BLUE)



    handle_redraw(None)






def key_clicked(code):
        global clicked
        if code == clicked:
                clicked = None
                return True
        return False

def key_is_down(code):
        if key_down and key_down == (code, "down"):
                return True
        return False

def quit():
        global running
        running = False


img = None

canvas = appuifw.Canvas(redraw_callback = handle_redraw, event_callback=handle_event)

appuifw.app.body = canvas
appuifw.app.screen = 'full'
appuifw.app.exit_key_handler = quit
appuifw.app.menu = [(u"Connect", connect)]

w, h = canvas.size
img = graphics.Image.new((w, h))
img.clear(BLUE)




running = True
while running:
   
    e32.ao_sleep(0.05)

    if key_is_down(key_codes.EKeyUpArrow):
            draw_point(1)
            frente()
    elif key_is_down(key_codes.EKeyDownArrow):
            draw_point(2)
            tras()
    elif key_is_down(key_codes.EKeyRightArrow):
            draw_point(3)
            direita()
    elif key_is_down(key_codes.EKeyLeftArrow):
            draw_point(4)
            esquerda()

    else:
            img.clear(BLUE)

Mais uma vez, dúvidas, discussões, sugestões e críticas são bem vindas....
Abraço!

Pessoal, vou compartilhar com vocês um curso gratuito disponível no youtube:

O responsável se Chama Renato Aloi. As aulas vão desde o básico até o avançado. Gostei bastante mesmo.

Fica a dica.

jojorge01:
Fala cara.... quanto ao código tô pondo os dois no final..... ok... acredito que dá pra customizar para uma melhor performace e aparência (no do N95), mas agora tô fazendo tudo funcionar e depois vou voltar olhando o que pode ser melhorado... sugestões e críticas sào MUITO BEM VINDAS.

Quanto ao controle.... minha idéia é ligar ele o controle de PS2 no arduino... ler os comandos e enviar via bluethoot tb.... preciso pesquisar direitinho como isso funciona.... tb já achei pra compar um shield que é o direcional pronto para ser usado.... tb é uma opção.... ainda voi amadurecer a idéia e continuar postanto aqui.... faça o mesmo vc tb... o nosso tópico já tem bastante coisa legal!!!!!

segue o código:

int ENA=5;//connected to Arduino's port 5(output pwm)

int IN1=2;//connected to Arduino's port 2
int IN2=3;//connected to Arduino's port 3
int ENB=6;//connected to Arduino's port 6(output pwm)
int IN3=4;//connected to Arduino's port 4
int IN4=7;//connected to Arduino's port 7
byte VelocidadeAtual = 255;

void setup()
{
  pinMode(ENA,OUTPUT);//output
  pinMode(ENB,OUTPUT);
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT);
  Serial.begin(9600);

}
void loop()
{
  // ena = velocidade
  // in = direção
  char c = Serial.read();

// aqui precisa melhorar, tirar os ifs e colocar algo mais eficiente
  if (c == '1')
  {
    // para frente
    AndaParaFrente();
    FuncionaMotor(VelocidadeAtual);
  }

if (c == '2')
  {
    // para trás   
    AndaParaTraz();
    FuncionaMotor(VelocidadeAtual);
  }

if (c == '3')
  {
    // direita 
    // começa a funcionar com 90
    ViraDireita();
    FuncionaMotorA(VelocidadeAtual * .4);
    FuncionaMotorB(VelocidadeAtual);
  }

if (c == '4')
  {
    // direita 
    // começa a funcionar com 90
    ViraEsquerda();
    FuncionaMotorA(VelocidadeAtual);
    FuncionaMotorB(VelocidadeAtual * .4 );
  }

if (c == '5')
  {
    // para 
    ParaMotores();
  }

}

//------------------------------------------------------------------------------------------
// Liga os motores e determina a velocidade
//------------------------------------------------------------------------------------------
void FuncionaMotor(byte Velocidade)
{
  FuncionaMotorA(Velocidade);
  FuncionaMotorB(Velocidade);
}

void FuncionaMotorA(byte Velocidade)
{
  analogWrite(ENA, Velocidade);//start driving motorA
}

void FuncionaMotorB(byte Velocidade)
{
  analogWrite(ENB, Velocidade);//start driving motorA
}

void ParaMotores()
{
  digitalWrite(ENA,LOW);
  digitalWrite(ENB,LOW);//stop driving

}

//------------------------------------------------------------------------------------------
// FIM - Liga os motores e determina a velocidade
//------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------
// Direcoes
//------------------------------------------------------------------------------------------

void AndaParaFrente()
{
  // MOTOR 1
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);//setting motorA's directon

// MOTOR 2
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);//setting motorB's directon 
}

void AndaParaTraz()
{
  // MOTOR 1
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);//setting motorA's directon

// MOTOR 2
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);//setting motorB's directon
}

void ViraEsquerda()
{

// MOTOR 1
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);//setting motorA's directon

// MOTOR 2
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);//setting motorB's directon

}

void ViraDireita()
{

// MOTOR 1
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);//setting motorA's directon

// MOTOR 2
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);//setting motorB's directon

}






Para o N95, isto que estou postando é um script que roda em Python... então precisa ter ele instalado na máquina... vc acha ele aqui: http://sourceforge.net/projects/pys60 o livro que use como base foi este: "Wiley Mobile Python-Rapid prototyping of applications on the mobile platform"... dá pra achar tranquilo, é só procurar. 
A idéia é, primeiro se conectar ao bluethoot do carrinho, depois, quando o cara apertar o direcional para cima vai aparecer uma bolinha vermelha no topo da tela para indicar no celular a direção e enquanto vc mantém a tecla pressionada o script fica enviando o caractere "1" que no arduino tá programado para ele andar pra frente.... quando vc solta o direcional ele para de mandar o 1 e desliga os motores!!!! Funciona assim para as quatro direções.


Segue o código: 



import appuifw, e32, key_codes, graphics, socket

def choose_service(services):
    names = []
    channels = []
    for name, channel in services.items():
        names.append(name)
        channels.append(channel)

index = appuifw.popup_menu(names, u"Choose service")
    return channels[index]

def connect():
    global sock
    address, services = socket.bt_discover()
    channel = choose_service(services)
    sock = socket.socket(socket.AF_BT, socket.SOCK_STREAM)

print "address:", address
    print "channel:", channel

sock.connect((address, channel))

def frente():
    global sock
    sock.send("1")

def tras():
    global sock
    sock.send("2")

def esquerda():
    global sock
    sock.send("3")

def direita():
    global sock
    sock.send("4")

def desliga():
    global sock
    sock.send("5")

WHITE = (255,255,255)
RED = (255,0,0)
BLUE = (0,0,255)
YELLOW = (255,255,0)

def handle_redraw(rect):
    if img: canvas.blit(img)

def draw_point(pos):
    if pos == 1:
          img.point((125,30), outline = RED, width = 50)
    elif pos == 2:
          img.point((125,285), outline = RED, width = 50)
    elif pos == 3:
          img.point((200,170), outline = RED, width = 50)
    elif pos == 4:
          img.point((35,170), outline = RED, width = 50)

key_down = None
clicked = None

def handle_event(event):
    global clicked, key_down
    if event['type'] == appuifw.EEventKey:
            if key_down:
                    key_down = (event['keycode'], "down")
            else:
                    key_down = (event['keycode'], "pressed")
    elif event['type'] == appuifw.EEventKeyUp and key_down:
            code, mode = key_down
            if mode == "pressed":
                    clicked = code
            key_down = None
            desliga()
            img.clear(BLUE)

handle_redraw(None)

def key_clicked(code):
        global clicked
        if code == clicked:
                clicked = None
                return True
        return False

def key_is_down(code):
        if key_down and key_down == (code, "down"):
                return True
        return False

def quit():
        global running
        running = False

img = None

canvas = appuifw.Canvas(redraw_callback = handle_redraw, event_callback=handle_event)

appuifw.app.body = canvas
appuifw.app.screen = 'full'
appuifw.app.exit_key_handler = quit
appuifw.app.menu = [(u"Connect", connect)]

w, h = canvas.size
img = graphics.Image.new((w, h))
img.clear(BLUE)

running = True
while running:
   
    e32.ao_sleep(0.05)

if key_is_down(key_codes.EKeyUpArrow):
            draw_point(1)
            frente()
    elif key_is_down(key_codes.EKeyDownArrow):
            draw_point(2)
            tras()
    elif key_is_down(key_codes.EKeyRightArrow):
            draw_point(3)
            direita()
    elif key_is_down(key_codes.EKeyLeftArrow):
            draw_point(4)
            esquerda()

else:
            img.clear(BLUE)





Mais uma vez, [u]**dúvidas, discussões, sugestões e críticas são bem vindas**[/u].... 
Abraço!

Jo,

Não entendi muito bem esta segunda parte. Devo instalar o Python no meu Android e adicionar esse Script? É isso?

OBS: Instalei o Python e os comando dele são: "=, (, ), " e TAB. Tem que alterar algo?

Fala jpricaro, blz?

jpricaro:
Jo,

Não entendi muito bem esta segunda parte. Devo instalar o Python no meu Android e adicionar esse Script? É isso?

OBS: Instalei o Python e os comando dele são: "=, (, ), " e TAB. Tem que alterar algo?

Sim, deve instalar o Python, mas este código que eu passei é somente para celular Symbian 3 edição..... pra Android eu não sei..... até queria escrever esta aplicação pro Android, mas meu celular é "veinho" ainda hehehehehe

Abraço!!
Jo

jojorge01:
Fala jpricaro, blz?

jpricaro:
Jo,

Não entendi muito bem esta segunda parte. Devo instalar o Python no meu Android e adicionar esse Script? É isso?

OBS: Instalei o Python e os comando dele são: "=, (, ), " e TAB. Tem que alterar algo?

Sim, deve instalar o Python, mas este código que eu passei é somente para celular Symbian 3 edição..... pra Android eu não sei..... até queria escrever esta aplicação pro Android, mas meu celular é "veinho" ainda hehehehehe

Abraço!!
Jo

Achei esse link, bem explicado. Vou tentar fazer

Achei legal, mas tenho que comprar muita coisa pra fazer....

jpricaro:
Achei esse link, bem explicado. Vou tentar fazer

http://www.instructables.com/id/Use-a-PS3-Controller-to-control-an-Arduino-NXT-Bot/

Ainda tô tentando com o do PS1 (achei que o meu era de PS2 mas é de PS1)..... bom.... ainda não consegui....
assim que alguma coisa der certo eu aviso!!

Abraço!
Jo

Boa tarde pessoal. Deixaram o tópico morrer? Ninguém com novas experiências? Vamos voltar a ativa.

Abraço.

Gostaria de agradecer a todos to lendo todos os tópicos e tem me ajudado bastante.. Também comprei esse "Robô" e vc's me ajudaram!!!
OBRIGADO!

preciso de ajuda!!!
Alguém?

preciso de ajuda!!!
Alguém?

LuanNakamura:
preciso de ajuda!!!
Alguém?