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: smalluino e sensor SHARP IR  (Lida 7087 vezes)

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

Offline joao rexinho

  • Mini Robot
  • *
  • Mensagens: 183
  • http://sites.google.com/site/roboticaelectronica/
smalluino e sensor SHARP IR
« em: 26 de Abril de 2010, 23:13 »
OLá após ter começado o tópico sobre um problema que faltava a calibração dos servos, mas fui desenvolvendo ate que consegui por o Sensor IR a funcionar. Fiz um video novo com o sensor IR SHARP.

Video anterior sem sensorIR.

Algumas fotos sem sensorIR.
URL=http://img718.imageshack.us/i/dsc00018r.jpg/][/URL]
Uploaded with ImageShack.us

Uploaded with ImageShack.us

Uploaded with ImageShack.us

Uploaded with ImageShack.us

Uploaded with ImageShack.us

Uploaded with ImageShack.us

Codigo do smalluino:
Código: [Seleccione]
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop()
{
 parado(4);
 frente(2);
 esquerda(6);
 tras(2);
 esquerda(6);
 direita(6);
}
void parado(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 0);
  analogWrite(motorDrt, 0);
  delay(500);
 }
}
void tras(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 150);
  delay(1500);
 }
}
void frente(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 150);
  analogWrite(motorDrt, 45);
  delay(2500);
 }
}
void esquerda(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 45);
  delay(500);
 }
}
void direita(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 150);
  analogWrite(motorDrt, 150);
  delay(500);
 }
}

Código para sensor IR:
Código: [Seleccione]
int sensorIrDPin = 0;
int sensorIrDValue = 0; // valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop()

{
 sensorIrDValue = analogRead(sensorIrDPin);
 delay(200);
 if(sensorIrDValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);
  }


 sensorIrDValue = analogRead(sensorIrDPin);
  delay(200);
  if(sensorIrDValue>=100){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
}

Isto foi o que fiz até agora de futuro vou tentar por 2 sensores SHARP em vez de 1 e talvez depois um sensor de linha.
Em principio este sábado irei fazer uma base  em acrílico para ter mais espaço, colocar um painel solar de 5V para quando estiver desligado ira estar a carregar a bateria e alterar a borracha dos pneus.

Final esta muito próximo:
hoje dia 6 de Maio coloquei os os paineis e a câmara, está tudo a correr ás mil maravilhas. Os paineis solares estão a carregar a bateria, a câmara já arranjei espaço para a câmara e sintonizei com uma tv de campismo a preto e branco.Só falta para terminar colocar outro sensor IR mas ainda não consegui alterar o código para 2 sensores IR. Algumas fotos:


Câmara de radio frequência


4 PAineis solares 3 da escola 1 de uma lâmpada de jardimdos chinocas que tem boa captação, estão ligados em serie e utilizei este esquema :

o codigo que eu fiz para detectar obstáculos com 2 sensores foi:
Código: [Seleccione]
// código by joao rexinho
int sensorIrDPin = 5;
int sensorIrEPin = 1;
int sensorIrDValue = 0;
int sensorIrEValue = 0;// valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop(){
   // Leitura dos valores
  sensorIrDValue = analogRead (sensorIrDPin);
  sensorIrEValue = analogRead (sensorIrEPin);
  delay(200);
  Serial.print(sensorIrDValue);
  Serial.println(sensorIrEValue);

 if(sensorIrDValue>200 && sensorIrEValue>200){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 150);
  }

else{
  if(sensorIrDValue>200 && sensorIrEValue<200){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue<200 && sensorIrEValue>200){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
else{
  if(sensorIrDValue<100 && sensorIrEValue<100){
   delay(200);
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);   
  }
}
}
}
}

Para perseguir objectos como por exemplo uma bola:
Código: [Seleccione]
//código by joao rexinho
int sensorIrDPin = 5;
int sensorIrEPin = 1;
int sensorIrDValue = 0;
int sensorIrEValue = 0;// valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop(){
   // Leitura dos valores
  sensorIrDValue = analogRead (sensorIrDPin);
  sensorIrEValue = analogRead (sensorIrEPin);
  delay(100);
  Serial.print(sensorIrDValue);
  Serial.println(sensorIrEValue);

 if(sensorIrDValue>=100 && sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue>=100 && sensorIrEValue<=100){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue<=100 && sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
else{
  if(sensorIrDValue<=300 && sensorIrEValue<=300){
   analogWrite(motorEsq, 0);
   analogWrite(motorDrt, 0); 
  }
}
}
}
}

