collapse

* Posts Recentes

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]


Focos LED SMD por almamater
[16 de Dezembro de 2023, 14:12]


I Belive por dropes
[15 de Dezembro de 2023, 13:59]


Carga de corrente eletrónica ZPB30A1 60W por jm_araujo
[11 de Dezembro de 2023, 13:27]

Autor Tópico: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2  (Lida 10472 vezes)

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

Offline joaorobotica

  • Mini Robot
  • *
  • Mensagens: 10
Boas, estou a realizar um trabalho de final de curso e precisava de umas ajudas.
Estou a utilizar um kit da bot'n'roll e consegui por o robô a andar em linhas pretas com fundo branco mas preciso de ir mais além disso. Estou a usar o código exemplo que me foi fornecido mas precisava de o colocar a detectar outras cores no chão, e ao fazê-lo preciso que pare e que utilize o buzzer.

Código: [Seleccione]
'Programa de Teste ao Sensor de linha - Abordagem Lógica

'Configuração do PICAXE
setfreq em32 'Frequência de processamento de 32Mhz

'Declaração de variáveis
symbol sensor1=b0
symbol sensor2=b1
symbol sensor3=b2
symbol sensor4=b3
symbol sensor5=b4
symbol sensor6=b5
symbol sensor=b6
symbol direcao = b10 'Direccao actual do robô
symbol direcao_a=b11 'Direcção anterior do robô
symbol duty_d=w8
symbol duty_e=w9

'Definição de constantes
symbol MOTOR_DIR=C.2
symbol MOTOR_ESQ=C.1
symbol SENSOR_LIM=90 'Valor do limiar para atribuição de linha preta
symbol M_TRAS=0
symbol M_ESQUERDA=1
symbol M_FRENTE=2
symbol M_DIREITA=3
'Dispositivos I2C
symbol LCD=$50

setup:
let adcsetup=8 'Selecciona como entradas analógicas os canais ADC0,1,2,3,5,6,7,8
hintsetup %00000000 'Desactiva as 3 interrupções externas
pullup off 'Desativa os "pullups" associados á porta B
pause 1000 'Pausa de 1/4 de segundo

lcd_print:
hi2csetup i2cmaster,LCD,i2cslow_32,i2cbyte 'Configuração do I2Cslave para o LCD
hi2cout [LCD], ("Bot`n Roll ONE C") 'Impressao no LCD
hi2cout [LCD], ($FE,$45,$40)        'Coloca o cusor no início da segunda linha
hi2cout [LCD], (" Seguir a linha ") 'Impressao no LCD
pause 4000 'Pausa de 1s
goto main

main:
gosub le_linha

select sensor
case 1
duty_e=400
duty_d=700
gosub esquerda
case 2
duty_e=450
duty_d=650
gosub frente
case 3
duty_e=650
duty_d=650
gosub frente
case 4
duty_e=650
duty_d=650
gosub frente
case 5
duty_e=650
duty_d=400
gosub frente
case 6
duty_e=700
duty_d=450
gosub direita
endselect

goto  main

dir_test:
if direcao != direcao_a then 'Se direcção actual diferente da direcção anterior
pwmout pwmdiv4, MOTOR_DIR, 199, 0 'MotorD,Frequência_PWM,Potência(0%)->Necessário retirar potência antes de atribuir sentido
pwmout pwmdiv4, MOTOR_ESQ, 199, 0 'MotorE,Frequência_PWM,Potência(0%)->Necessário retirar potência antes de atribuir sentido
let direcao_a=direcao
endif
return

parado:
let direcao=0
pwmout pwmdiv4, MOTOR_DIR, 199, 0 'MotorD,Frequência_PWM,Potência(0%)
pwmout pwmdiv4, MOTOR_ESQ, 199, 0 'MotorE,Frequência_PWM,Potência(0%)
return

