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

Robot de Busca e Salvamento![CONLUIDO]

Started by fred gomes, 31 de January de 2010, 13:42

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

microbyte

o "<<" é um operador e serve para fazer operações em binário.
Desloca os bits todos x casas para a esquerda (ao fazeres <<0 nao deslocas nada)

Isto está tudo no site do Arduino.

E quanto à chamada da função dar erro... Já tentaste ler qual é o erro?

senso

Não dá erro que eu já compilei, não é preciso fazer <<0 porque o << é um shift left, ou seja faz o numero andar para a esquerda, fazer <<0 é mandar andar o numero 0 vezes para a esquerda, logo não é preciso.
Sim, para chamares uma função que tenha um return no fim, ou seja como o teu LineError, quando a chamas tens de guardar o que ela manda no return numa variavel, dai fazer Errorval=LineError.
Eu compilei esse código que ai meti, faz o upload dele para o teu arduino e ve se funciona como queres ou não, altera as tuas ligações para ficarem correctas em relação ao novo código.
Avr fanboy

fred gomes

#107
o error continua a ser sempre 0.0,
mas eu chamei a função apenas assim:

LineError();

e no fim de calcular o error na função LineError coloquei errorval = error;

Ps : no meu compilador dá me erro como colocaste "o chamamento" da função Senso.
cumprimentos,
Fred

senso

#108
Isso não funciona assim, pois a variavel que usas na função LineError não é conhecida dentro da função loop, copias-te o código TODO?
É que aqui compila sem qualquer erro.
Aqui está um printscreen dele a compilar sem problemas:

Avr fanboy

fred gomes

já não dá erro.
reiniciei o programa do arduino e deixou de dar.. mas o error não varia de 0.0, já experimentei com o outro código a ver se a leitura dos sensores estava a ser bem efectuada e esta tudo correcto..
cumprimentos,
Fred

microbyte

Agora é uma questão de debug, ver o que ele está a receber dos sensores, com PRINT(), ver quais são os IF() que estão passar, e os que não passam... etc...

senso

int sensor1 = 3;
int sensor2 = 4;
int sensor3 = 5;
int sensor4 = 6;
int sensor5 = 7;

void setup(){
  Serial.begin(9600);
  digitalWrite(sensor1, HIGH);
  digitalWrite(sensor2,HIGH);
  digitalWrite(sensor3,HIGH);
  digitalWrite(sensor4,HIGH);
  digitalWrite(sensor5,HIGH);
}

void loop(){
  Serial.println(digitalRead(sensor1));
  Serial.println(digitalRead(sensor2));
  Serial.println(digitalRead(sensor3));
  Serial.println(digitalRead(sensor4));
  Serial.println(digitalRead(sensor5));
  Serial.println("----");
  delay(2000);

Com este código funciona?
Porque é que neste tens os sensores nos pinos 3,4,5,6,7 quando no outro tens nos pinos 2,3,4,5,6 ?
E antes tinhas 0,1,2,3,4 ?
Tens de te decidir rapaz, altera lá os pinos no código para serem sempre os mesmo e mete as ligações de acordo com os pinos que decidires usar e volta a tentar.
Avr fanboy

senso

Quote from: microbyte on 17 de May de 2010, 22:58
Agora é uma questão de debug, ver o que ele está a receber dos sensores, com PRINT(), ver quais são os IF() que estão passar, e os que não passam... etc...
Penso que é mais questão de ele ainda não ter decidido que pinos quer usar, vê a minha outra mensagem lol
Avr fanboy

microbyte

Pois, já estou a ver...
É que isto de andar a alternar entre programas nunca dá nada de jeito, acabamos por nos perder nas coisas mais elementares, como é a declaração dos pinos que vamos usar.

Mais uma vez, ele tirou o código do meu, que foi uma abordagem analógica, por isso os pinos iam do 0 ao 4, mas 0 a 4 nos analógicos. Nos pinos digitais, só podemos usar a partir do 2...

Altera lá isso fred, e faz alguns prints e vê se está tudo ok.

senso

Pois, é que já aqui vai uma misturada de todos os tamanhos, mas vamos lá ver se o rapaz consegue meter isto a funcionar bem.
Com tanto pessoal de Aveiro aqui no fórum temos é de fazer um Arduino Hack-day lol
Avr fanboy

microbyte

OffT: Era uma ideia engraçada... Porque não?

fred gomes

não dá :-\
o problema esta no valorsensor, os valores que ele me fornece não são zeros e uns..
cumprimentos,
Fred

senso

Somos pelo menos uns 4, e isto de estar em pessoa para tirar duvidas e fazer algo de funcional é sempre outra coisa que estar no pc.
E com 3 na UA até devia dar para fazer uma boa equipa para o micro-rato, que para o ano queria participar e tal.
Pois não, ele vai fornecer mais que zeros e uns para comparar com aqueles numeros em binário nos if's
Avr fanboy

microbyte

Quote from: fred gomes on 17 de May de 2010, 23:10
não dá :-\
o problema esta no valorsensor, os valores que ele me fornece não são zeros e uns..
Fred... Antes de te preocupares com o valorsensor, preocupa-te com aquilo que tens no array senval...

Mete isto no loop() -> para debug apenas! não vai funcionar por causa disto...
for (int i=0; i < nsensores; i++){
   print(senval[i]);
}
println();

fred gomes

não consigo meter essa função no loop pq dá me erro, mas fiz o print do senval, e acho estranho..

tipo, ele lê bem os sensores, mas quand acaba de ler os 5 sensores imprime um valor (consoante o nº o sensor que esta a ver preto) , imprime 2048, 1024 e 512 :s , porque isso acontece?
cumprimentos,
Fred