Neste  momento o robô está parado porque uma servo queimou. Nas ferias irei colocar uns videos de ele a seguir a bola e outro de ele a desviar se dos obstáculos.


 
« Última modificação: 06 de Junho de 2010, 12:13 por joao rexinho »
http://sites.google.com/site/roboticaelectronica/home
Estudante de Engenharia Eletrônica e Telecomunicações em Aveiro

Offline andnobre

  • Mini Robot
  • *
  • Mensagens: 402
Re: smalluino e sensor IR
« Responder #1 em: 28 de Abril de 2010, 16:21 »
boas
tens ai um belo trabalho. Agora queria saber se calibraste ou nao os servos, se calibraste como fizeste.
muito obrigado

Offline joao rexinho

  • Mini Robot
  • *
  • Mensagens: 183
  • http://sites.google.com/site/roboticaelectronica/
Re: smalluino e sensor IR
« Responder #2 em: 29 de Abril de 2010, 01:25 »
Ola  calibrei, mas no inicio coloquei o código do smalluino base, os servos começaram a andar e não respondiam aos ciclos. Depois foi ao código e no
Código: [Seleccione]
analogWrite(motorEsq, 0);
analogWrite(motorDrt, 0);
nos dois servos, fiz upload do código para o arduino e reparei que ele parou. De seguida fui ao código e coloquei
Código: [Seleccione]
void tras(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 70);
  analogWrite(motorDrt, 127);
. Os servos ainda não seguirão os ciclos, peguei na chave e no potenciómetro rodei suavemente para a direita. Mas ainda não davam. Então fui ao codigo e voltei a a alterar o analogwrite
 