frente:
let direcao=1
gosub dir_test '->Necessário retirar potência antes de atribuir novo sentido
low  D.4 'Atribui o sentido ao MotorD
high D.5 'Atribui o sentido ao MotorD
high D.6 'Atribui o sentido ao MotorE
low  D.7 'Atribui o sentido ao MotorE
pwmout pwmdiv4, MOTOR_DIR, 199, duty_d 'MotorD,Frequência_PWM,Potência
pwmout pwmdiv4, MOTOR_ESQ, 199, duty_e 'MotorE,Frequência_PWM,Potência
return

tras:
let direcao=2
gosub dir_test '->Necessário retirar potência antes de atribuir novo sentido
high D.4 'Atribui o sentido ao MotorD
low  D.5 'Atribui o sentido ao MotorD
low  D.6 'Atribui o sentido ao MotorE
high D.7 'Atribui o sentido ao MotorE
pwmout pwmdiv4, MOTOR_DIR, 199, duty_d 'MotorD,Frequência_PWM,Potência
pwmout pwmdiv4, MOTOR_ESQ, 199, duty_e 'MotorE,Frequência_PWM,Potência
return

direita:
let direcao=3
gosub dir_test '->Necessário retirar potência antes de atribuir novo sentido
high D.4 'Atribui o sentido ao MotorD
low  D.5 'Atribui o sentido ao MotorD
high D.6 'Atribui o sentido ao MotorE
low  D.7 'Atribui o sentido ao MotorE
pwmout pwmdiv4, MOTOR_DIR, 199, duty_d 'MotorD,Frequência_PWM,Potência
pwmout pwmdiv4, MOTOR_ESQ, 199, duty_e 'MotorE,Frequência_PWM,Potência
return

esquerda:
let direcao=4
gosub dir_test '->Necessário retirar potência antes de atribuir novo sentido
low  D.4 'Atribui o sentido ao MotorD
high D.5 'Atribui o sentido ao MotorD
low  D.6 'Atribui o sentido ao MotorE
high D.7 'Atribui o sentido ao MotorE
pwmout pwmdiv4, MOTOR_DIR, 199, duty_d 'MotorD,Frequência_PWM,Potência
pwmout pwmdiv4, MOTOR_ESQ, 199, duty_e 'MotorE,Frequência_PWM,Potência
return

le_linha:
readadc 1,sensor1
readadc 2,sensor2
readadc 3,sensor3
readadc 5,sensor4
readadc 6,sensor5
readadc 7,sensor6

if sensor1>SENSOR_LIM then
sensor=1
elseif sensor6>SENSOR_LIM then
sensor=6
elseif sensor2>SENSOR_LIM then
sensor=2
elseif sensor5>SENSOR_LIM then
sensor=5
elseif sensor3>SENSOR_LIM then
sensor=3
elseif sensor4>SENSOR_LIM then
sensor=4
else
sensor=0
endif
return

end

Obrigado!

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.185
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #1 em: 06 de Maio de 2015, 14:22 »
Peço desculpa se entendi mal.

Então estás a fazer um trabalho de fim de curso, compraste um "kit bot'n'roll" e colocaste um "código exemplo"?!

Apareces aqui a pedir ajuda para fazer alterações no código, só deves estar a gozar connosco.

Offline joaorobotica

  • Mini Robot
  • *
  • Mensagens: 10
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #2 em: 06 de Maio de 2015, 14:26 »
Peço desculpa se entendi mal.

Então estás a fazer um trabalho de fim de curso, compraste um "kit bot'n'roll" e colocaste um "código exemplo"?!

Apareces aqui a pedir ajuda para fazer alterações no código, só deves estar a gozar connosco.

Então entendes-te mal, não comprei o kit, a escola forneceu-o, quanto ao código de exemplo é a base com que comecei, não estou a pedir que me façam as alterações apenas estou a solicitar ajuda em como fazê-lo.

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #3 em: 06 de Maio de 2015, 14:36 »
Podes colocar aqui também o código base?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #4 em: 06 de Maio de 2015, 14:41 »
Meh, não tem especificações nenhumas no site  ::)
Que sensores usa isso para seguir linhas?
Avr fanboy

Offline joaorobotica

  • Mini Robot
  • *
  • Mensagens: 10
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #5 em: 06 de Maio de 2015, 15:05 »
Como conseguem entender sou muito novato nisto, não vim aqui abusar de ninguém, pesquisei em muitos tópicos e tudo, mas continuo com dificuldades, decidi juntar me para poder falar diretamente e colocar as minhas dúvidas.

