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: Ajuda com programação  (Lida 5586 vezes)

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

Offline RodriguesRobotica

  • Mini Robot
  • *
  • Mensagens: 4
Ajuda com programação
« em: 28 de Dezembro de 2010, 20:31 »
Boa noite a todos :D!

Sou novo aqui no forum, espero ajudar e ser ajudado quando necessário. Cumprimentos a todos  ;D 

Tenho um projecto em mãos que consiste no seguinte : Coloco um objecto de cor em cima de um robô e ele, dependendo da cor,  irá fazer um certo circuito, seguindo uma linha preta. Haverá 3 cores possíveis.

O robô parte sempre do mesmo local, seguindo a linha ate encontrar 3 locais para virar dependendo da cor do objecto.
Eu quero que por exemplo se a caixa for de cor preta, quando os 3 sensores de pista estiverem a 1 (detectar preto) , o robô deve virar para a esquerda, seguir novamente a linha e parar quando os 3 sensores de pista estiverem novamente accionados , para que a caixa seja colocada num certo local.

Por sua vez se a caixa for de cor vermelha, o robô deverá ignorar a primeira vez que os 3 sensores accionem simultaneamente, virar a esquerda da 2º vez que estejam accionados os sensores e parar da 3º vez que os mesmo estejam accionados. :D

E assim sucessivamente para a outra cor.

O meu problema está ai mesmo, como faço para que o robô passe pela 1º vez que os 3 sensores estejam accionados, vire no 2º e pare no 3º???

Se alguém me pudesse ajudar. . ..

A programação do robô está a ser feita a partir do PICAXE 28X1
Tem uma imagem anexada, fiz um esquema para perceberem melhor.

Cumprimentos 

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re: Ajuda com programação
« Responder #1 em: 28 de Dezembro de 2010, 20:44 »
repara nesta imagem modificada que anexo.

eu recomendo que haja a linha na posição inicial do robot, caso haja necessidade deste voltar e parar nessa posição..

em vez das curvas serem feitas por haver 3 sensores activos, sejam feitas se houver dois sensores activos.

e haver para cada cor um percurso pré definido.

Offline RodriguesRobotica

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda com programação
« Responder #2 em: 28 de Dezembro de 2010, 22:39 »
Sim, o projecto está com o robot a voltar ao inicio, eu é que não representei na imagem ;) 

Quanto a ele fazer as curvas com dois sensores activos, isso vai causar interferência quando o robot estiver a percorrer a linha normalmente.

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Ajuda com programação
« Responder #3 em: 28 de Dezembro de 2010, 23:24 »
Isso é resolvido usando um simples contador...
Caso o objecto seja verde, tem de contar até 3;
Caso o objecto seja vermelho, tem de contar até 2;
Caso o objecto seja preto, tem de contar até 1;

Colocas uma variável com o valor máximo do contador, após detecção da cor do objecto (apenas tem de ser feita uma vez).
Depois, de cada vez que ficam todos activos, aumentas o contador.
E verificas:
Se o valor actual do contador é igual ao valor máximo, então é para virar agora à esquerda.

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re: Ajuda com programação
« Responder #4 em: 29 de Dezembro de 2010, 01:13 »
bah! k cromo.. só agora reparei k não anexei nada.. mas tb n importa, tu percebeste a ideia, e de kk forma não tinha lido bem a dúvida.. :S desculpa a perda de tempo..

Offline RodriguesRobotica

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda com programação
« Responder #5 em: 29 de Dezembro de 2010, 19:15 »
Caro Ricardo-reis, sim percebi e obrigado pela ajuda  :)

Caro microbyte, obrigado pela ajuda, e acho que percebi o que me quis dizer, só não estou a conseguir aplicar :S

Segundo o que me disse, vamos pensar na cor verde:

Declaro a variável com o valor máximo e declaro o contador: b5 = 3
b6= 0
symbol contador= b6

(Qual é a instrução do contador? vou lhe chamar contador ;D):

If esq= 1 and cent= 1 and dir= 1 then
gosub contador

Contador:
b6= b6 +1

If b5 = b6 then
gosub viraresquerda


Acho que é isto, pelo menos pelo que entendi, mas nao sei a a variável do contador . . . ..

obrigado pela sua ajuda :)

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Ajuda com programação
« Responder #6 em: 29 de Dezembro de 2010, 21:27 »
Começo já por dizer para me tratares por tu. ;)

O contador é uma variável, não uma subrotina.
Não sei como declaras isso em BASIC (?).

Afinal é mais simples do que te disse.
Imagino que tenhas uma rotina para a detecção da cor.
Vais ter de definir uma variável para o contador (pode chamar-se o que tu quiseres, presumo).

Em pseudo-código:
Código: [Seleccione]
# após deteccao da cor:
  if cor = verde
    contador = 3
  else if cor = vermelho
    contador = 2
  else if cor = preto
    contador = 1

# garante que só defines estes valores 1 vez e após teres a certeza da cor do objecto

# depois na parte da decisão:
  if esq= 1 and cent= 1 and dir= 1
    contador = contador - 1

  if contador = 0
    viraresquerda

Aqui modifiquei um pouco aquilo que disse, em vez de precisares de 2 variáveis, só precisas efectivamente de uma, e vais decrementando até chegar a 0 -> nesta situação tens de chamar a sub-rotrina "viraresquerda"

A variável chama-se contador e é do tipo inteiro. Agora terás de procurar pela internet como se declaram variáveis. ;)

Espero ter ajudado.

Offline RodriguesRobotica

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda com programação
« Responder #7 em: 30 de Dezembro de 2010, 15:35 »
Sim, ajudas-te e muito  :D, pelo que vi a teoria/programa é essa agora só falta por em pratica para ver se tudo corre bem.

Mais uma vez, obrigado  ;)