Código: [Seleccione]
void tras(int tempo){ // tempo = segundos/2
 for(int i = 0; i<tempo;i++){
  analogWrite(motorEsq, 45);
  analogWrite(motorDrt, 150);

Resumindo tens de brincar com os valores do analogwrite e com a chave de fendas roda pouco da posição central  se rodares de mais o sevo, só fica a rodar numa direcção.
http://sites.google.com/site/roboticaelectronica/home
Estudante de Engenharia Eletrônica e Telecomunicações em Aveiro

Offline joao rexinho

  • Mini Robot
  • *
  • Mensagens: 183
  • http://sites.google.com/site/roboticaelectronica/
Re: smalluino e sensor IR
« Responder #3 em: 01 de Maio de 2010, 16:15 »
ja montei para uma base nova mas há um problema o arduino só está a funcionar com a energia do pc, conectei varias baterias desde 4,8 V a 7,2V e não funciona. desconfio que tenha sido quando liguei os fios da bateria ao arduino tenha trocado.Mas ja a acertei os fios e não está a dar será que queimou alguma coisa??É que não tem nada a aquecer.
http://sites.google.com/site/roboticaelectronica/home
Estudante de Engenharia Eletrônica e Telecomunicações em Aveiro

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: smalluino e sensor IR
« Responder #4 em: 02 de Maio de 2010, 14:12 »
Estás de parabéns João ;)

Mete água na boca... tanto foi que acabei por ter que ir fazer uma base de robot depois de ter visto o teu post!

Offline joao rexinho

  • Mini Robot
  • *
  • Mensagens: 183
  • http://sites.google.com/site/roboticaelectronica/
Re: smalluino e sensor IR
« Responder #5 em: 04 de Maio de 2010, 00:08 »
Muito obrigado ;D, ja alterei a base para acrilico, agora está mais espaçoso. Estas fotos o arduino não esta a fazer nada porque quando ligo uma bateria ao arduino não reage, nem sequer acende a luz que indica POWER só quando ligo ao pc é que reage. Alguém podia me explicar o que esta acontecer? eu acho que foram os condensadores porque sem querer troquei os polos + por -, desconfio que isso  :(.Então encomendei outro arduino e com este fiz um código para comunicar pela porta com e o arduino, é mais uma funçao para o smalluino.

http://img85.imageshack.us/slideshow/webplayer.php?id=dsc00092g.jpg



Uploaded with ImageShack.us


Uploaded with ImageShack.us


Uploaded with ImageShack.us


Uploaded with ImageShack.us


Uploaded with ImageShack.us

Código: [Seleccione]
// Na consola devem colocar:

// p = parar
// w = frente
// s = trás
// d = direita
// a = esquerda

// E depois SEND

// Codigo by joao rexinho

int motorEsq = 11;
int motorDrt = 10;

void setup() {
  // inicialize serial communicaçao:
  Serial.begin(9600);

  }


void loop() {
  // read the sensor:
  if (Serial.available() > 0) {
    int inByte = Serial.read();

    switch (inByte) {
    case 'p':    // pausa
      analogWrite(motorEsq, 0);
      analogWrite(motorDrt, 0);
      break;
    case 'w':    // frente
      analogWrite(motorEsq, 150);
      analogWrite(motorDrt, 45);
      break;
    case 's':    // trás
      analogWrite(motorEsq, 45);
      analogWrite(motorDrt, 150);
      break;
    case 'd':    // direita
      analogWrite(motorEsq, 150);
      analogWrite(motorDrt, 150);
      break;
    case 'a':    // esquerda
      analogWrite(motorEsq, 45);
      analogWrite(motorDrt, 45);
      break;
      }
    }
  }

« Última modificação: 04 de Maio de 2010, 00:43 por joao rexinho »
http://sites.google.com/site/roboticaelectronica/home
Estudante de Engenharia Eletrônica e Telecomunicações em Aveiro

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: smalluino e sensor IR
« Responder #6 em: 04 de Maio de 2010, 13:07 »
Onde estás a ligar a alimentação? a pin Vin?

Experimenta com um regulador de 5V como o LM7805 fazer a estabilização da tensão cá fora e ligar a saida regulada ao pin 5V do arduino pois pode ser o regulador visto que ele por usb funciona bem. (não utiliza o regulador)

Offline fred gomes

  • Mini Robot
  • *
  • Mensagens: 238
Re: smalluino e sensor IR
« Responder #7 em: 04 de Maio de 2010, 13:21 »
vê se tens bateria..
já me conteceu isso ;D , deparei me com o mesmo problema que tu, e pensava que tinha estragado algo, e afinal não tinha bateria..
cumprimentos,
Fred

Offline joao rexinho

  • Mini Robot
  • *
  • Mensagens: 183
  • http://sites.google.com/site/roboticaelectronica/
Re: smalluino e sensor IR
« Responder #8 em: 05 de Maio de 2010, 00:14 »
Nas fotos não meti a bateria porque estava carregar, mas estou a utilizar a entrada de carregador. De momento não tenho nenhum regulador de tensão. O arduino novo chegou hoje. Na minha escola tinha alguns painéis solares, vou adaptar a bateria, arranjei uma câmara que funciona através de radio frequência. Amanha irei terminar.
http://sites.google.com/site/roboticaelectronica/home
Estudante de Engenharia Eletrônica e Telecomunicações em Aveiro

Offline joao rexinho

  • Mini Robot
  • *
  • Mensagens: 183
  • http://sites.google.com/site/roboticaelectronica/
Re: smalluino e sensor IR
« Responder #9 em: 06 de Maio de 2010, 01:20 »
actualizado, amanha irei fazer um video para mostrar tudo.
http://sites.google.com/site/roboticaelectronica/home
Estudante de Engenharia Eletrônica e Telecomunicações em Aveiro

Offline joao rexinho

  • Mini Robot
  • *
  • Mensagens: 183
  • http://sites.google.com/site/roboticaelectronica/
Re: smalluino e sensor IR
« Responder #10 em: 29 de Maio de 2010, 00:58 »
O projecto está quase concluído. Com este projecto quis saber fazer um smalluino e adaptar os sensores IR, dei o máximo de utilização desde dança, desviar dos obstáculos só com sensor SHARP, com dois sensores, controlar por SERIAL , perseguir robôs ou carros telecomandados e futebol robótico só não remata.Amanha irei fazer uma demonstração no estação Viana shopping, entre as 14 e as 18 horas. Irei aproveitar para filmar e tirar algumas fotos.

Códigos feitos 100% por mim  ::).
http://sites.google.com/site/roboticaelectronica/home
Estudante de Engenharia Eletrônica e Telecomunicações em Aveiro

Offline AcidDagger

  • Mini Robot
  • *
  • Mensagens: 364
  • Make Bits, Making robotics in Portugal
    • Make Bits
Re: smalluino e sensor IR
« Responder #11 em: 30 de Maio de 2010, 22:43 »

Código: [Seleccione]
// Na consola devem colocar:

// p = parar
// w = frente
// s = trás
// d = direita
// a = esquerda

// E depois SEND

// Codigo by joao rexinho

int motorEsq = 11;
int motorDrt = 10;

void setup() {
  // inicialize serial communicaçao:
  Serial.begin(9600);

  }


void loop() {
  // read the sensor:
  if (Serial.available() > 0) {
    int inByte = Serial.read();

    switch (inByte) {
    case 'p':    // pausa
      analogWrite(motorEsq, 0);
      analogWrite(motorDrt, 0);
      break;
    case 'w':    // frente
      analogWrite(motorEsq, 150);
      analogWrite(motorDrt, 45);
      break;
    case 's':    // trás
      analogWrite(motorEsq, 45);
      analogWrite(motorDrt, 150);
      break;
    case 'd':    // direita
      analogWrite(motorEsq, 150);
      analogWrite(motorDrt, 150);
      break;
    case 'a':    // esquerda
      analogWrite(motorEsq, 45);
      analogWrite(motorDrt, 45);
      break;
      }
    }
  }



Tens a certeza que isso funciona?


[/quote]

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: smalluino e sensor SHARP IR
« Responder #12 em: 30 de Maio de 2010, 23:22 »
Parece ser código funcional, mas pode não funcionar para ti por teres um esquema de ligações diferente
Avr fanboy

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: smalluino e sensor SHARP IR
« Responder #13 em: 31 de Maio de 2010, 09:21 »
boas

que tipo de camara é essa?

cump.
ze pedro

Offline joao rexinho

  • Mini Robot
  • *
  • Mensagens: 183
  • http://sites.google.com/site/roboticaelectronica/
Re: smalluino e sensor SHARP IR
« Responder #14 em: 06 de Junho de 2010, 12:13 »
Esse código não funciona a 100% porque as vezes fica parado e tem de ser fazer outravez o upload do código.

A camara que eu uso é:
Citar
1.2GHz Wireless Receiver + 208C Câmara

Receptor:
- 1 / 3 "CMOS
- Resolução Horizontal: 380 Linhas de TV
- Iluminação mínima: 1.5 Lux
- Built-in microfone

Máquina fotográfica:
- 1 / 3 "CMOS
- Resolução Horizontal: 380 Linhas de TV
- Iluminação mínima: 1 Lux
- Built-in microfone

Pacote Contém:
1 x sem fio da câmera
1 x receptor sem fio 1.2G
1 x antena receptora
1 x adaptador para câmara (Input: AC 220, 50Hz, 20VA Output;: DC 12V, 500 mA)
1 x adaptador para o receptor (Entrada: 230V ~ 50Hz Saída;: ~ 8V 200mA)
1 x A / V cabo de ligação

o codigo que eu fiz para detectar obstáculos com 2 sensores foi:
Código: [Seleccione]
// código by joao rexinho
int sensorIrDPin = 5;
int sensorIrEPin = 1;
int sensorIrDValue = 0;
int sensorIrEValue = 0;// valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop(){
   // Leitura dos valores
  sensorIrDValue = analogRead (sensorIrDPin);
  sensorIrEValue = analogRead (sensorIrEPin);
  delay(200);
  Serial.print(sensorIrDValue);
  Serial.println(sensorIrEValue);

 if(sensorIrDValue>200 && sensorIrEValue>200){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 150);
  }