Meh, não tem especificações nenhumas no site  ::)
Que sensores usa isso para seguir linhas?

O sensor que utiliza é o seguinte : Pololu QTR-8A

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #6 em: 06 de Maio de 2015, 15:08 »
Podes tentar usar valores intermédios, tipo escala de cinzentos, mas esse sensor não sabe o que é cor, é basicamente um led IR e um foto-transistor.
Avr fanboy

Offline joaorobotica

  • Mini Robot
  • *
  • Mensagens: 10
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #7 em: 06 de Maio de 2015, 15:10 »
Podes tentar usar valores intermédios, tipo escala de cinzentos, mas esse sensor não sabe o que é cor, é basicamente um led IR e um foto-transistor.

Sim , mas ele consegue seguir perfeitamente uma pista com fundo branco e linhas pretas, o que me foi proposto foi continuar com esse plano mas meter uma espécie de peões de cor verde também na pista colado ao chão e parar em cima dele. Não sei se tenho de acrescentar algo ao robô ou se dá com esse mesmo sensor.
« Última modificação: 06 de Maio de 2015, 15:13 por joaorobotica »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #8 em: 06 de Maio de 2015, 15:15 »
Já que tens uma barra de 8 sensores, porque não implementar um simples código de barras, se vai a seguir uma linha e lhe aparece outra "linha" 2 sensores ao lado(á direita vamos supor) do que vai a seguir a linha interpreta como para parar, se for do outro lado(á esquerda), interpreta como para voltar para trás.

Tens 8 sensores e dado que quando é uma curva a 90º os sensores todos de um dos lados vão ficar a ver preto, dá para implementar umas dezenas de códigos de barras sem causar confusão no seguimento de uma linha.
Avr fanboy

Offline joaorobotica

  • Mini Robot
  • *
  • Mensagens: 10
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #9 em: 06 de Maio de 2015, 15:20 »
Por exemplo deixar os 4 sensores centrais a seguir a linha preta tendo os dois sensores laterais desses 4 a registar o fundo de cor branca, e se registar algo uma cor atravessada preta nos 4 outros sensores ele deve parar e retomar a marcha ?

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #10 em: 06 de Maio de 2015, 15:22 »
Verde é um tom de cinzento, desde que não tenhas que distinguir outras cores deve dar.

Offline joaorobotica

  • Mini Robot
  • *
  • Mensagens: 10
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #11 em: 06 de Maio de 2015, 15:28 »
Verde é um tom de cinzento, desde que não tenhas que distinguir outras cores deve dar.

Eu só preciso de utilizar 3 cores, sendo elas o preto e o branco que são fáceis de distinguir e não há confusão no sensor, e uma auxiliar para o fazer parar e buzinar. Após isso continuar a marcha, mas tenho uma questão, supostamente ele detecta a cor branca/preta como 0/1 ou vice-versa certo ? É possível detectar outra cor para além dessas ? Eu pensei em fazer algo com a seguinte lógica, se o sensor detecta-se uma cor diferente de 0/1 parava. Não sei se é possivel

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #12 em: 06 de Maio de 2015, 15:41 »
Código: [Seleccione]
le_linha:
 readadc 1,sensor1
 readadc 2,sensor2
 readadc 3,sensor3
 readadc 5,sensor4
 readadc 6,sensor5
 readadc 7,sensor6

O que é que isto faz?
Quero que me expliques.
Avr fanboy

Offline joaorobotica

  • Mini Robot
  • *
  • Mensagens: 10
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #13 em: 06 de Maio de 2015, 15:44 »
o readadc lê o valor analógico dos pinos de entrada do microcontrolador, associando aos "sensores" que estão no sensor do seguidor de linha

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Bot'n'roll One C - Seguidor de linha - Busca e Salvamento - Picaxe 40x2
« Responder #14 em: 06 de Maio de 2015, 15:51 »
Então, o valor de cada sensor é só 0/1, ou será algo mais?
Avr fanboy