else{
  if(sensorIrDValue>200 && sensorIrEValue<200){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue<200 && sensorIrEValue>200){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
else{
  if(sensorIrDValue<100 && sensorIrEValue<100){
   delay(200);
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);   
  }
}
}
}
}

Para perseguir objectos como por exemplo uma bola:
Código: [Seleccione]
//código by joao rexinho
int sensorIrDPin = 5;
int sensorIrEPin = 1;
int sensorIrDValue = 0;
int sensorIrEValue = 0;// valor leído del pot
int motorEsq = 11;
int motorDrt = 10
;
void setup()
{
   // inicializa comunicación serial a 9600 bps:
 Serial.begin(9600);
 pinMode(motorEsq, OUTPUT);
 pinMode(motorDrt, OUTPUT);
}
void loop(){
   // Leitura dos valores
  sensorIrDValue = analogRead (sensorIrDPin);
  sensorIrEValue = analogRead (sensorIrEPin);
  delay(100);
  Serial.print(sensorIrDValue);
  Serial.println(sensorIrEValue);

 if(sensorIrDValue>=100 && sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue>=100 && sensorIrEValue<=100){
   analogWrite(motorEsq, 45);
   analogWrite(motorDrt, 45);
  }
else{
  if(sensorIrDValue<=100 && sensorIrEValue>=100){
   analogWrite(motorEsq, 150);
   analogWrite(motorDrt, 150);
  }
else{
  if(sensorIrDValue<=300 && sensorIrEValue<=300){
   analogWrite(motorEsq, 0);
   analogWrite(motorDrt, 0); 
  }
}
}
}
}

Neste  momento o robô está parado porque uma servo queimou. Nas ferias irei colocar uns videos de ele a seguir a bola e outro de ele a desviar se dos obstáculos.
http://sites.google.com/site/roboticaelectronica/home
Estudante de Engenharia Eletrônica e Telecomunicações em Aveiro